最全LDA和PCA降维总结_lda模型与pca降维(2),头条面试题

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

\sum_j(j=0,1)

∑j​(j=0,1) 为第

j

j

j 类样本的协方差矩阵。

​ 其中

u

j

=

1

N

j

x

ϵ

X

j

x

(

j

=

0

,

1

)

j

=

x

ϵ

X

j

(

x

u

j

)

(

x

u

j

)

T

(

j

=

0

,

1

)

u_j = \frac{1}{N_j} \sum_{\boldsymbol x\epsilon X_j}\boldsymbol x(j=0,1), \sum_j = \sum_{\boldsymbol x\epsilon X_j}(\boldsymbol x-u_j)(\boldsymbol x-u_j)^T(j=0,1)

uj​=Nj​1​xϵXj​∑​x(j=0,1),j∑​=xϵXj​∑​(x−uj​)(x−uj​)T(j=0,1)
​ 假设投影直线是向量

w

\boldsymbol w

w,对任意样本

x

i

\boldsymbol x_i

xi​,它在直线

w

w

w上的投影为

w

T

x

i

\boldsymbol w^Tx_i

wTxi​,两个类别的中心点

u

0

u_0

u0​, $u_1 $在直线

w

w

w 的投影分别为

w

T

u

0

\boldsymbol w^Tu_0

wTu0​ 、

w

T

u

1

\boldsymbol w^Tu_1

wTu1​。

​ LDA的目标是让两类别的数据中心间的距离

w

T

u

0

w

T

u

1

2

2

| \boldsymbol w^Tu_0 - \boldsymbol w^Tu_1 |^2_2

∥wTu0​−wTu1​∥22​ 尽量大,与此同时,希望同类样本投影点的协方差

w

T

0

w

\boldsymbol w^T \sum_0 \boldsymbol w

wT∑0​w、

w

T

1

w

\boldsymbol w^T \sum_1 \boldsymbol w

wT∑1​w 尽量小,最小化

w

T

0

w

w

T

1

w

\boldsymbol w^T \sum_0 \boldsymbol w - \boldsymbol w^T \sum_1 \boldsymbol w​

wT∑0​w−wT∑1​w​ 。
​ 定义
​ 类内散度矩阵

S

w

=

0

1

=

x

ϵ

X

0

(

x

u

0

)

(

x

u

0

)

T

x

ϵ

X

1

(

x

u

1

)

(

x

u

1

)

T

S_w = \sum_0 + \sum_1 = \sum_{\boldsymbol x\epsilon X_0}(\boldsymbol x-u_0)(\boldsymbol x-u_0)^T + \sum_{\boldsymbol x\epsilon X_1}(\boldsymbol x-u_1)(\boldsymbol x-u_1)^T

Sw​=0∑​+1∑​=xϵX0​∑​(x−u0​)(x−u0​)T+xϵX1​∑​(x−u1​)(x−u1​)T
​ 类间散度矩阵

S

b

=

(

u

0

u

1

)

(

u

0

u

1

)

T

S_b = (u_0 - u_1)(u_0 - u_1)^T

Sb​=(u0​−u1​)(u0​−u1​)T

​ 据上分析,优化目标为

arg

max

w

J

(

w

)

=

w

T

u

0

w

T

u

1

2

2

w

T

0

w

w

T

1

w

=

w

T

(

u

0

u

1

)

(

u

0

u

1

)

T

w

w

T

(

0

1

)

w

=

w

T

S

b

w

w

T

S

w

w

\mathop{\arg\max}_\boldsymbol w J(\boldsymbol w) = \frac{| \boldsymbol w^Tu_0 - \boldsymbol w^Tu_1 |^2_2}{\boldsymbol w^T \sum_0\boldsymbol w + \boldsymbol w^T \sum_1\boldsymbol w} = \frac{\boldsymbol wT(u_0-u_1)(u_0-u_1)T\boldsymbol w}{\boldsymbol w^T(\sum_0 + \sum_1)\boldsymbol w} = \frac{\boldsymbol w^TS_b\boldsymbol w}{\boldsymbol w^TS_w\boldsymbol w}

argmaxw​J(w)=wT∑0​w+wT∑1​w∥wTu0​−wTu1​∥22​​=wT(∑0​+∑1​)wwT(u0​−u1​)(u0​−u1​)Tw​=wTSw​wwTSb​w​
​ 根据广义瑞利商的性质,矩阵

S

w

1

S

b

S^{-1}_{w} S_b

Sw−1​Sb​ 的最大特征值为

J

(

w

)

J(\boldsymbol w)

J(w) 的最大值,矩阵

S

w

1

S

b

S^{-1}_{w} S_b

Sw−1​Sb​ 的最大特征值对应的特征向量即为

w

\boldsymbol w

w。

LDA算法流程总结

LDA算法降维流程如下:

​ 输入:数据集

D

=

{

(

x

1

,

y

1

)

,

(

x

2

,

y

2

)

,

.

.

.

,

(

x

m

,

y

m

)

}

D = { (x_1,y_1),(x_2,y_2), … ,(x_m,y_m) }

D={(x1​,y1​),(x2​,y2​),…,(xm​,ym​)},其中样本

x

i

x_i

xi​ 是n维向量,

y

i

ϵ

{

C

1

,

C

2

,

.

.

.

,

C

k

}

y_i \epsilon {C_1, C_2, …, C_k}

yi​ϵ{C1​,C2​,…,Ck​},降维后的目标维度

d

d

d 。

​ 输出:降维后的数据集

D

\overline{D}

D 。

步骤:

  1. 计算类内散度矩阵

S

w

S_w

Sw​。
2. 计算类间散度矩阵

S

b

S_b​

Sb​​ 。
3. 计算矩阵

S

w

1

S

b

S^{-1}_wS_b​

Sw−1​Sb​​ 。
4. 计算矩阵

S

w

1

S

b

S^{-1}_wS_b

Sw−1​Sb​ 的最大的 d 个特征值。
5. 计算 d 个特征值对应的 d 个特征向量,记投影矩阵为 W 。
6. 转化样本集的每个样本,得到新样本

P

i

=

W

T

x

i

P_i = W^Tx_i​

Pi​=WTxi​​ 。
7. 输出新样本集

D

=

{

(

p

1

,

y

1

)

,

(

p

2

,

y

2

)

,

.

.

.

,

(

p

m

,

y

m

)

}

\overline{D} = { (p_1,y_1),(p_2,y_2),…,(p_m,y_m) }​

D={(p1​,y1​),(p2​,y2​),…,(pm​,ym​)}​

LDA和PCA区别
异同点LDAPCA
相同点1. 两者均可以对数据进行降维;2. 两者在降维时均使用了矩阵特征分解的思想;3. 两者都假设数据符合高斯分布;
不同点有监督的降维方法;无监督的降维方法;
降维最多降到k-1维;降维多少没有限制;
可以用于降维,还可以用于分类;只用于降维;
选择分类性能最好的投影方向;选择样本点投影具有最大方差的方向;
更明确,更能反映样本间差异;目的较为模糊;
LDA优缺点
优缺点简要说明
优点1. 可以使用类别的先验知识;2. 以标签、类别衡量差异性的有监督降维方式,相对于PCA的模糊性,其目的更明确,更能反映样本间的差异;
缺点1. LDA不适合对非高斯分布样本进行降维;2. LDA降维最多降到分类数k-1维;3. LDA在样本分类信息依赖方差而不是均值时,降维效果不好;4. LDA可能过度拟合数据。

主成分分析(PCA)

主成分分析(PCA)思想总结
  1. PCA就是将高维的数据通过线性变换投影到低维空间上去。
  2. 投影思想:找出最能够代表原始数据的投影方法。被PCA降掉的那些维度只能是那些噪声或是冗余的数据。
  3. 去冗余:去除可以被其他向量代表的线性相关向量,这部分信息量是多余的。
  4. 去噪声,去除较小特征值对应的特征向量,特征值的大小反映了变换后在特征向量方向上变换的幅度,幅度越大,说明这个方向上的元素差异也越大,要保留。
  5. 对角化矩阵,寻找极大线性无关组,保留较大的特征值,去除较小特征值,组成一个投影矩阵,对原始样本矩阵进行投影,得到降维后的新样本矩阵。
  6. 完成PCA的关键是——协方差矩阵。协方差矩阵,能同时表现不同维度间的相关性以及各个维度上的方差。协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。
  7. 之所以对角化,因为对角化之后非对角上的元素都是0,达到去噪声的目的。对角化后的协方差矩阵,对角线上较小的新方差对应的就是那些该去掉的维度。所以我们只取那些含有较大能量(特征值)的维度,其余的就舍掉,即去冗余。
图解PCA核心思想

​ PCA可解决训练数据中存在数据特征过多或特征累赘的问题。核心思想是将m维特征映射到n维(n < m),这n维形成主元,是重构出来最能代表原始数据的正交特征。

​ 假设数据集是m个n维,

(

x

(

1

)

,

x

(

2

)

,


,

x

(

m

)

)

