作者的课堂笔记humminwang@163.com
Preview
- K-means 聚类
- 主成分分析(Principal Component Analysis)
无监督学习
和有监督学习类似,但是数据没有标签。给定输入数据,发现简化的特征,同时和输入的特征拥有同样的信息量。
一般来说,好的表示一般是低维度的,或者是稀疏表示的,也就是说大部分是0,又或者是独立的表示。
1 K-means 聚类问题
输入数据{x(1).....x(m)},x(i)∈Rd\{x^{(1)}.....x^{(m)}\},x^{(i)}\in R^d{x(1).....x(m)},x(i)∈Rd,K-means聚类将输入数据分成k类,k≤nk≤nk≤n来最小化每个类别内的平方和(WCSS).
argminC∑j=1k∑x∈Cj∣∣x−μj∣∣2
argmin_C\sum_{j=1}^k\sum_{x\in C_j}||x-\mu_j||^2
argminCj=1∑kx∈Cj∑∣∣x−μj∣∣2
等价问题:
- 最小化每个类内的方差∑j=1k∣Cj∣Var(Cj)\sum_{j=1}^k|C_j|Var(C_j)∑j=1k∣Cj∣Var(Cj).
- 最小化点之间的成对平方偏差在同一集群中:∑i=1k12∣Ci∣∑x,x‘∈Ci∣∣x−x‘∣∣2\sum_{i=1}^k\frac{1}{2|C_i|}\sum_{x,x`\in C_i}||x-x`||^2∑i=1k2∣Ci∣1∑x,x‘∈Ci∣∣x−x‘∣∣2
- 最大化类与类之间的距离(BCSS).
1.1 K-means聚类算法
- 优化K-means聚类是一个NP-hard问题,在欧式空间中。
- 通常通过启发式,迭代算法。
Lloyd’s 算法
1.2 K-means聚类讨论
- K-means学习k维的稀疏表示,比如x使用one-hot编码,z∈Rkz\in R^kz∈Rk.
zj(i)=1ifc(i)=j,otherwise0 z_j^{(i)}=1 \quad if \quad c^{(i)}=j,otherwise \quad0 zj(i)=1ifc(i)=j,otherwise0
算法收敛于局部最优解,所以初始值的选择很重要! - 怎样初始化μ\muμ?均匀随机抽样(K-means++),或者基于距离的采样。
- 怎么选择K?交叉验证或者G-means。
2 PCA(Principal Component Analysis)
消除特征之间的相关性,同时减少噪音。
给出{x(1),...,x(m)},x(i)∈Rn\{x^{(1)},...,x^{(m)}\},x^{(i)}\in R^n{x(1),...,x(m)},x(i)∈Rn.
- 发现一个线性的正交变换W:Rn−RkR^n-R^kRn−Rk针对输入数据。
- W 是将最大方差的方向和新坐标轴的方向对齐。
正则化x,以便让mean(x)=0,Stdev(xj)=1mean(x)=0,Stdev(x_j)=1mean(x)=0,Stdev(xj)=1 - x(i):=x(i)−Mean(x)x^{(i)}:=x^{(i)}-Mean(x)x(i):=x(i)−Mean(x)
- xj(i):=xj(i)/Stdev(xj)x^{(i)}_j:=x^{(i)}_j/Stdev(x_j)xj(i):=xj(i)/Stdev(xj)
2.1 PCA表示学习
PCA 目标:
- 发现主要的组成u1,.....,unu_1,.....,u_nu1,.....,un他们相互正交,也就是不相关。
- xxx的大部分变化将由k<<nk<<nk<<n的kkk个主成分来解释。
PCA 的主要操作:
- 发现xxx的投影,u1Txu_1^Txu1Tx覆盖最大的方差。
- 对j=1,2,....,nj=1,2,....,nj=1,2,....,n同样上述操作,找出互相正交的u1,.....,uju_1,.....,u_ju1,.....,uj个方向。
2.2 寻找主成分
投影的方差:
1m∑i=1m(x(i)Tu)2=1m∑i=1muTx(i)x(i)Tu=uT(1m∑i=1mx(i)x(i)T)u=uTΣu\frac{1}{m}\sum_{i=1}^m(x^{(i)^T}u)^2=\frac{1}{m}\sum_{i=1}^mu^Tx^{(i)}x^{(i)^T}u=u^T(\frac{1}{m}\sum_{i=1}^m x^{(i)}x^{(i)^T})u=u^T\Sigma um1∑i=1m(x(i)Tu)2=m1∑i=1muTx(i)x(i)Tu=uT(m1∑i=1mx(i)x(i)T)u=uTΣu
Σ:\Sigma:Σ:是样本的协方差矩阵。
2.3 第一主要成分
发现一个u1u_1u1最大化投影方差:
u1=argmaxu:∣∣u∣∣=1uTΣu
u_1=argmax_{u:||u||=1}u^T\Sigma u
u1=argmaxu:∣∣u∣∣=1uTΣu
u1u_1u1被称为xxx的第一主成分。同时u1u_1u1是协方差矩阵的最大特征向量。
证明:u1u_1u1是协方差矩阵的最大特征向量。
使用拉格朗日函数:
L(u)=−uTΣu+β(uTu−1)
L(u)=-u^T\Sigma u+\beta(u^Tu-1)
L(u)=−uTΣu+β(uTu−1)
最小化L(u)L(u)L(u).
∂L∂u=−2Σu+2βu=0
\frac{\partial L}{\partial u}=-2\Sigma u+2\beta u=0
∂u∂L=−2Σu+2βu=0
所以Σu=βu\Sigma u=\beta uΣu=βu,因此u1u_1u1是Σ\SigmaΣ的特征向量。u=vju=v_ju=vj,是第jjj大的特征值对应的特征向量。
uTΣu=vjTΣvj=λjvjTvj=λj
u^T\Sigma u=v_j^T\Sigma v_j=\lambda_jv_j^Tv_j=\lambda_j
uTΣu=vjTΣvj=λjvjTvj=λj
因此u1=v1u_1=v_1u1=v1特征向量对应最大的特征值。
证明:第j个主成分,uju_juj是第j大的协方差矩阵的特征向量。
j=2
u2=argmax∣∣u∣∣=1,u1Tu=0uTΣu
u_2=argmax_{||u||=1,u_1^Tu=0}u^T\Sigma u
u2=argmax∣∣u∣∣=1,u1Tu=0uTΣu
拉格朗日函数:
L(u)=−uTΣu+β1(uTu−1)+β2(u1Tu)
L(u)=-u^T\Sigma u+\beta_1(u^Tu-1)+\beta_2(u_1^Tu)
L(u)=−uTΣu+β1(uTu−1)+β2(u1Tu)
最小化L(u):L(u):L(u):
β2=0,Σu=β1u
\beta_2=0, \Sigma u=\beta_1u
β2=0,Σu=β1u
最大化uTΣu=λ,u2u^T\Sigma u=\lambda,u_2uTΣu=λ,u2必须是第二大特征值对应的特征向量β1=λ2\beta_1=\lambda_2β1=λ2.
2.4 PCA性质
- 主成分投影的方差是:Var(xTuj)=ujTΣuj=λjVar(x^Tu_j)=u_j^T\Sigma u_j=\lambda_jVar(xTuj)=ujTΣuj=λj,j=1,2…n
- % 由第j主成分解释的方差可以被表示成λj∑i=1nλi\frac{\lambda_j}{\sum_{i=1}^n\lambda_i}∑i=1nλiλj
- 同样可通过前K主成分解释∑j=1kλj∑j=1nλj\frac{\sum_{j=1}^k\lambda_j}{\sum_{j=1}^n\lambda_j}∑j=1nλj∑j=1kλj
2.5 PCA 投影
样本在主成分空间的投影:
z(i)=[x(i)Tu1....x(i)Tun]∈Rn
z^{(i)}=\begin{bmatrix}x^{(i)^T}u_1\\....\\x^{(i)^T}u_n\end{bmatrix}\in R^n
z(i)=⎣⎡x(i)Tu1....x(i)Tun⎦⎤∈Rn
矩阵表示:
z(i)=[............u1....un............]Tx(i)=WTx(i),orZ=XW
z^{(i)}=\begin{bmatrix}....&....&....\\u_1&....&u_n\\....&....&....\end{bmatrix}^Tx^{(i)}=W^Tx^{(i)},or \quad Z=XW
z(i)=⎣⎡....u1....................un....⎦⎤Tx(i)=WTx(i),orZ=XW
仅用前K个主成分用来降维。
2.5 PCA理解
PCA移除了输入数据的冗余。
Z=XWZ=XWZ=XW为PCA的投影数据。
cov(Z)=1nZTZ=1n(XW)T(XW)=WT(1nXTX)W=WTΣW
cov(Z)=\frac{1}{n}Z^TZ=\frac{1}{n}(XW)^T(XW)=W^T(\frac{1}{n}X^TX)W=W^T\Sigma W
cov(Z)=n1ZTZ=n1(XW)T(XW)=WT(n1XTX)W=WTΣW
因为Σ\SigmaΣ是对称的,有特征值,特征分解为:
Σ=WΛWT
\Sigma =W\Lambda W^T
Σ=WΛWT
W=[............u1....un............],Λ=[λ1............................λn]
W=\begin{bmatrix}....&....&....\\u_1&....&u_n\\....&....&....\end{bmatrix},\Lambda=\begin{bmatrix}\lambda_1&....&....\\....&....&....\\....&....&\lambda_n\end{bmatrix}
W=⎣⎡....u1....................un....⎦⎤,Λ=⎣⎡λ1............................λn⎦⎤
cov(Z)=WT(WΛWT)W=Λ
cov(Z)=W^T(W\Lambda W^T)W=\Lambda
cov(Z)=WT(WΛWT)W=Λ
主成分变换XWXWXW对角化XXX的样本协方差矩阵。
2.6 PCA例子
鸢尾花数据
人脸特征
2.7 PCA 的缺点
- 只考虑了数据特征之间的线性关系
- 假设数据是真实并且连续的
- 假设输入空间的近似正态性(但在实践中,对于非正态分布的数据仍然可以很好)
非正态分布输入:
2.7 PCA核心
利用PCA特征提取。
线性的PCA假设数据在RnR^nRn是可分的.
非线性推广:
- 将数据投影到更高维度使用特征映射。Rn→Rd(d≥n)R^n \rightarrow R^d(d≥n)Rn→Rd(d≥n)
- 特征映射通过定义核函数K(x(i),x(j))=ϕ(x(i))Tϕ(x(j))K(x^{(i)},x^{(j)})=\phi(x^{(i)})^T\phi(x^{(j)})K(x(i),x(j))=ϕ(x(i))Tϕ(x(j))或者核矩阵K∈Rm×nK\in R^{m\times n}K∈Rm×n
特征映射数据的样本的协方差矩阵:
Σ=1m∑i=1mϕ(x(i))ϕ(x(i))T∈Rd×d
\Sigma=\frac{1}{m}\sum_{i=1}^m\phi(x^{(i)})\phi(x^{(i)})^T\in R^{d\times d}
Σ=m1i=1∑mϕ(x(i))ϕ(x(i))T∈Rd×d
让(λk,vk),k=1,....d(\lambda_k,v_k),k=1,....d(λk,vk),k=1,....d是Σ\SigmaΣ的特征分解。
Σvk=λkvk
\Sigma v_k=\lambda_k v_k
Σvk=λkvk
x(l)x^{(l)}x(l)在第k主成分vkv_kvk的PCA投影是:
ϕ(x(l))Tvk
\phi(x^{(l)})^Tv_k
ϕ(x(l))Tvk
为了避免计算ϕ(x(l))\phi(x^{(l)})ϕ(x(l)),于是:
Σvk=(1m∑i=1mϕ(x(i))ϕ(x(i))T)vk=λkvk
\Sigma v_k=(\frac{1}{m}\sum_{i=1}^m\phi(x^{(i)})\phi(x^{(i)})^T)v_k=\lambda_kv_k
Σvk=(m1i=1∑mϕ(x(i))ϕ(x(i))T)vk=λkvk
把vkv_kvk写成ϕ(x(1))....ϕ(x(m))\phi(x^{(1)})....\phi(x^{(m)})ϕ(x(1))....ϕ(x(m))的线性组合:
vk=∑i=1mαkiϕ(x(i))
v_k=\sum_{i=1}^m\alpha_k^i\phi(x^{(i)})
vk=i=1∑mαkiϕ(x(i))
x(l)x^{(l)}x(l)的PCA投影通过使用K函数表示:
ϕ(x(l))Tvk=ϕ(x(l))T∑i=1mαkiϕ(x(i))=∑i=1mαkiK(x(l),x(i))
\phi(x^{(l)})^Tv_k=\phi(x^{(l)})^T\sum_{i=1}^m\alpha_k^i\phi(x^{(i)})=\sum_{i=1}^m\alpha_k^iK(x^{(l)},x^{(i)})
ϕ(x(l))Tvk=ϕ(x(l))Ti=1∑mαkiϕ(x(i))=i=1∑mαkiK(x(l),x(i))
怎么计算αki\alpha_k^iαki:
Σvk=(1m∑i=1mϕ(x(i))ϕ(x(i))T)vk=λkvk
\Sigma v_k=(\frac{1}{m}\sum_{i=1}^m\phi(x^{(i)})\phi(x^{(i)})^T)v_k=\lambda_kv_k
Σvk=(m1i=1∑mϕ(x(i))ϕ(x(i))T)vk=λkvk
用vk=∑i=1mαkiϕ(x(i))v_k=\sum_{i=1}^m\alpha_k^i\phi(x^{(i)})vk=∑i=1mαkiϕ(x(i))代替:
Kαk=λkmαk
K\alpha_k=\lambda_km\alpha_k
Kαk=λkmαk
于是αk=[αk1....αkm]\alpha_k=\begin{bmatrix}\alpha_k^1\\....\\\alpha_k^m\end{bmatrix}αk=⎣⎡αk1....αkm⎦⎤可以通过求K的特征分解来得出。
正则化αk\alpha_kαk以便于使vkTvk=1v_k^Tv_k=1vkTvk=1
vkTvk=∑i=1m∑j=1mαkiαkjϕ(x(i))Tϕ(x(j))=αkTKαk=λkm(αkTαk)
v_k^Tv_k=\sum_{i=1}^m\sum_{j=1}^m\alpha_k^i\alpha_k^j\phi(x^{(i)})^T\phi(x^{(j)})=\alpha_k^TK\alpha_k=\lambda_km(\alpha_k^T\alpha_k)
vkTvk=i=1∑mj=1∑mαkiαkjϕ(x(i))Tϕ(x(j))=αkTKαk=λkm(αkTαk)
∣∣αk∣∣2=1λkm
||\alpha_k||^2=\frac{1}{\lambda_km}
∣∣αk∣∣2=λkm1
当E(ϕ(x))≠0E(\phi(x))\ne0E(ϕ(x))̸=0,我们需要重新计算ϕ(x)\phi(x)ϕ(x):
ϕ^(x(i))=ϕ(x(i))−1m∑l=1mϕ^(x(l))
\hat\phi(x^{(i)})=\phi(x^{(i)})-\frac{1}{m}\sum_{l=1}^m\hat\phi(x^{(l)})
ϕ^(x(i))=ϕ(x(i))−m1l=1∑mϕ^(x(l))
中心化之后的K函数:
K^i,j=ϕ^(x(i))Tϕ^(x(j))
\hat K_{i,j}=\hat \phi(x^{(i)})^T\hat \phi(x^{(j)})
K^i,j=ϕ^(x(i))Tϕ^(x(j))
矩阵表示:
K^=K−1mK−K1m+1mK1m,1m=[1m....1m............1m....1m]
\hat K=K-1_mK-K1_m+1_mK1_m,\quad 1_m=\begin{bmatrix}\frac{1}{m}&....&\frac{1}{m}\\....&....&....\\\frac{1}{m}&....&\frac{1}{m}\end{bmatrix}
K^=K−1mK−K1m+1mK1m,1m=⎣⎡m1....m1............m1....m1⎦⎤
然后使用K^\hat KK^来计算PCA.
- 经常在聚类、异常检测中使用PCA.
- 投影到k维约简子空间一般是不可能的.
2.8 总结
表示学习:
- 把一些特征表达的更加简单和便于理解。
- 通常在特征提取、降维、分类问题中使用。