机器学习中降维能够消除冗余,防止过拟合;发现潜在特征;减小计算量,节省资源和时间,常用的降维方法有:PCA ,ICA,SOM,MDS, ISOMAP,LLE,本文着重介绍PCA(主成分分析法)。
实现步骤
1.去除类别特征(无监督降维)
2.计算各列均值
3.计算协方差矩阵
4.计算特征值和特征向量
5.按照特征值对其作降序排列
6.将样本数据变换为新的子空间
注意
1.PCA主要实现降维,其对过拟合的作用可能没那么大(无监督降维)
2.不能将训练集和验证集合并起来进行主成分分析,应在训练集计算出主成分后,对验证集进行特征选择。
优点
1.仅以方差衡量信息量,不依赖于其他数据。
2.各主成分之间相互正交化,能够消除彼此之间相互影响的因素。
3.计算以特征分解为主,计算量较小。
缺点
1.主成分含义具有一定的模糊性,不如原始样本解释强
2.方差小的成分也可能包含很重要的信息
(缺点2解释:打个比方,一个鲜有学生违纪情况的班级要评选三好学生,指标有违纪次数和考试成绩。因为班级鲜有违纪情况,所以违纪次数指标的方差很小。但违纪的同学会在评优时因违纪被一票否决,所以违纪次数虽然方差小但却包含着重要的信息,对评选起着至关重要的作用。
PCA对象的方法
代码
pca = PCA(n_components = 10) # 选取前10个主成分
x_train = pca.fit_transform(x_train) # 变化特征值
print("explained variance ratio: %s" % pca.explained_variance_ratio_) # 输出前10个主成分的各自贡献率
print('pca:accumulated rate:') # 输出前10个主成分的累计贡献率
print(sum(pca.explained_variance_ratio_))