本系列博客基于温州大学黄海广博士的机器学习课程的笔记,小伙伴们想更详细学习黄博士课程请移步到黄博士的Github、或者机器学习初学者公众号,现在在中国慕课也是可以学习的,内容包括机器学习、深度学习及Python编程,matplotlib、numpy、pandas、sklearn等,资料很详细,要系统学习请移步哦!笔者的博客只是笔记,内容不会十分详细,甚至会有些少错误!



1.降维概述

  • 维数灾难:在机器学习建模过程中,随着特征数量的增多,计算量会剧增,变得很大,维度太大导致机器学习性能下降,模型的性能随着特征的增加先上升后下降;

  • 降维定义:降维(Dimensionality Reduction),将训练数据中的样本从高维空间转换到低维空间,但不存在完全无损的降维;

  • 降维的意义:

    1. 高维数据增加了运算难度;
    2. 高维使得学习算法的泛化额能力变弱,维度越高,算法的搜索难度和成本越大;
    3. 降维增加数据可读性,有利于发掘数据有意义的结构;
  • 降维的作用:

    1. 减少冗余特征,降低数据维度;
      假设有两个特征:
      x1x_1x1:身高(单位:厘米);
      x2x_2x2:身高(单位:英寸);
      可以用一个特征表示身高即可;
    2. 数据可视化;
      t−distributedStochasticNeighborEmbedding(t−SNE)t-distributed Stochastic Neighbor Embedding(t-SNE)tdistributedStochasticNeighborEmbedding(tSNE):将数据点之间的相似度转换为概率;
  • 降维的优缺点:

  • 优点:

    1. 通过减少特征的维数,数据集存储所需的空间相应减少,减少了特征维数所需的计算训练时间;
    2. 数据集特征的降维有助于快速可视化数据;
    3. 通过处理多重共线性消除冗余特征;
  • 缺点:

    1. 降维可能会丢失一些数据;
    2. 在主成分分析(PCA)降维技术中,有时需要考虑多少主成分是难以确定的;
      1

2.SVD(奇异值分解)

2.1 奇异值分解
  • 奇异值分解(Singular Value Decomposition,SVD)(Singular \ Value \ Decomposition,SVD)(Singular Value Decomposition,SVD)
  • SVD可以将一个矩阵AAA分解成三个矩阵的乘积:
    1. 一个正交矩阵U(orthogonal matrix)U(orthogonal \ matrix)U(orthogonal matrix);
    2. 一个对角矩阵Σ(diagonal matrix)\Sigma(diagonal \ matrix)Σ(diagonal matrix);
    3. 一个正交矩阵VVV的转置;
