从特征中去掉冗余的部分
2D->1D:线性相关的两个特征变量可以投影到它们的拟合直线上
3D->2D:3维的点可以投影到一个平面上
主成分分析法PCA
寻找一个向量对所有样本点进行投影,获得最小的投影误差。
一般问题:N维数据降到K维,需要K个投影向量
PCA和线性回归的区别:PCA要求样本点到向量的投影的长度最短,是距离的平方最小,而现行回归是函数值的差的平方最小
步骤
- 均值标准化
μj=1m∑i=1mx(i)j
x(i)j=x(i)j−μj
- 特征缩放
- 计算协方差矩阵
σ=1m∑i=1m(x(i))(x(i))T
- 奇异值分解
[U,S,V]=svd(σ)
- 取出U的前K列
-
Z=[u(1),u(2),...,u(K)]T⋅X
Z是k维的数据,
∵(n,k)T∗(n,1)=(k,n)∗(n,1)=(k,1)
如何选取K
平均预测方差
1m∑i=1m||x(i)−x(i)approx||2
数据总方差
1m∑i=1m||x(i)||2
一般来说,选择在满足下列条件的情况下最小
1m∑mi=1||x(i)−x(i)approx||21m∑mi=1||x(i)||2≤0.01
“99%的误差被保留了”
让k=1,然后逐渐增大k,每次计算这个比值,直到满足条件为止
但是这样的算法比较麻烦,
[U,S,V]=svd(σ)
中的S是n*n对角阵,上述比值可以用下式计算
扫描二维码关注公众号,回复:
2712458 查看本文章
1−∑ki=1Sii∑ni=1Sii
只需计算一次SVD,改变K的值即可判断误差保留比值
数据重新恢复到高维
Z的维度
(n,k)T∗(n,1)=(k,n)∗(n,1)=(k,1)
X′=Ureduce∗Z
维度
(n,k)(n,k)T(n,1)=(n,k)(k,n)(n,1)=(n,1)
应用PCA的一些建议
1. 首先取出所有输入数据
2. 将输入数据降维
3. 使用低维数据进行学习
4. 对于测试来说,把数据映射到低维空间(使用
Ureduce
)
不建议使用PCA防止过拟合,建议使用PCA来加速训练,用正则化防止过拟合,首先应该考虑不使用PCA的情况