IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 机器学习基础---降维方法---主成分分析(PCA)推导 -> 正文阅读

[人工智能]机器学习基础---降维方法---主成分分析(PCA)推导

主成分分析 PCA

算法概述

相关数学概念:

  • 从矩阵空间角度分析PCA方法

    • 对于原始样本来说,其基向量为d个形如(1,0,0,…,0),(0,1,0,…,0),(0,0,0,…,1)的单位正交向量,这些向量张成d维样本空间,样本点的坐标代表着d个基向量的线性组合:

    x i = ( x i 1 , x i 2 , . . . , x i , d ) T = x i 1 ( 1 , 0 , 0 , . . . , 0 ) T + . . . + x i d ( 0 , 0 , 0 , . . . , 1 ) T x_i=(x_{i1},x_{i2},...,x_{i,d})^T=x_{i1}(1,0,0,...,0)^T+...+x_{id}(0,0,0,...,1)^T xi?=(xi1?,xi2?,...,xi,d?)T=xi1?(1,0,0,...,0)T+...+xid?(0,0,0,...,1)T

    • PCA方法的目的是找到原始样本空间中的m个正交向量p1,p2,…pm,以这些向量张成一个原空间的一个子空间,降维的方法就是将原空间中的样本点映射到子空间中,具体映射方法如下:
      W d ? m = [ p 1 , p 2 , . . . , p m ] X = [ x 1 , x 2 , . . . x n ] = [ x 11 x 21 . . . x n 1 x 12 x 22 . . . x n 2 . . . . . . . . . . . . x 1 d x 2 d . . . x n d ] W_{d*m}=[p_1,p_2,...,p_m]\\ X=[x_1,x_2,...x_n]= \left[ \begin{matrix} x_{11} & x_{21} & ... & x_{n1}\\ x_{12} & x_{22} & ... & x_{n2}\\ ... & ... & ... & ...\\ x_{1d} & x_{2d} & ... & x_{nd} \end{matrix} \right] Wd?m?=[p1?,p2?,...,pm?]X=[x1?,x2?,...xn?]=?????x11?x12?...x1d??x21?x22?...x2d??............?xn1?xn2?...xnd???????
      Y = [ y 1 , y 2 , . . . , y n ] = W T X = [ p 1 T , p 2 T , . . . , p m T ] T [ x 1 , x 2 , . . . , x n ] ???????????? = [ p 1 T x 1 p 1 T x 2 . . . p 1 T x n p 2 T x 1 p 2 T x 2 . . . p 2 T x n . . . . . . . . . . . . p m T x 1 p m T x 2 . . . p m T x n ] Y=[y_1,y_2,...,y_n]=W^TX=[p_1^T,p_2^T,...,p_m^T]^T[x_1,x_2,...,x_n]\\ \ \ \ \ \ \ \ \ \ \ \ \ = \left[ \begin{matrix} p_1^Tx_1 & p_1^Tx_2 & ... & p_1^Tx_n\\ p_2^Tx_1 & p_2^Tx_2 & ... & p_2^Tx_n\\ ... & ... & ... & ...\\ p_m^Tx_1 & p_m^Tx_2 & ... & p_m^Tx_n\\ \end{matrix} \right] Y=[y1?,y2?,...,yn?]=WTX=[p1T?,p2T?,...,pmT?]T[x1?,x2?,...,xn?]????????????=?????p1T?x1?p2T?x1?...pmT?x1??p1T?x2?p2T?x2?...pmT?x2??............?p1T?xn?p2T?xn?...pmT?xn???????
      得到目标矩阵Y,是投影到子空间后在新基上的n个新点坐标集合,每个yi是一个m维向量,

    • 低维样本向量 y i y_i yi?中的m个值只是新基下的坐标值,为了恢复原始的高维坐标,需要将坐标值与对应基向量相乘并求和

      因此有重构方法:
      X ’ = W W T X = [ p 1 , p 2 , . . . , p m ] d ? m [ y 1 , y 2 , . . . , y n ] m ? n X’=WW^TX=[p1,p2,...,p_m]_{d*m}[y_1,y_2,...,y_n]_{m*n} X=WWTX=[p1,p2,...,pm?]d?m?[y1?,y2?,...,yn?]m?n?

  • 协方差矩阵

    • 方差:衡量变量值的分散程度
      V a r ( a ) = 1 N ∑ i = 1 N ( a i ? μ a ) 2 Var(a)=\frac1N \sum_{i=1}^N(a_i-\mu_a)^2 Var(a)=N1?i=1N?(ai??μa?)2

    • 协方差:协方差可以表示两个变量的相关性,其公式为:
      C o v ( a , b ) = E [ ( a ? μ a ) ( b ? μ b ) ] = 1 N ? 1 ∑ i = 1 N ( a i ? μ a ) ( b i ? μ b ) Cov(a,b)=E[(a-\mu_a)(b-\mu_b)]=\frac1{N-1}\sum_{i=1}^N(a_i-\mu_a)(b_i-\mu_b) Cov(a,b)=E[(a?μa?)(b?μb?)]=N?11?i=1N?(ai??μa?)(bi??μb?)
      当预先对属性进行规范化(令均值为0,方差为1)后,有:
      C o v ( a , b ) = 1 n ? 1 ∑ i = 1 N a i b i ≈ 1 n ∑ i = 1 N a i b i Cov(a,b)=\frac1{n-1}\sum_{i=1}^Na_ib_i\approx\frac1n\sum_{i=1}^Na_ib_i Cov(a,b)=n?11?i=1N?ai?bi?n1?i=1N?ai?bi?

    • 协方差矩阵:

      对含有n个d维数据样本的样本矩阵X
      X = [ x 11 x 21 . . . x n 1 x 12 x 22 . . . x n 2 . . . . . . . . . x 1 d x 2 d . . . x n 3 ] X=\left[ \begin{matrix} x_{11} & x_{21} & ...& x_{n1}\\ x_{12} & x_{22} & ...& x_{n2}\\ ... & ... & ...& \\ x_{1d} & x_{2d} & ...& x_{n3} \end{matrix} \right] X=?????x11?x12?...x1d??x21?x22?...x2d??............?xn1?xn2?xn3???????
      其协方差矩阵为
      ∑ d ? d = X X T = [ C o v ( a t t r 1 , a t t r 1 ) C o v ( a t t r 1 , a t t r 2 ) . . . C o v ( a t t r 1 , a t t r d ) C o v ( a t t r 2 , a t t r 1 ) C o v ( a t t r 2 , a t t r 2 ) . . . C o v ( a t t r 2 , a t t r d ) . . . . . . . . . . . . C o v ( a t t r d , a t t r 1 ) C o v ( a t t r d , a t t r 2 ) . . . C o v ( a t t r d , a t t r d ) ] \sum_{d*d}=XX^T=\left[ \begin{matrix} Cov(attr_1,attr_1) & Cov(attr_1,attr_2) & ... & Cov(attr_1,attr_d)\\ Cov(attr_2,attr_1) & Cov(attr_2,attr_2) & ... & Cov(attr_2,attr_d)\\ ... & ... & ... & ...\\ Cov(attr_d,attr_1) & Cov(attr_d,attr_2) & ... & Cov(attr_d,attr_d) \end{matrix} \right] d?d?=XXT=?????Cov(attr1?,attr1?)Cov(attr2?,attr1?)...Cov(attrd?,attr1?)?Cov(attr1?,attr2?)Cov(attr2?,attr2?)...Cov(attrd?,attr2?)?............?Cov(attr1?,attrd?)Cov(attr2?,attrd?)...Cov(attrd?,attrd?)??????

核心思路:

  • 最大化方差(最大可分性):

    • 直观来讲,PCA方法的目的是在原样本空间中找到m个方向,使原始样本点在这m个方向上的投影尽可能地分散,以此保证原始样本点在投影时不会出现多点投影到一点,进而导致较大信息损失的情况

2dim

如上图,投影到方差小的坐标轴方向会出现多对一的映射,原本可分的样本变得不可分,信息损失较大

同时,对于目标维度d>1的情况,为了尽可能表示更多的原始信息,希望各个基向量不存在线性相关性,即基向量相互正交
  • 目标维度上方差最大化的思路可以用数学语言表示为:
    a r g m a x W = t r ( W T X X T W ) s . t . ? W T W = I \underset {W}{argmax} = tr(W^TXX^TW)\\ s.t.\ W^TW=I Wargmax?=tr(WTXXTW)s.t.?WTW=I

    就目标函数而言,基向量有正交限制,但如果不对基向量的模长进行限制,目标函数无上限,因此该目标函数需要对W进行单位正交限制

  • 最小化重构误差

    • 此为PCA的另一种理解方式,即要求在通过 Y = f ( X ) Y=f(X) Y=f(X)降维之后,再通过 X ′ = f ? 1 ( Y ) X'=f^{-1}(Y) X=f?1(Y)恢复到原来的高维度,最小化 X X X X ′ X' X的距离(差距)

    • 以线性变换为例,如:对 Y = W T X Y=W^TX Y=WTX,可以通过 X ′ = W W T X X'=WW^TX X=WWTX进行恢复(重构)

    • 最小化重构误差的数学表达:
      a r g m i n W ∣ ∣ X ? W W T X ∣ ∣ F 2 s . t . ? W T W = I \underset{W}{argmin}||X-WW^TX||_F^2 \\ s.t.\ W^TW=I Wargmin?X?WWTXF2?s.t.?WTW=I

  • 两种思路的一致性:

    • 对于最小化重构误差思路:
      ∣ ∣ X ? W W T X ∣ ∣ F 2 = t r [ ( X ? W W T X ) ( X ? W W T X ) T ] = t r ( X X T ? X X T W W T ? W W T X X T + W W T X X T W W T ) = t r ( ∑ ) ? t r ( W T X X T W ) ? t r ( W T X X T W ) + t r ( W T X X T W ) = t r ( ∑ ) ? t r ( W T X X T W ) \begin{aligned} ||X-WW^TX||_F^2 &= tr[(X-WW^TX)(X-WW^TX)^T]\\ &=tr(XX^T-XX^TWW^T-WW^TXX^T+WW^TXX^TWW^T)\\ &=tr(\sum)-tr(W^TXX^TW^)-tr(W^TXX^TW)+tr(W^TXX^TW)\\ &=tr(\sum)-tr(W^TXX^TW) \end{aligned} X?WWTXF2??=tr[(X?WWTX)(X?WWTX)T]=tr(XXT?XXTWWT?WWTXXT+WWTXXTWWT)=tr()?tr(WTXXTW)?tr(WTXXTW)+tr(WTXXTW)=tr()?tr(WTXXTW)?
      由于协方差阵确定,最小化重构误差即为最大化 t r ( W T X X T W ) tr(W^TXX^TW) tr(WTXXTW),即为最大化方差

