特征降维
当特征选择完成后,可能由于特征矩阵过大,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。常见的降维方法有主成分分析法(PCA)和线性判别分析(LDA)。PCA和LDA的区别是:PCA是为了让降维后的样本具有最大的发散性;而LDA是为了让降维后的样本有最好的分类性能力。
主成分分析法(PCA)
PCA计算步骤
- 对数据进行归一化处理(代码中并非这么做的,而是直接减去均值)
- 计算归一化后的数据集的协方差矩阵
- 计算协方差矩阵的特征值和特征向量
- 保留最重要的k个特征(通常k<n),可以自己制定,也可以选择个阈值,然后通过前k个特征值之和减去后面n-k个特征值之和大于这个阈值,找到这个k
- 找出k个特征值对应的特征向量
- 将m ∗∗ n的数据集乘以k个n维的特征向量的特征向量(n ∗∗ k),得到最后降维的数据。
sklearn代码
不要担心PCA计算方法,sklearn已经将上述步骤封装好了,代码如下:
from sklearn.decomposition import PCA
#参数n_components为主成分数目,即上诉的k
#X 特征矩阵
PCA(n_components=12).fit_transform(X)
线性判别分析(LDA)
LDA概述
LDA的原理是,将带上标签的数据(点),通过投影的方法,投影到维度更低的空间中,使得投影后的点,会形成按类别区分,一簇一簇的情况,相同类别的点,将会在投影后的空间中更接近
sklearn代码
同样不要担心LDA计算方法,sklearn已经将上述步骤封装好了,代码如下:
from sklearn.lda import LDA
#参数n_components为降维后的维数
#X 特征矩阵, Y标签矩阵
LDA(n_components=12).fit_transform(X, Y)