2.2 SVD详解
  1. 假设矩阵AAA是一个m×nm\times{n}m×n的矩阵,通过SVDSVDSVD对矩阵进行分解,SVDSVDSVD定义如下:
    A=UΣVT A=U\Sigma{V^T} A=UΣVT
    2

  2. 符号定义
    A=UΣVT=u1σ1v1T+⋯+urσrvrT A=U\Sigma{V^T}=u_1\sigma_1v_1^T+\dots+u_r\sigma_rv_r^T A=UΣVT=u1σ1v1T++urσrvrT
    其中:U:一个m×m的矩阵;每个特征向量ui称为A的左奇异向量;Σ:一个m×n的矩阵;除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值σ;V:一个n×n的矩阵,每个特征向量vi称为A的右奇异向量;U和V都是酉矩阵,即满足:UTU=I,VTV=I;r:矩阵A的秩;其中:\\ U:一个m\times{m}的矩阵;每个特征向量u_i称为A的左奇异向量;\\ \Sigma:一个m\times{n}的矩阵;除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值\sigma;\\ V:一个n\times{n}的矩阵,每个特征向量v_i称为A的右奇异向量;\\ U和V都是酉矩阵,即满足:U^TU=I,V^TV=I;\\ r:矩阵A的秩;Um×muiAΣm×n线0线σVn×nviAUVUTU=IVTV=IrA

  3. SVD求解1:U矩阵求解
    方阵AAT为m×m的一个方阵,可以进行特征分解,得到的特征值和特征向量满足式子:(AAT)ui=λiui得到矩阵AAT的m个特征值和对应的m个特征向量u;将AAT的所有特征向量组成一个m×m的矩阵U,即SVD中的U矩阵;U矩阵中的每个特征向量叫做A的左奇异向量;方阵AA^T为m\times{m}的一个方阵,可以进行特征分解,得到的特征值和特征向量满足式子:(AA^T)u_i=\lambda_iu_i\\ 得到矩阵AA^T的m个特征值和对应的m个特征向量u;\\ 将AA^T的所有特征向量组成一个m\times{m}的矩阵U,即SVD中的U矩阵;\\ U矩阵中的每个特征向量叫做A的左奇异向量;AATm×m(AAT)ui=λiuiAATmmuAATm×mUSVDUUA

  4. SVD求解2:V矩阵求解
    将A的转置和A做矩阵乘法,得到一个n×n的一个方阵ATA;特征分解,得到特征值和特征向量满足:(ATA)vi=λivi;得到矩阵ATA的n个特征值和对应的n个特征向量v;将ATA的所有特征向量组成一个n×n的矩阵V,即SVD中V矩阵;V矩阵中的每个特征向量叫做A的右奇异向量;将A的转置和A做矩阵乘法,得到一个n\times{n}的一个方阵A^TA;\\ 特征分解,得到特征值和特征向量满足:(A^TA)v_i=\lambda_iv_i;\\ 得到矩阵A^TA的n个特征值和对应的n个特征向量v;\\ 将A^TA的所有特征向量组成一个n\times{n}的矩阵V,即SVD中V矩阵;\\ V矩阵中的每个特征向量叫做A的右奇异向量;AAn×nATA(ATA)vi=λiviATAnnvATAn×nVSVDVVA

  5. SVD求解3:Σ\SigmaΣ矩阵求解
    特征值矩阵等于奇异值矩阵的平方,即特征值和奇异值满足:σi=λi;可以通过ATA的特征值取平方根求解奇异值;由A=UΣVT,则有:AV=UΣVTV;因:VTV=I,则有:AV=UΣ;有:Avi=σiui,σi=Avi/ui特征值矩阵等于奇异值矩阵的平方,即特征值和奇异值满足:\sigma_i=\sqrt{\lambda_i};\\ 可以通过A^TA的特征值取平方根求解奇异值;\\ 由A=U\Sigma{V^T},则有:AV=U\Sigma{V^T}V;\\ 因:V^TV=I,则有:AV=U\Sigma;\\ 有:Av_i=\sigma_iu_i,\sigma_i=Av_i/u_iσi=λi ATAA=UΣVTAV=UΣVTVVTV=IAV=UΣAvi=σiuiσi=Avi/ui