算法推导

  • 矩阵形式目标函数最优化:

    以最大化方差为优化目标:
    目 标 : a r g ? m a x W ?? t r ( W T ∑ W ) ??? s . t . ? W T W = I 对 有 约 束 最 优 化 问 题 , 由 拉 格 朗 日 乘 子 法 , 得 : ? t r ( W T ∑ W ) ? t r ( Λ ( W T W ? I ) ) 求 导 并 令 值 为 0 , 得 : ? 2 ∑ W ? 2 W Λ = 0 即 : ∑ W = W Λ 目标:\underset {W}{arg\ max} \ \ tr(W^T\sum W)\ \ \ s.t.\ W^TW=I\\ 对有约束最优化问题,由拉格朗日乘子法,得:\ tr(W^T\sum W)-tr(\Lambda(W^TW-I)) \\ 求导并令值为0,得: \ 2\sum W-2W\Lambda=0 \\ 即:\sum W=W\Lambda \\ Warg?max???tr(WTW)???s.t.?WTW=I?tr(WTW)?tr(Λ(WTW?I))0:?2W?2WΛ=0W=WΛ

    证明一:变换矩阵W中的列向量为协方差矩阵 ∑ \sum 的特征向量
    W d ? m = [ p 1 , p 2 , . . . , p m ] ∑ d ? d = X X T = [ C o v ( a 1 , a 1 ) C o v ( a 1 , a 2 ) . . . C o v ( a 1 , a d ) C o v ( a 2 , a 1 ) C o v ( a 2 , a 2 ) . . . C o v ( a 2 , a d ) . . . . . . . . . . . . C o v ( a d , a 1 ) C o v ( a d , a 2 ) . . . C o v ( a d , a d ) ] \underset{d*m}W=[p_1,p_2,...,p_m]\\ \\ \sum_{d*d}=XX^T=\left[ \begin{matrix} Cov(a_1,a_1) & Cov(a_1,a_2) & ... & Cov(a_1,a_d)\\ Cov(a_2,a_1) & Cov(a_2,a_2) & ... & Cov(a_2,a_d)\\ ... & ... & ... & ...\\ Cov(a_d,a_1) & Cov(a_d,a_2) & ... & Cov(a_d,a_d) \end{matrix} \right] d?mW?=[p1?,p2?,...,pm?]d?d?=XXT=?????Cov(a1?,a1?)Cov(a2?,a1?)...Cov(ad?,a1?)?Cov(a1?,a2?)Cov(a2?,a2?)...Cov(ad?,a2?)?............?Cov(a1?,ad?)Cov(a2?,ad?)...Cov(ad?,ad?)??????
    ∑ W d ? m = [ ∑ p 1 , ∑ p 2 , . . . , ∑ p m ] Λ m ? m = [ λ 1 0 . . . 0 0 λ 2 . . . 0 . . . . . . . . . . . . 0 0 . . . λ m ] \underset{d*m}{\sum W}= [\sum p_1,\sum p_2,...,\sum p_m] \underset {m*m}\Lambda=\left[ \begin{matrix} \lambda_1 & 0 & ... & 0 \\ 0 & \lambda_2 & ... & 0\\ ... & ... & ... & ...\\ 0 & 0 & ... & \lambda_m \end{matrix} \right ] d?mW?=[p1?,p2?,...,pm?]m?mΛ?=?????λ1?0...0?0λ2?...0?............?00...λm???????
    W Λ d ? m = [ λ 1 p 1 , λ 2 p 2 , . . . , λ m p m ] \underset {d*m}{W\Lambda}=[\lambda_1p_1, \lambda_2p_2,...,\lambda_mp_m] d?mWΛ?=[λ1?p1?,λ2?p2?,...,λm?pm?]
    由等式可得:

