机器学习(Coursera吴恩达)(七)
标签(空格分隔): 机器学习 降维 PCA
降维(Dimensionality Reduction)
第一个问题,数据压缩
第二种无监督学习问题,称为降维。
比如我们有两个特征量:x1长度(cm),x2(英寸)。
两种仪器对同一个东西测量结果不完全相等,而将两个都作为特征有些重复,因而我们希望将这个二维的数据降维至一维。
x原本是二维的,然后降成一维的z。
同理也可以将1000维降维100维。
第二个问题,数据可视化
高维数据无法作为可视化,只有一维二维三维我们可视。。。
主成分分析PCA
pca中我们要做的是找到一个方向向量,当我们吧所有的数据都投射到该向量上时,投射平均均方误差能尽可能地小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量做垂线的长度。
PCA问题描述:
是要将n维数据降维k维,目标是找到向量
u(1),u(2),u(3),...,u(k)
u
(
1
)
,
u
(
2
)
,
u
(
3
)
,
.
.
.
,
u
(
k
)
PCA与线性回归的区别:一个是到向量距离最小,一个是(h(x),y)误差最小。
- 图像领域KL变换使用PCA做图像压缩。
- 一个很大的优点是,完全无参数限制的。最后结果只与数据相关,与用户无关。
算法
- 均值归一化:我们需要计算出所有特征的均值,然后另 xj=xj−uj x j = x j − u j 。如果特征是在不同的数量及上,还需要除以标准差 δ2 δ 2 .
- 计算协方差矩阵(Convariance matrix) Σ Σ : Σ=1m∑ni=1(x(i))(x(i))T Σ = 1 m ∑ i = 1 n ( x ( i ) ) ( x ( i ) ) T
- 计算协方差矩阵的特征向量(eigenvectors)
求特征向量,可以用奇异值分解。
对于一个n*n的矩阵,我们希望降到k维,只要从U
中选取前k个向量,获得一个n*k的矩阵,我们用
Ureduce
U
r
e
d
u
c
e
表示,然后通过计算得到新特征限量
z(i)=UTreduce∗x(i)
z
(
i
)
=
U
r
e
d
u
c
e
T
∗
x
(
i
)
。因为x是n*1维的,所以结果为k*1维。
重建压缩表示
因为是一个压缩算法,所以需要可以恢复到原始数据。
xapprox=Ureducez, xapprox≈x x a p p r o x = U r e d u c e z , x a p p r o x ≈ x
数量的选择-K
训练集的方差 1m∑mi=1||x(i)||2 1 m ∑ i = 1 m | | x ( i ) | | 2
可以用特征值计算平均均方误差与训练集方差的比例:
这样就可以得到应有的K值。
注意
主成分分析,压缩特征的一种方法,所以对train-set计算得到
Ureduce
U
r
e
d
u
c
e
之后,就不再参与学习过程。但是在使用test-set或cv-set,或预测的新样本的时候,只需要使用
Ureduce
U
r
e
d
u
c
e
变换特征,并且将得到的结果重建出来。
注意的是这并不是在学习中反复迭代部分的内容。而且一种数据预处理。
**Pca不能用于去除过拟合,只是可以提高算法速度。过拟合还是需要正则化去除。