2.3 SVD计算案例
  1. 实例背景
    设矩阵A定义:A=[3045],则有A的秩r=2设矩阵A定义:A=\begin{bmatrix}3 & 0\\4 & 5\end{bmatrix},则有A的秩r=2AA=[3405]Ar=2

  2. ATA和AATA^TA和AA^TATAAAT
    ATA=[3405][3045]=[25202025];  AAT=[3045][3405]=[9121241] A^TA=\begin{bmatrix}3 & 4\\0 & 5\end{bmatrix}\begin{bmatrix}3 & 0\\4 & 5\end{bmatrix}=\begin{bmatrix}25 & 20\\20 & 25\end{bmatrix};\ \ AA^T=\begin{bmatrix}3 & 0\\4 & 5\end{bmatrix}\begin{bmatrix}3 & 4\\0 & 5\end{bmatrix}=\begin{bmatrix}9 & 12\\12 & 41\end{bmatrix} ATA=[3045][3405]=[25202025]  AAT=[3405][3045]=[9121241]

  3. 计算ATAA^TAATA的特征值和特征向量
    ∣25−λ202025−λ∣=(25−λ)2−400=(λ−45)(λ−5)=0 \begin{vmatrix}25-\lambda & 20\\ 20 & 25-\lambda\end{vmatrix}=(25-\lambda)^2-400=(\lambda-45)(\lambda-5)=0 25λ202025λ=(25λ)2400=(λ45)(λ5)=0
    解得:λ1=45,λ2=5解得:\lambda_1=45,\lambda_2=5λ1=45λ2=5
    由σi=λi,得到奇异值:σ1=45,σ2=5由\sigma_i=\sqrt{\lambda_i},得到奇异值:\sigma_1=\sqrt{45},\sigma_2=\sqrt{5}σi=λi σ1=45 σ2=5

  4. 计算AATAA^TAAT的特征值和特征向量
    求得:λ1=45,λ2=5;  v1=[1212];  v2=[−1212] 求得:\lambda_1=45,\lambda_2=5;\ \ v_1=\begin{bmatrix}\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}}\end{bmatrix};\ \ v_2=\begin{bmatrix}-\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}}\end{bmatrix} λ1=45λ2=5  v1=[2 12 1]  v2=[2 12 1]

  5. 求奇异值
    利用Avi=σiui,i=1,2,求奇异值:利用Av_i=\sigma_iu_i,i=1,2,求奇异值:Avi=σiui,i=1,2
    Av1=[3292]=45[110310]=σ1u1;Av2=[−3212]=5[−310110]=σ2u2 Av_1=\begin{bmatrix}\frac{3}{\sqrt{2}} \\ \frac{9}{\sqrt{2}}\end{bmatrix}=\sqrt{45}\begin{bmatrix}\frac{1}{\sqrt{10}} \\ \frac{3}{\sqrt{10}}\end{bmatrix}=\sigma_1u_1; Av_2=\begin{bmatrix}-\frac{3}{\sqrt{2}} \\ \frac{1}{\sqrt{2}}\end{bmatrix}=\sqrt{5}\begin{bmatrix}-\frac{3}{\sqrt{10}} \\ \frac{1}{\sqrt{10}}\end{bmatrix}=\sigma_2u_2 Av1=[2 32 9]=45 [10 110 3]=σ1u1Av2=[2 32 1]=5 [10 310 1]=σ2u2

  6. 奇异值分解结果
    U=[110−310310110];  Σ=[45005];  V=[12−121212]A=UΣVT=[110−310310110][45005][12−121212]T=[3045] \begin{aligned} &U=\begin{bmatrix}\frac{1}{\sqrt{10}} & -\frac{3}{\sqrt{10}} \\ \frac{3}{\sqrt{10}} & \frac{1}{\sqrt{10}}\end{bmatrix};\ \ \Sigma=\begin{bmatrix}\sqrt{45} & 0 \\ 0 & \sqrt{5}\end{bmatrix};\ \ V=\begin{bmatrix}\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\end{bmatrix}\\ &A=U\Sigma{V^T}= \begin{bmatrix}\frac{1}{\sqrt{10}} & -\frac{3}{\sqrt{10}} \\ \frac{3}{\sqrt{10}} & \frac{1}{\sqrt{10}}\end{bmatrix} \begin{bmatrix}\sqrt{45} & 0 \\ 0 & \sqrt{5}\end{bmatrix} \begin{bmatrix}\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\end{bmatrix}^T=\begin{bmatrix}3 & 0 \\ 4 & 5\end{bmatrix} \end{aligned} U=[10 110 310 310 1]  Σ=[45 005 ]  V=[2 12 12 12 1]A=UΣVT=[10 110 310 310 1][45 005 ][2 12 12 12 1]T=[3405]

2.4 奇异值分解近似
  • SVD分解将一个矩阵进行分解,对角矩阵对角线上的特征值递减存放,奇异值的减少特别快;
  • 对于奇异值,可以用最大的kkk个奇异值和对应的左右奇异向量来近似描述矩阵;
    Am×n=Um×mΣm×nVn×nT≈Um×kΣk×kVk×nT;k要比n小很多,即一个大矩阵A可以用三个小矩阵Um×k、Σk×k、Vk×nT表示; \begin{aligned} & A_{m\times{n}}=U_{m\times{m}}\Sigma_{m\times{n}}V_{n\times{n}}^T≈U_{m\times{k}}\Sigma_{k\times{k}}V_{k\times{n}}^T;\\ k要比n小很多,即一个大矩阵A可以用&三个小矩阵U_{m\times{k}}、\Sigma_{k\times{k}}、V_{k\times{n}}^T表示; \end{aligned} knAAm×n=Um×mΣm×nVn×nTUm×kΣk×kVk×nTUm×kΣk×kVk×nT
    5
2.5 SVD案例

6

3.主成分分析(PCA)

3.1 PCA简述
  • 主成分分析:Principal Component Analysis,PCA;
  • 主成分分析:一种降维方法,通过将一个大的特征集转换成一个较小的特征集,小特征集仍包含原始数据中的大部分信息,从而降低了原始数据的维数;
  • 减少一个数据集的特征数量,会牺牲一点准确性;
    7
    8
    9
    10
    11
3.2 得到包含最大差异性的主成分方向的方法
  1. 通过计算数据矩阵的协方差矩阵;
  2. 得到协方差矩阵的特征值特征向量;
  3. 选择特征值最大的kkk个特征所对应的特征向量组成的矩阵;
  4. 将数据矩阵转换到新的空间中,实现数据特征的降维;
3.3 PCA算法的实现方法
  1. 基于SVD分解协方差矩阵实现PCA算法;
  2. 基于特征值分解协方差矩阵实现PCA算法;
3.4 基于SVD分解协方差矩阵实现PCA算法
  1. 背景:PCA从nnn维减少到kkk维,设有mmmnnn维数据,将原始数据按列组成nnnmmm列矩阵XXX
  2. 均值归一化。计算所有特征的均值,令xj=xj−μj(μjx_j=x_j-\mu_j(\mu_jxj=xjμj(μj为均值))),如果特征在不同数量级上,需要除以标准差σ2\sigma^2σ2
  3. 计算协方差矩阵(covariance matrix)Σ(covariance \ matrix)\Sigma(covariance matrix)Σ,即:Σ=1m∑i=1n(x(i))(x(i))T\Sigma=\frac{1}{m}\sum_{i=1}^n(x^{(i)})(x^{(i)})^TΣ=m1i=1n(x(i))(x(i))T
  4. 计算协方差矩阵Σ\SigmaΣ的特征向量(eigenvectors)(eigenvectors)(eigenvectors),利用奇异值分解来求解;
    12
3.5 基于特征值分解协方差矩阵实现PCA算法
  • 基础知识:

    1. 特征值与特征向量
      如果一个向量v是矩阵A的特征向量,则满足:Av=λv;其中:λ是特征向量A对应的特征值,一个矩阵的一组特征向量是一组正交向量;如果一个向量v是矩阵A的特征向量,则满足:Av=\lambda{v};\\ 其中:\lambda是特征向量A对应的特征值,一个矩阵的一组特征向量是一组正交向量;vAAv=λvλA
    2. 特征值分解矩阵
      对于矩阵A,有一组特征向量v,将这组向量进行单位正交化,即得到一组正交单位向量;特征值分解,将矩阵A分解为:A=PΣP−1;其中:P是矩阵A的特征向量组成的矩阵;Σ是一个对角阵,对角线上的元素是特征值;对于矩阵A,有一组特征向量v,将这组向量进行单位正交化,即得到一组正交单位向量;\\ 特征值分解,将矩阵A分解为:A=P\Sigma{P^{-1}};\\ 其中:\\ P是矩阵A的特征向量组成的矩阵;\\ \Sigma是一个对角阵,对角线上的元素是特征值;AvAA=PΣP1PAΣ线
  • 算法流程:
    设有mmmnnn维数据,将原始数据按列组成nnnmmm列矩阵XXX

    1. 均值归一化。计算所有特征的均值,令xj=xj−μj(μjx_j=x_j-\mu_j(\mu_jxj=xjμj(μj为均值))),如果特征在不同数量级上,需要除以标准差σ2\sigma^2σ2
    2. 计算协方差矩阵(covariance matrix)Σ\SigmaΣ,即:Σ=1m∑i=1n(x(i))(x(i))T\Sigma=\frac{1}{m}\sum_{i=1}^n(x^{(i)})(x^{(i)})^TΣ=m1i=1n(x(i))(x(i))T
    3. 用特征值分解方法计算协方差矩阵Σ\SigmaΣ的特征值和特征向量;
    4. 对特征值从大到小排序,选择最大的kkk个,将其对应的kkk个特征向量分别作为行向量组成特征向量矩阵PPP
    5. 将数据转换到kkk个特征向量构建的新空间中,即Y=PXY=PXY=PX
3.6 PCA算法案例分析
  1. 实例背景:
    A=[−1−1020−20012] A=\begin{bmatrix}-1 & -1 & 0 & 2 &0 \\ -2 & 0 & 0 & 1 & 2\end{bmatrix} A=[1210002102]
  2. 矩阵每行为零均值;
  3. 求解协方差矩阵:
    Σ=15[−1−1020−20012][−1−2−10002101]=[65454565] \Sigma=\frac{1}{5}\begin{bmatrix}-1 & -1 & 0 & 2 &0 \\ -2 & 0 & 0 & 1 & 2\end{bmatrix} \begin{bmatrix}-1 & -2 \\ -1 & 0 \\ 0 & 0 \\ 2 & 1 \\ 0 & 1\end{bmatrix}=\begin{bmatrix}\frac{6}{5} & \frac{4}{5} \\ \frac{4}{5} & \frac{6}{5}\end{bmatrix} Σ=51[1210002102]1102020011=[56545456]
  4. Σ\SigmaΣ的特征值和特征向量
    ∣A−λE∣=∣65−λ454565−λ∣=(65−λ)2−1625=0解得特征值和特征向量:λ1=2,λ2=2/5; Σ1=[11]T,Σ2=[−11]T \begin{aligned} &|A-\lambda{E}|=\begin{vmatrix}\frac{6}{5}-\lambda & \frac{4}{5} \\ \frac{4}{5} & \frac{6}{5}-\lambda\end{vmatrix}=(\frac{6}{5}-\lambda)^2-\frac{16}{25}=0\\ &解得特征值和特征向量:\lambda_1=2,\lambda_2=2/5;\ \Sigma_1=\begin{bmatrix}1 & 1\end{bmatrix}^T,\Sigma_2=\begin{bmatrix}-1 & 1\end{bmatrix}^T \end{aligned} AλE=56λ545456λ=(56λ)22516=0λ1=2λ2=2/5 Σ1=[11]TΣ2=[11]T
  5. 标准化后的特征向量
    α1=[1212]T,α2=[−1212]T \alpha_1=\begin{bmatrix}\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\end{bmatrix}^T,\alpha_2=\begin{bmatrix}-\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\end{bmatrix}^T α1=[2 12 1]Tα2=[2 12 1]T
  6. 求得矩阵PPP
    P=[1212−1212] P=\begin{bmatrix}\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\end{bmatrix} P=[2 12 12 12 1]
  7. 验证协方差矩阵Σ\SigmaΣ的对角化
    PΣPT=[1212−1212][65454565][12−121212]=[20025] P\Sigma{P^T}=\begin{bmatrix}\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\end{bmatrix} \begin{bmatrix}\frac{6}{5} & \frac{4}{5} \\ \frac{4}{5} & \frac{6}{5}\end{bmatrix} \begin{bmatrix}\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\end{bmatrix}=\begin{bmatrix}2 & 0 \\ 0 & \frac{2}{5}\end{bmatrix} PΣPT=[2 12 12 12 1][56545456][2 12 12 12 1]=[20052]
  8. 降维后数据
    用P的第一行乘以数据矩阵,得到降维后数据表示:用P的第一行乘以数据矩阵,得到降维后数据表示:P
    Y=[1212][−1−1020−20011]=[−32−12032−12] Y=\begin{bmatrix}\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\end{bmatrix} \begin{bmatrix}-1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1\end{bmatrix}= \begin{bmatrix}-\frac{3}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & \frac{3}{\sqrt{2}} & -\frac{1}{\sqrt{2}}\end{bmatrix} Y=[2 12 1][1210002101]=[2 32 102 32 1]
    16
3.7 PCA算法优缺点
  • 优点:

    1. 只需要以方差衡量信息量,不受数据集以外的因素影响;
    2. 各主成分之间正交,可消除原始数据成分之间的相互影响的因素;
    3. 计算方法简单,主要运算时特征值分解,易于实现;
    4. 无监督学习的一种,无参数限制;
  • 缺点:

    1. 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强;
    2. 方差小的非主成分可能包含对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响;

注:矩阵分解部分不熟悉的读者需要详细阅读线性代数部分。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