在我们用机器学习去训练数据集的时候,可能会遇到上千甚至上万个特征,随着数据量的增大,所分析出结果的准确度虽然会提高很多,但同时处理起来也会变得十分棘手,此时我们不得不想出一种方法去减少特征将高维的数据转化为低维的数据(降维)。
什么是降维?
简单的说降维就是把一个n维的数据转化为一个k维的数据(k<<n)
为什么要降维?
随着数据维度不断降低,数据存储所需的空间也会随之减少。
低维数据有助于减少计算/训练用时。
一些算法在高维度数据上喜欢表现不佳,降维可提高算法可用性。
降维可以用删除冗余特征解决多重共线性问题。
降维有助于数据可视化。如果数据维度很高,可视化会变得相当困难,而绘制二维三维数据的图表就哼简单。
常见的降维学习方法
缺失值比率
低方差滤波
高相关滤波
随机森林
前项特征选择
反向特征消除
因子分析
PCA(主成分分析)
ICA(独立分量分析)
IOSMAP
t-SNE
UMAP
降维技术详解
1.缺失值比率(Missing Value Ratio)
在浏览数据的时候,如果我们发现其中包含不少缺失值,如果缺失值少,我们可以填补缺失值或者直接删除这个变量;当缺失值在数据集中的占比过高时,一般我会选择直接删除这个变量,因为它包含的信息太少了。具体删不删,怎么删需要视情况而定,我们可以设置一个阈值,如果缺失值占比高于阈值,删除它所在的列。阈值越高。降维方法越积极。
2.低方差滤波(Low Variance Filter)
如果一个数据集中,某一列的数值基本一致,也就是它的方差非常低,我们通常认为,低方差变量携带的信息也很少,所以可以把它直接删除,放到实践中,就是计算所有变量方差大小,然后删去其中最小的几个。
注意:方差与数据范围相关的,因此在采用该方法前需要对数据做归一化处理。
3.高相关滤波(High Correlation filter)
如果两个变量之间是高度相关的,这意味着他们具有相似的趋势并且可能携带类似的信息,同理,这类变量的存在会降低某些模型的性能(例如线性和逻辑回归模型)。为了解决此类问题,我们可以计算独立变量之间的相关性。如果相关系数超过某个阈值,就删除其中的一个变量。
4.随机森林(Random Forest)
RF是一种基于Bagging的集成学习方法,可以用来分来,在降维中我们可以用它进行特征选择
随机森林是一种广泛使用的特征选择算法,它会自动计算各个特征的重要性,所以无需单独编程。这有助于我们选择较小的特征子集。
随机森林的优点:
1、具有极高的准确率
2、随机性的引入,使得随机森林不容易过拟合
3、随机性的引入,使得随机森林有很好的抗噪声能力(能够更好的处理离群点)
4、能处理很高维度的数据,并且不用做特征选择
5、既能处理离散型数据,也能处理连续性数据,数据集无需规范化
6、训练速度快,可以得到变量重要性排序
7、容易实现并行化
随机森林的缺点:
1、当随机森林中的决策树个数很多时,训练需要的空间和时间会很大
2、随机森林的解释性很差
5.反向特征消除(Backward Feature Elimination)
主要步骤:
先获取数据集中的全部N个变量,然后用他们训练一个模型
计算模型的性能
在删除每个变量(n次)后计算模型的性能,即我们每次都去掉一个变量,用剩余的N-1个变量训练模型
确定对模型影响性最小的变量,把它删除
重复此过程直到不可以删除任何的变量
6.前向特征选择(Forward Feature Selection)
即为上述过程的一个逆过程
主要步骤:
选择一个特征,用每个特征训练模型N次,得到N个模型
选择模型性能最佳的变量作为初始变量
每次添加一个变量继续训练,重复上一过程,最后保留性能提升最大的变量
一直添加一直筛选,知道模型能不再有明显提高
注:前向特征选择和反向特征消除耗时较久,计算成本也都很高,所以只适用于输入变量较少的数据集。
7.因子分析(Factor Analysis)
因子分析是一个常见的统计方法,它能从多个变量中提取共性因子,并得到最优解。假设我们有两个变量:收入和教育。他们可能是高度相关的,因为从总体看来,学历很高的人一般收入也很高,所以他们之间可能存在一个潜在的共性因子,比如‘能力’。
在因子分析中,我们将变量按其相关性分组,即特定组内所有变量的相关性较高,组间变量的相关性较低。我们把每个组称为一个因子,它是多个变量的组合。和原始数据集的变量相比,这些因子在数量上更少,但携带的信息基本一致。
8.主成分分析(PCA)
PCA是一种很常用的降维方法,他可以通过对高维数据进行降维减少预测变量的个数,同时经过降维除去噪声,其中最直接的应用就是压缩数据,主要应用于:信号处理中的降噪,数据降维后可视化等。
数据特点:
1.维度灾难,简单来说就是变量的个数多,如果变量的个数增加,随之需要估计的参数的个数也在增加,在训练集保持不变得情况下待估参数的方差也会随机增加,导致参数估计的质量下降。
2.变量关系不一般,是指变量彼此之间常常存在一定程度的,有时甚至是相当高的相关性,这说明数据是有冗余的,或者说观测数据中的信息是有重叠的,这是我们利用PCA的前提条件。
在变量个数多,相互的相关性比较大的时候,我们会去寻找变量中的‘精华’,寻找个数相对较少的综合变量。
引用一个别人的例子:比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余。
关于PCA的一些要点:
主成分是原始变量的线性组合
第一个主成分具有最大的方差值
第二主成分试图解释数据集中的剩余方差,并且与第一主成分不相关(正交)
第三主成分试图解释前两个主成分没有解释的方差
9.独立分量分析(ICA)
独立分量分析基于信息理论,是最广泛的降维技术之一。PCA和ICA的主要却别在于,PCA寻找不相关因素,而ICA寻找独立因素。
如果两个变量不相关,他们之间就没有线性关系。如果他们是独立的,他们就不依赖于其他变量。
其余的降维方法还有:IOSMAP,t-SNE,UMAP等,由于可查的资料较少这里不一一介绍。
比较:
缺失值比率:如果数据集的缺失值太多,我们可以用这种方法减少变量数。
低方差滤波:该方法可以从数据集中识别和删除常量变量,方差小的变量对目标变量影响不大,所以可以放心删去。
高相关滤波:具有高相关性的一对变量会增加数据集中的多重共线性,所以用这种方法删去其中一个是有必要的。
随机森林:最常用的降维方法之一,他会明确算出数据集中每个特征的重要性。
前向特征选择和反向特征消除:这两种方法耗时很久,计算成本很高,所以只适用于变量较少的数据集。
因子分析:适用于数据集中存在高度相关的变量集的情况。
PCA:处理线性数据集最广泛使用的技术之一。
ICA:可以用ICA将数据转换为独立的分量,使用更少的分量来描述数据。