| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 机器学习: 线性判别分析(LDA) -> 正文阅读 |
|
[人工智能]机器学习: 线性判别分析(LDA) |
一、简介线性判别分析( Linear Discriminant Analysis,简称LDA)是一种经典的线性学习方法,在二分类问题上因为最早由 Fisher,1936提出,亦称“ Fisher判别分析。严格来说LDA与Fisher判别分析稍有不同。前者假设了各类样本的协方差矩阵相同且满秩。 LDA 的思想非常朴素: 给定训练样法将样例投影到一条使得同 样例的投影点尽可能接近、 异类样例投影点尽可能能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定样本的类别. 如下图所示。 若此时我们使用PCA,我们会得到不可分状况,就是蓝色与绿色样本点都混在一起,详见主成分分析(PCA)。 一、两类LDA的情况可以看见,跟主成分分析(PCA) 一样,LDA事实上也可以看作一种降维方法。那PCA和LDA有什么区别呢?
我们首先讨论数据集只有两种类别的情况,然后将其推广到多类别的情况。 我们令 X i , μ i , ∑ i X_i,\mu _i, \sum _i Xi?,μi?,∑i?分别表示第i类样本的集合,均值向量和协方差矩阵。设样本的维度是d,我们使用 w ∈ R d × 1 \boldsymbol{w} \in R^{d\times 1} w∈Rd×1将样本映射到一维空间(直线上)。 现在使同类样例的投影点尽可能接近,可以让同类样例投影点的协方差尽可能小(类比d=1时,样本方差越近则样本点约集中,现在d != 1, 需令其协方差尽可能小),也就是 w T Σ 0 w + w T Σ 1 w \boldsymbol{w}^{\mathrm{T}} \boldsymbol{\Sigma}_{0} \boldsymbol{w}+\boldsymbol{w}^{\mathrm{T}} \boldsymbol{\Sigma}_{1} \boldsymbol{w} wTΣ0?w+wTΣ1?w尽可能小(投影点的协方差可以将分量展开,可验证确实为此公式)。另外我们希望不同类的样本投影尽可能远离,可以让类中心之间的距离尽可能大,即 ∥ w T μ 0 ? w T μ 1 ∥ 2 2 \left\|\boldsymbol{w}^{\mathrm{T}} \boldsymbol{\mu}_{0}-\boldsymbol{w}^{\mathrm{T}} \boldsymbol{\mu}_{1}\right\|_{2}^{2} ∥∥?wTμ0??wTμ1?∥∥?22? 尽可能大.同时考虑二者,则可得到欲最大化的目标 J = ∥ w T μ 0 ? w T μ 1 ∥ 2 2 w T Σ 0 w + w T Σ 1 w = w T ( μ 0 ? μ 1 ) ( μ 0 ? μ 1 ) T w w T ( Σ 0 + Σ 1 ) w \begin{aligned} J &=\frac{\left\|\boldsymbol{w}^{\mathrm{T}} \boldsymbol{\mu}_{0}-\boldsymbol{w}^{\mathrm{T}} \boldsymbol{\mu}_{1}\right\|_{2}^{2}}{\boldsymbol{w}^{\mathrm{T}} \boldsymbol{\Sigma}_{0} \boldsymbol{w}+\boldsymbol{w}^{\mathrm{T}} \boldsymbol{\Sigma}_{1} \boldsymbol{w}} \\ &=\frac{\boldsymbol{w}^{\mathrm{T}}\left(\boldsymbol{\mu}_{0}-\boldsymbol{\mu}_{1}\right)\left(\boldsymbol{\mu}_{0}-\boldsymbol{\mu}_{1}\right)^{\mathrm{T}} \boldsymbol{w}}{\boldsymbol{w}^{\mathrm{T}}\left(\boldsymbol{\Sigma}_{0}+\boldsymbol{\Sigma}_{1}\right) \boldsymbol{w}} \end{aligned} J?=wTΣ0?w+wTΣ1?w∥∥?wTμ0??wTμ1?∥∥?22??=wT(Σ0?+Σ1?)wwT(μ0??μ1?)(μ0??μ1?)Tw?? 定义类内散度矩阵
S
w
\boldsymbol{S_w}
Sw?(w是指within-class scatter matrix) 以及类间散度矩阵 S b \boldsymbol{S_b} Sb?(b是指between-class scatter matrix) S b = ( μ 0 ? μ 1 ) ( μ 0 ? μ 1 ) T \mathbf{S}_{b}=\left(\boldsymbol{\mu}_{0}-\boldsymbol{\mu}_{1}\right)\left(\boldsymbol{\mu}_{0}-\boldsymbol{\mu}_{1}\right)^{\mathrm{T}} Sb?=(μ0??μ1?)(μ0??μ1?)T 因此我们的目标转化为以下形式,又称 S b , S w \boldsymbol{S_b,S_w} Sb?,Sw?的广义瑞利商(generalized Rayleigh quotient) J = w T S b w w T S w w J=\frac{\boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{b} \boldsymbol{w}}{\boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{w} \boldsymbol{w}} J=wTSw?wwTSb?w? 因为上式中分子分母都是关于 w \boldsymbol{w} w的二次型,所以目标值域 w \boldsymbol{w} w的方向相关。我们令 w T S w w \mathrm{w^T}\mathbf{S}_{w} \boldsymbol{w} wTSw?w,此时可以使用拉格朗日乘子法求 w \boldsymbol{w} w,如下所示: min ? w ? w T S b w ?s.t.? w T S w w = 1 \begin{array}{ll} \min _{w} & -\boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{b} \boldsymbol{w} \\ \text { s.t. } & \boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{w} \boldsymbol{w}=1 \end{array} minw??s.t.???wTSb?wwTSw?w=1? S b w = λ S w w \mathbf{S}_{b} \boldsymbol{w}=\lambda \mathbf{S}_{w} \boldsymbol{w} Sb?w=λSw?w 此处求解待补充,建议查看《南瓜书PumpkinBook》 一、多类LDA的情况现在我们将其推广到多类的情形,并且讨论不仅仅时映射到一维空间的情况(即降维)。 设类别的数目为N,且第i类示例数为 m i m_i mi?,总样本数量为m。由于此时存在多个类,我们不能再用类均值投影点的差值使得类中心之间的距离尽可能大。此时转换一个思路,如果说我们的映射能够使得所有样本点之间都尽量的远离(也就是全局的协方差尽可能大),但类内的样本点都尽可能大靠拢(也就是类内样本点的协方差尽可能小),那么此时就相当于类与类之间的样本点会远离(否则全局协方差不可能是大的)。 因此,我们定义全局散度矩阵 S t = ∑ i = 1 m ( x i ? μ ) ( x i ? μ ) T \begin{aligned} \mathbf{S}_{t} &=\sum_{i=1}^{m}\left(\boldsymbol{x}_{i}-\boldsymbol{\mu}\right)\left(\boldsymbol{x}_{i}-\boldsymbol{\mu}\right)^{\mathrm{T}} \end{aligned} St??=i=1∑m?(xi??μ)(xi??μ)T? 其中 μ \mu μ是所有样本的均值向量。 类内矩阵散度 S w \boldsymbol{S_w} Sw?跟原来的定义一致,原来是两个,现在是N个。
S
w
=
∑
i
=
1
N
S
w
i
\mathbf{S}_{w}=\sum_{i=1}^{N} \mathbf{S}_{w_{i}}
Sw?=i=1∑N?Swi?? 由此推导的类间矩阵散度
S
b
\boldsymbol{S_b}
Sb?为 事实上,依照严格的协方差定义,应该是要在求和项前除以样本数,但周老师的书里面都没有除以样本数。但从目标公式来看,这并不影响 w \boldsymbol{w} w求解的准确性。但在有些资料里面类间散度矩阵定义为 ∑ i = 1 N ( μ i ? μ ) ( μ i ? μ ) T \sum_{i=1}^{N}(\boldsymbol\mu_i-\boldsymbol\mu)(\boldsymbol\mu_i-\boldsymbol\mu)^{\mathrm{T}} i=1∑N?(μi??μ)(μi??μ)T 三、LDA用于降维上面的情况都是使用 w \boldsymbol{w} w将样本映射到一维空间。也就是把样本直接降到了一维。 我们看到在以下公式中, w \boldsymbol{w} w其实是可看成矩阵 S w ? 1 S b \mathbf{S}_{w}^{-1} \mathbf{S}_{b} Sw?1?Sb?的最大特征向量,而对于 S w ? 1 S b ∈ R d × d \mathbf{S}_{w}^{-1} \mathbf{S}_{b} \in R^{d\times d} Sw?1?Sb?∈Rd×d,其特征向量不止一个。 因此,若设 W = ( w 1 , w 2 , … , w i , … , w N ? 1 ) ∈ R d × ( N ? 1 ) \mathbf{W}=\left(\boldsymbol{w}_{1}, \boldsymbol{w}_{2}, \ldots, \boldsymbol{w}_{i}, \ldots, \boldsymbol{w}_{N-1}\right) \in \mathbb{R}^{d \times(N-1)} W=(w1?,w2?,…,wi?,…,wN?1?)∈Rd×(N?1) 那么我们有 { tr ? ( W T S b W ) = ∑ i = 1 N ? 1 w i T S b w i tr ? ( W T S w W ) = ∑ i = 1 N ? 1 w i T S w w i \left\{\begin{aligned} \operatorname{tr}\left(\mathbf{W}^{\mathrm{T}} \mathbf{S}_{b} \mathbf{W}\right) &=\sum_{i=1}^{N-1} \boldsymbol{w}_{i}^{\mathrm{T}} \mathbf{S}_{b} \boldsymbol{w}_{i} \\ \operatorname{tr}\left(\mathbf{W}^{\mathrm{T}} \mathbf{S}_{w} \mathbf{W}\right) &=\sum_{i=1}^{N-1} \boldsymbol{w}_{i}^{\mathrm{T}} \mathbf{S}_{w} \boldsymbol{w}_{i} \end{aligned}\right. ??????????????tr(WTSb?W)tr(WTSw?W)?=i=1∑N?1?wiT?Sb?wi?=i=1∑N?1?wiT?Sw?wi?? 同样地,我们希望这些映射仍能满足类间距离尽可能大,类内距离尽可能小,因此有 max ? W ∑ i = 1 N ? 1 w i T S b w i ∑ i = 1 N ? 1 w i T S w w i \max \limits_{\mathbf{W}}\cfrac{ \sum_{i=1}^{N-1}\boldsymbol w_i^{\mathrm{T}}\mathbf{S}b \boldsymbol w_i}{\sum_{i=1}^{N-1}\boldsymbol w_i^{\mathrm{T}}\mathbf{S}_w \boldsymbol w_i} Wmax?∑i=1N?1?wiT?Sw?wi?∑i=1N?1?wiT?Sbwi?? 也就是 此时仍根据拉格朗日乘子法求解 W \boldsymbol{W} W的闭式解则是 S w ? 1 S b \mathbf{S}_{w}^{-1} \mathbf{S}_{b} Sw?1?Sb?的N-1个最大广义特征值所对应的特征向量组成的矩阵.(为什么这里是N-1个仍待探究) 问题: S w ? 1 \mathbf{S}_{w}^{-1} Sw?1?并不总是存在的 在实践中, S w ? 1 \mathbf{S}_{w}^{-1} Sw?1?通常是退化的,比如数据是具有大维度d的图像向量,而数据集的大小小于d。 此时我们通常先对数据进行一个PCA,来降低数据的维度。
四、PCA和LDA的区别(1)当训练集较小时,PCA的表现优于LDA。 参考资料[1] 《机器学习》周志华 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 2:41:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |