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