特征降维
当特征选择完成后, 可能由于特征矩阵过大, 导致计算量大, 训练时间长的问题, 因此降低特征矩阵维度也是必不可少的. 常见的降维方法有主成分分析法 (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)
来源: http://www.jianshu.com/p/d8f7969f6163