∑ W = W Λ [ ∑ p 1 , ∑ p 2 , . . . , ∑ p m ] = [ λ 1 p 1 , λ 2 p 2 , . . . , λ m p m ] \sum W = W\Lambda \\ [\sum p_1,\sum p_2,...,\sum p_m] = [\lambda_1p_1, \lambda_2p_2,...,\lambda_mp_m] W=WΛ[p1?,p2?,...,pm?]=[λ1?p1?,λ2?p2?,...,λm?pm?]
即得到等式组:
{ ∑ p 1 = λ 1 p 1 ∑ p 2 = λ 1 p 2 . . . ∑ p m = λ 1 p m \left \{ \begin{aligned} \sum p_1&=\lambda_1p_1\\ \sum p_2&=\lambda_1p_2\\ ...\\ \sum p_m&=\lambda_1p_m \end{aligned} \right. ????????????????p1?p2?...pm??=λ1?p1?=λ1?p2?=λ1?pm??

同时存在单位正交约束:
{ p i p j = 0 ??? i ≠ j p i p j = 1 ??? i = j \left \{ \begin{aligned} p_ip_j=0 \ \ \ i\neq j\\ p_ip_j=1 \ \ \ i=j \end{aligned} \right. {pi?pj?=0???i?=jpi?pj?=1???i=j?

因此可证得, p i p_i pi?为协方差矩阵特征向量, x i x_i xi? 为特征值。即满足该条件时,该最优化问题取得极值

? 证明二:当选取的特征向量是对应特征值最大的m个时,方差最大

优化目标: t r ( W T ∑ W ) = t r ( W T W Λ ) = t r ( Λ ) tr(W^T\sum W)=tr(W^TW\Lambda)=tr(\Lambda) tr(WTW)=tr(WTWΛ)=tr(Λ)
因此最大化方差等价于最大化对角阵 Λ \Lambda Λ的迹,即最大化m个特征向量对应的特征值之和

算法流程

1)标准化样本矩阵X,使样本均值为0,方差为1

2)计算协方差矩阵,进行特征值分解,获取<特征值,特征向量>对

3)选取最大m个特征值对应的特征向量 p 1 , . . . p m p_1,...p_m p1?,...pm?,组成变换矩阵W

4)通过 Y = W T X Y=W^TX Y=WTX的变换,将样从d维降至m维

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-30 12:33:55  更:2021-10-30 12:34:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 6:27:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码