(\boldsymbol x^{(1)}, \boldsymbol x^{(2)}, \cdots, \boldsymbol x^{(m)})

(x(1),x(2),⋯,x(m))。如果

n

=

2

n=2

n=2,需要降维到

n

=

1

n'=1

n′=1,现在想找到某一维度方向代表这两个维度的数据。下图有

u

1

,

u

2

u_1, u_2

u1​,u2​两个向量方向,但是哪个向量才是我们所想要的,可以更好代表原始数据集的呢?

[外链图片转存失败(img-lA5YN1vc-1562980711002)(./img/ch2/2.34/1.png)]

从图可看出,

u

1

u_1

u1​比

u

2

u_2

u2​好,为什么呢?有以下两个主要评价指标:

  1. 样本点到这个直线的距离足够近。
  2. 样本点在这个直线上的投影能尽可能的分开。

如果我们需要降维的目标维数是其他任意维,则:

  1. 样本点到这个超平面的距离足够近。
  2. 样本点在这个超平面上的投影能尽可能的分开。
PCA算法推理

下面以基于最小投影距离为评价指标推理:

​ 假设数据集是m个n维,

(

x

(

1

)

,

x

(

2

)

,

.

.

.

,

x

(

m

)

)

(x^{(1)}, x{(2)},…,x{(m)})

(x(1),x(2),…,x(m)),且数据进行了中心化。经过投影变换得到新坐标为

w

1

,

w

2

,

.

.

.

,

w

n

{w_1,w_2,…,w_n}

w1​,w2​,…,wn​,其中

w

w

w 是标准正交基,即

w

2

=

1

| w |_2 = 1

∥w∥2​=1,

w

i

T

w

j

=

0

w^T_iw_j = 0

wiT​wj​=0。

​ 经过降维后,新坐标为

{

w

1

,

w

2

,

.

.

.

,

w

n

}

{ w_1,w_2,…,w_n }

{w1​,w2​,…,wn​},其中

n

n'

n′ 是降维后的目标维数。样本点

x

(

i

)

x^{(i)}

x(i) 在新坐标系下的投影为

z

(

i

)

=

(

z

1

(

i

)

,

z

2

(

i

)

,

.

.

.

,

z

n

(

i

)

)

