社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【机器学习】降维和特征选择的对比介绍

机器学习初学者 • 1 年前 • 340 次点击  

在machine learning中,特征降维和特征选择是两个常见的概念,在应用machine learning来解决问题的论文中经常会出现。特征降维和特征选择的目的都是使数据的维数降低,使数据维度降小。但实际上两者的区别是很大,他们的本质是完全不同的。

降维?

降低数据集中特征的维数,同时保持尽可能多的信息的技术被称为降维。它是机器学习和数据挖掘中常用的技术,可以最大限度地降低数据复杂性并提高模型性能。

降维可以通过多种方式实现,包括:

主成分分析 (PCA):PCA 是一种统计方法,可识别一组不相关的变量,将原始变量进行线性组合,称为主成分。

第一个主成分解释了数据中最大的方差,然后每个后续成分解释主键变少。PCA 经常用作机器学习算法的数据预处理步骤,因为它有助于降低数据复杂性并提高模型性能。

LDA(线性判别分析):LDA是一种用于分类工作的统计工具。它的工作原理是确定数据属性的线性组合,最大限度地分离不同类别。为了提高模型性能,LDA经常与其他分类技术(如逻辑回归或支持向量机)结合使用。

t-SNE: t-分布随机邻居嵌入(t-SNE)是一种非线性降维方法,特别适用于显示高维数据集。它保留数据的局部结构来,也就是说在原始空间中靠近的点在低维空间中也会靠近。t-SNE经常用于数据可视化,因为它可以帮助识别数据中的模式和关系。

独立分量分析(Independent Component Analysis) ICA实际上也是对数据在原有特征空间中做的一个线性变换。相对于PCA这种降秩操作,ICA并不是通过在不同方向上方差的大小,即数据在该方向上的分散程度来判断那些是主要成分,那些是不需要到特征。而ICA并没有设定一个所谓主要成分和次要成分的概念,ICA认为所有的成分同等重要,而我们的目标并非将重要特征提取出来,而是找到一个线性变换,使得变换后的结果具有最强的独立性。PCA中的不相关太弱,我们希望数据的各阶统计量都能利用,即我们利用大于2的统计量来表征。而ICA并不要求特征是正交的。如下图所示:

还有许多其他技术可以用于降维,包括多维缩放、自编码器等。技术的选择将取决于数据的具体特征和分析的目标。

特征选择?

在数据集中选择一个特征子集(也称为预测因子或自变量)用于机器学习模型的过程被称为特征选择。特征选择的目的是发现对预测目标变量(也称为响应变量或因变量)最相关和最重要的特征。

使用特征选择有很多优点:

  • 改进的模型可解释性:通过降低模型中的特征量,可以更容易地掌握和解释变量和模型预测之间的关系。

  • 降低过拟合的危险:当一个模型包含太多特征时,它更有可能过拟合,这意味着它在训练数据上表现良好,但在新的未知数据上表现不佳。通过选择最相关特征的子集,可以帮助限制过拟合的风险。

  • 改进模型性能:通过从模型中删除不相关或多余的特征,可以提高模型的性能和准确性。

有许多可用的特征选择方法:

  • 过滤方法:这些方法基于相关或相互信息等统计测量来选择特征。

  • 包装器方法:这些方法利用机器学习算法来评估各种特征子集的性能,并选择最佳的一个。

  • 嵌入方法:这些方法将特征选择作为机器学习算法训练过程的一部分。

所使用的特征选择方法将由数据的质量和研究的目标决定。为了为模型选择最优的特征子集,通常是尝试各种方法并比较结果。

降维与特征选择的区别

特征选择从数据集中选择最重要特征的子集,特征选择不会改变原始特征的含义和数值,只是对原始特征进行筛选。而降维将数据转换为低维空间,会改变原始特征中特征的含义和数值,可以理解为低维的特征映射。这两种策略都可以用来提高机器学习模型的性能和可解释性,但它们的运作方式是截然不同的。


作者:Ankit Sanjyal

转:Deephub Imba

往期精彩回顾




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/161706
 
340 次点击