吴恩达机器学习—降维(11)

你离开我真会死。 提交于 2019-11-29 08:17:10

1. 概述

希望有足够多的特征(知识)来保准学习模型的训练效果,但高维的特征也有几个如下不好的地方:

  • 学习性能下降,知识越多,吸收知识(输入),并且精通知识(学习)的速度就越慢;
  • 过多的特征难于分辨,很难第一时间认识某个特征代表的意义
  • 特征冗余

特征降维的一般手段就是将高维特征投影到低维空间。
降维的作用:数据压缩和数据可视化。

例子:2D---->1D 在这里插入图片描述3D------>2D
在这里插入图片描述

2. PCA(主成分分析)

PCA,Principle Component Analysis,即主成分分析法,是特征降维的最常用手段。
PCA 能从冗余特征中提取主要成分,在不太损失模型质量的情况下,提升模型训练速度。
PCA 使得各个特征的投影误差足够小,尽可能的保留原特征具有的信息。

(1)PCA算法流程

需求:将特征维度从 n 维降到 k 维
执行流程:
1)特征标准化,平衡各个特征尺度:
xj(i)=xj(i)μjsj,μjjsjjx^{(i)}_j=\frac{x^{(i)}_j−μ_j}{s_j},μ_j 为特征 j 的均值,s_j 为特征 j 的标准差。
2)计算协方差矩阵 Σ :
Σ=1mi=1m(x(i))(x(i))T=1mXTXΣ=\frac{1}{m}\sum_{i=1}^m(x^{(i)})(x^{(i)})^T=\frac{1}{m}⋅X^TX
3)通过奇异值分解(SVD),求取 Σ 的特征向量(eigenvectors):
(U,S,VT)=SVD(Σ)(U,S,V^T)=SVD(Σ)
4)从 UU 中取出前 kk 个左奇异向量,构成一个约减矩阵 UreduceU_{reduce} :
Ureduce=(u(1),u(2),,u(k))U_{reduce}=(u_{(1)},u_{(2)},⋯,u_{(k)})
5)计算新的特征向量: z(i)=UreduceTx(i)z^{(i)}=U^T_{reduce}⋅x^{(i)}

(2)特征还原

因为PCA仅保留了特征的主成分,所以PCA是一种有损的压缩方式,假定我们获得新特征向量为:z=UreduceTxz=U^T_{reduce}x那么,还原后的特征 xapproxx_{approx} 为:xapprox=Ureducezx_{approx}=U_{reducez}

(3)降到多少维才合适?

如果降维不多,则性能提升不大;如果目标维度太小,则又丢失了许多信息。通常,使用如下的流程的来评估 k 值选取优异:
1)求各样本的投影均方误差:min1mj=1mx(i)xapprox(i)2min \frac{1}{m}\sum_{j=1}^m||x^{(i)}−x^{(i)}_{approx}||^2
2)求数据的总变差:1mj=1mx(i)2 \frac{1}{m}\sum_{j=1}^m||x^{(i)}||^2
3)评估下式是否成立:min1mj=1mx(i)xapprox(i)21mj=1mx(i)2ε\frac{min \frac{1}{m}\sum_{j=1}^m||x^{(i)}−x^{(i)}_{approx}||^2}{\frac{1}{m}\sum_{j=1}^m||x^{(i)}||^2}≤\varepsilon
其中,ε\varepsilon的取值可以为 0.01,0.05,0.10,⋯0.01,0.05,0.10,⋯ ,假设ε\varepsilon=0.01 ,我们就说“特征间 99% 的差异性得到保留”。

3. PCA的应用建议

1)不要提前优化

由于 PCA 减小了特征维度,因而也有可能带来过拟合的问题。PCA 不是必须的,在机器学习中,一定谨记不要提前优化,只有当算法运行效率不尽如如人意时,再考虑使用 PCA或者其他特征降维手段来提升训练速度。

2)降维不只是加速学习

降低特征维度不只能加速模型的训练速度,还能在低维空间分析数据,进行可视化分析。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!