z^{(i)} = \left(z^{(i)}_1, z^{(i)}_2, …, z^{(i)}_{n'} \right)

z(i)=(z1(i)​,z2(i)​,…,zn′(i)​),其中

z

j

(

i

)

=

w

j

T

x

(

i

)

z^{(i)}_j = w^T_j x^{(i)}

zj(i)​=wjT​x(i) 是

x

(

i

)

x^{(i)} ​

x(i)​ 在低维坐标系里第 j 维的坐标。

​ 如果用

z

(

i

)

z^{(i)}

z(i) 去恢复

x

(

i

)

x^{(i)}

x(i) ,则得到的恢复数据为

x

^

(

i

)

=

j

=

1

n

x

j

(

i

)

w

j

=

W

z

(

i

)

\widehat{x}^{(i)} = \sum^{n'}_{j=1} x^{(i)}_j w_j = Wz^{(i)}

x

(i)=∑j=1n′​xj(i)​wj​=Wz(i),其中

W

W

W为标准正交基组成的矩阵。

​ 考虑到整个样本集,样本点到这个超平面的距离足够近,目标变为最小化

i

=

1

m

x

^

(

i

)

x

(

i

)

2

2

\sum^m_{i=1} | \hat{x}^{(i)} - x^{(i)} |^2_2

∑i=1m​∥x^(i)−x(i)∥22​ 。对此式进行推理,可得:

i

=

1

m

x

^

(

i

)

x

(

i

)

2

2

=

i

=

1

m

W

z

(

i

)

x

(

i

)

2

2

=

i

=

1

m

(

W

z

(

i

)

)

T

(

W

z

(

i

)

)

2

i

=

1

m

(

W

z

(

i

)

)

T

x

(

i

)

i

=

1

m

(

x

(

i

)

)

T

x

(

i

)

=

i

=

1

m

(

z

(

i

)

)

T

(

z

(

i

)

)

2

i

=

1

m

(

z

(

i

)

)

T

x

(

i

)

i

=

1

m

(

x

(

i

)

)

T

x

(

i

)

=

i

=

1

m

(

z

(

i

)

)

T

(

z

(

i

)

)

i

=

1

m

(

x

(

i

)

)

T

x

(

i

)

=

t

r

(

W

T

(

i

=

1

m

x

(

i

)

(

x

(

i

)

)

T

)

W

)

i

=

1

m

(

x

(

i

)

)

T

x

(

i

)

=

t

r

(

W

T

X

X

T

W

)

i

=

1

m

(

x

(

i

)

)

T

x

(

i

)

\sum^m_{i=1} | \hat{x}^{(i)} - x^{(i)} |^2_2 = \sum^m_{i=1} | Wz^{(i)} - x^{(i)} |^2_2 \ = \sum^m_{i=1} \left( Wz^{(i)} \right)^T \left( Wz^{(i)} \right) - 2\sum^m_{i=1} \left( Wz^{(i)} \right)^T x^{(i)} + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \ = \sum^m_{i=1} \left( z^{(i)} \right)^T \left( z^{(i)} \right) - 2\sum^m_{i=1} \left( z^{(i)} \right)^T x^{(i)} + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \ = - \sum^m_{i=1} \left( z^{(i)} \right)^T \left( z^{(i)} \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \ = -tr \left( W^T \left( \sum^m_{i=1} x^{(i)} \left( x^{(i)} \right)^T \right)W \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \ = -tr \left( WTXXTW \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)}

i=1∑m​∥x^(i)−x(i)∥22​=i=1∑m​∥Wz(i)−x(i)∥22​=i=1∑m​(Wz(i))T(Wz(i))−2i=1∑m​(Wz(i))Tx(i)+i=1∑m​(x(i))Tx(i)=i=1∑m​(z(i))T(z(i))−2i=1∑m​(z(i))Tx(i)+i=1∑m​(x(i))Tx(i)=−i=1∑m​(z(i))T(z(i))+i=1∑m​(x(i))Tx(i)=−tr(WT(i=1∑m​x(i)(x(i))T)W)+i=1∑m​(x(i))Tx(i)=−tr(WTXXTW)+i=1∑m​(x(i))Tx(i)

​ 在推导过程中,分别用到了

x

(

i

)

=

W

z

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

(

i

)

=

i

=

1

m

(

z

(

i

)

)

T

(

z

(

i

)

)

2

i

=

1

m

(

z

(

i

)

)

T

x

(

i

)

i

=

1

m

(

x

(

i

)

)

T

x

(

i

)

=

i

=

1

m

(

z

(

i

)

)

T

(

z

(

i

)

)

i

=

1

m

(

x

(

i

)

)

T

x

(

i

)

=

t

r

(

W

T

(

i

=

1

m

x

(

i

)

(

x

(

i

)

)

T

)

W

)

i

=

1

m

(

x

(

i

)

)

T

x

(

i

)

=

t

r

(

W

T

X

X

T

W

)

i

=

1

m

(

x

(

i

)

)

T

x

(

i

)

\sum^m_{i=1} | \hat{x}^{(i)} - x^{(i)} |^2_2 = \sum^m_{i=1} | Wz^{(i)} - x^{(i)} |^2_2 \ = \sum^m_{i=1} \left( Wz^{(i)} \right)^T \left( Wz^{(i)} \right) - 2\sum^m_{i=1} \left( Wz^{(i)} \right)^T x^{(i)} + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \ = \sum^m_{i=1} \left( z^{(i)} \right)^T \left( z^{(i)} \right) - 2\sum^m_{i=1} \left( z^{(i)} \right)^T x^{(i)} + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \ = - \sum^m_{i=1} \left( z^{(i)} \right)^T \left( z^{(i)} \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \ = -tr \left( W^T \left( \sum^m_{i=1} x^{(i)} \left( x^{(i)} \right)^T \right)W \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \ = -tr \left( WTXXTW \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)}

i=1∑m​∥x^(i)−x(i)∥22​=i=1∑m​∥Wz(i)−x(i)∥22​=i=1∑m​(Wz(i))T(Wz(i))−2i=1∑m​(Wz(i))Tx(i)+i=1∑m​(x(i))Tx(i)=i=1∑m​(z(i))T(z(i))−2i=1∑m​(z(i))Tx(i)+i=1∑m​(x(i))Tx(i)=−i=1∑m​(z(i))T(z(i))+i=1∑m​(x(i))Tx(i)=−tr(WT(i=1∑m​x(i)(x(i))T)W)+i=1∑m​(x(i))Tx(i)=−tr(WTXXTW)+i=1∑m​(x(i))Tx(i)

​ 在推导过程中,分别用到了

x

(

i

)

=

W

z

[外链图片转存中…(img-gSstZkPO-1715816251610)]
[外链图片转存中…(img-dzuwwaH1-1715816251611)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值