LDA 降维原理

前面对 LDA 作为作为分类器 有详细推导, 其核心就是 贝叶斯公式, 已知全概率, 求(条件概率)最大先验概率, 类似的问题. 而 LDA 如果作为 降维 的原理是:

a. 将带上标签的数据点, 通过投影, 投影到维度更低的空间中,

b. 使得投影后的点, 同类别会"内聚", 不同类别会 "分隔开",

类似写代码的"高内聚, 低耦合". 注意是要 带标签的点, 不同于 PCA 值考虑 X 降维, y 不考虑. 直观上来理解还是比较容易的, 但怎么去确定投影方向, 这就不好弄了.

假设, 先计算不同类别数据的中心 (这里假设2维, 方便可视化). 如果将数据直接投影到连接中心的向量 w 上(降维), 会发现有重叠, (脑补吧, 不想贴图).

最近我有个奇怪的观点: 理解一个抽象概念, "数形结合" 在某种程度上, 反而不利于直观理解.

比如, 多维下, 是很难可视化的, 而此时的脑图像, 可能还是停留在 2维度, 因而总感觉, "很抽象"

其实,

我认为,

最好理解抽象概念的方式

是

回到抽象概念自身, 从规则, 从内部结构, 从定义去理解, "而非画个图", 低维可以, 高维凉凉了.

比如, 理解 "向量空间", 就不要画什么坐标性, 箭头之类的, "技术层", 多花心思去理解内部结构 加和数乘, 这样的 思想层.

这样就会导致,原来可以线性分割的的数据, 降维后无法分割了. 因此, 类别中心点连线作为 投影线, 是不行的哦.

那么, 最优的投影线要如何确定, 这就是接下来的求解问题

LDA 降维推导

Fisher's 线性降维

  • 不同类别, 降维后, 类与类之间, 差异大
  • 同一类别, 降维后, 类中数据点, 差异小

自然语言是很好描述的, 如何转为数学语言, 这其实是很有趣味的问题, 突然想到一句很有感触的一句话:

"相比于解决问题, 最难的其实是发现(定义)问题"

不扯了, 直接来吧, 宝贝~ 假设 样本 X 有大 K 个类别, 各个类别(矩阵)的中心 (均值向量) 为 \(\mu_1, \mu_2, ...\mu_k\)

首先,

来描述, 不同类别的 均值 和全局的 均值 之间的 "差异总量" 有多大, 得到一个矩阵

\(S_B = \sum \limits_{k=1}^K(\mu_k - \bar x) (\mu_k - \bar x)^T\)

都是列向量哦, 最后得到一个矩阵, B: 类别间 Between

然后,

来描述, 同一类别中, 各样本点 与 该类的 "中心点" , "距离" 有多大, 同样得到一个矩阵

\(\sum \limits_{i =1}^{n} (x_i - \mu_k)(x_i -\mu_k)^T\)

注: 我这里 n 表示 类别为 k 的 样本数, 是动态变化的哈,非 总体样本数哈

考虑所有类别, 各类之间的样本点差异 "总量", 就再 外层对 k求和, 即:

\(S_W = \sum \limits _{i=1}^K \sum \limits_{i =1}^n (x_i - \mu_k)(x_i -\mu_k)^T\)

W: 同类间的样本点, Within

目标: 其实就是想 找到一个 最优的 投影方向, 即一个向量

又理解了一波向量: 大小即其长度(模), 方向即, 与基坐标原点的连线方向. 二维下即可用 与某轴 的 "夹角" 衡量

\(max _w \ J(w) = \frac {w'S_Bw}{w'S_Ww}\)

\(w'\) 也表示 \(w^T\). 对应向量/矩阵来说, ' 表示转置, 对应函数来说表示 求导

w 的不同数值, 即表示了不同方向的 投影线 (向量的方向)

"组间大,组内小" , 即上式的 分母要尽可能大,分子相对下, 则总体是以最大化问题 ,关于投影线(向量) w 的函数 J(w).

w 向量是可以任意取值的, 为了尽快求解, 可以对 w 做一个条件约束:

\(w'S_ww =1\)

为啥要分子 为1 而不出2,3,4 呢? 其实也可以, 1感觉比较好看 嗯.

为啥能对w约束? \(S_w\) 是已知的嘛, 如果 \(S_w\) 很大, 那 w 必然很小, 瞧, 约束上了

约束的是在干啥? 控制 w 的大致方向范围, 不要人生, 没有方向

转为带约束的最小值问题 ( - 最大 = 最小 )

\(min_w \ J(w) =- \frac{1}{2} w'S_Bw\)

\(s.t. \ w'S_ww = 1\)

引入拉格朗日函数

\(L(w) = - \frac {1}{2} w'S_B w+ \frac {1}{2} \lambda (w'S_ww-1)\)

后面的 \(\frac {1}{2}\) 是为了求导后形式更好看一点, 没啥实际意义

对 w 求偏导, 让其值 为0

\(\nabla_w = 0 = -S_Bw + \lambda S_ww\)

矩阵求导, 网查的, 具体也不太理解和会

即: \(S_Bw = \lambda S_ww\)

等号两边同时 左乘 \(S_w^{-1}\) 即:

\(S_w^{-1} S_B w = \lambda w\)

兄弟们, 这个形式, 形如 "\(Ax = \lambda x\)" 不就是特征分解嘛 (方向平行, 做拉伸变换对向量), 严格来说,

如果 \(S_w^{-1} S_B\) 是对称矩阵, 则 求解 w 则是一个特征分解问题, 但如果 不是对称矩阵呢, 问题就变为了广义特征向量问题了哦.

由于 \(S_B\) 是正交正定矩阵, (先不证明了哈) , 对 \(S_B\) 做特征分解, 可得:

S_B 跟协方差差不多的, 这里证明下协方差是半正定的

协方差阵定义为: \(\Sigma = E[(X-\mu)(X-\mu)^T]\)

只需证明对于任意非零向量 z, 满足:

\(z^T\Sigma z \ge 0 即可\)

\(z'\Sigma z = z' E[(X-\mu)(X-\mu)^T]z\)

\(= E[z'(X-\mu)(z'(X-\mu))^T]\)

\(=E[z'(X-\mu)]^2 \ge 0\)

期望必然是非负, 即证协方差是 半正定

\(S_B = S \land S^{-1} = Q \land Q'\)

矩阵性质: if X 是正交的

\(S_B ^{\frac {1}{2}} = Q \land ^{\frac {1}{2}}Q'\), \(\land\) 是一个对角阵, 就是只有主对角线有值的矩阵.

因此,

\(S_B = S_B^{\frac {1}{2}} S_B^{\frac {1}{2}}\)

现在, 再定义 \(v = S_B ^{\frac{1}{2}} w\) 则对于之前的等式: \(S_w^{-1} S_B w = \lambda w\) 可写为

\(S_w ^{-1} S_B^{\frac {1}{2}} S_B^{\frac {1}{2}} w = \lambda w\)

将 v 代入得:

\(S_w^{-1} S_B ^{\frac {1}{2}} v = \lambda w\)

再两边 左乘 \(S_B^{\frac {1}{2}}\) 得:

\(S_B^{\frac {1}{2}} S_w^{-1} S_B ^{\frac {1}{2}} v = S_B^{\frac {1}{2}} \lambda w = \lambda v\)

简写一波, 令 \(A = S_B^{\frac {1}{2}} S_w^{-1} S_B ^{\frac {1}{2}}\) 其实 A 也是正定矩阵, 此时的形式, 又变为咱熟悉的形式:

\(Av = \lambda v, \ 其中 v = S_B^{\frac {1}{2}}w\)

为啥要弄一通转换? 就是为了求解 w 啊

然后对 A 进行特征分解, 找到 \(\lambda_k 和 v_k\) 后, (回得到很多配对的 \(\lambda_k, v_k\) 取几个大的不就行了吗)

对应的求解 w, 即找到了最佳的投影方向, 能满足 "高内聚, 低耦合"

\(w = (S_B^{\frac {1}{2}})^{-1}v_k\)

LDA vs PCA

  • PCA 的 投影线(方向) 是 使得数据点在只上的方差最大, 该投影线的垂直方向可作为类分割线, 不关注标签值

  • LDA 的 投影线(方向) 是 使得不同标签的点, 类别之间距离大, 同类之间的点距离小, 标签必须考虑

小结

连推了这两波LDA, 嗯...

作为, 线性分类器, 其核心思想, 就是 贝叶斯

作为, 降维工具, 其原理就是写代码风格的 高内聚, 低耦合

想想, 接下来, 扩展一波, 嗯 综合 LDA 先升维, 在分类 + 核函数技巧 , 琢磨一波....

LDA-作为线性判别 降维 推导的更多相关文章

  1. LDA(线性判别分类器)学习笔记

    Linear Discriminant Analysis(线性判别分类器)是对费舍尔的线性鉴别方法(FLD)的归纳,属于监督学习的方法. LDA的基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达 ...

  2. LDA-作为线性判别 分类器 推导

    LDA, 即 Linear Discriminant Analysis, 中文翻译为, 线性判别分析. 比较有趣的一点是:LDA 既可以直接用作分类算法, 也可作为特征降维的方法. 给人感觉, 这是将 ...

  3. 机器学习降维方法概括, LASSO参数缩减、主成分分析PCA、小波分析、线性判别LDA、拉普拉斯映射、深度学习SparseAutoEncoder、矩阵奇异值分解SVD、LLE局部线性嵌入、Isomap等距映射

    机器学习降维方法概括   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014772862/article/details/52335970 最近 ...

  4. PRML读书会第四章 Linear Models for Classification(贝叶斯marginalization、Fisher线性判别、感知机、概率生成和判别模型、逻辑回归)

    主讲人 planktonli planktonli(1027753147) 19:52:28 现在我们就开始讲第四章,第四章的内容是关于 线性分类模型,主要内容有四点:1) Fisher准则的分类,以 ...

  5. 【LDA】线性判别式分析

    1. LDA是什么 线性判别式分析(Linear Discriminant Analysis),简称为LDA.也称为Fisher线性判别(Fisher Linear Discriminant,FLD) ...

  6. 线性SVM的推导

    线性SVM算法的一般过程 线性SVM的推导 超平面方程 SVM是用来分类的.给定一系列输入数据(n维向量),需要找到一个切分界线(n-1维的超平面),这里假定数据是线性可分的.比如,二维数据的超平面是 ...

  7. 【线性判别】Fisher线性判别(转)

    今天读paper遇到了Fisher线性判别的变体, 所以来学习一下, 所以到时候一定要把PRMl刷一遍呀 以下两篇论文一起阅读比较好: 论文1: https://blog.csdn.net/Rainb ...

  8. 线性判别分析(LDA), 主成分分析(PCA)及其推导【转】

    前言: 如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了. 谈到LDA,就不得不谈谈PCA,PCA ...

  9. 线性判别函数-Fisher 线性判别

    这是我在上模式识别课程时的内容,也有参考这里. 线性判别函数的基本概念 判别函数为线性的情况的一般表达式 式中x是d 维特征向量,又称样本向量, 称为权向量, 分别表示为 是个常数,称为阈值权. 设样 ...

随机推荐

  1. centos虚拟机 与主机同步时间

    同步系统时间: yum install ntp ntpdate cn.pool.ntp.org ntpdate 0.centos.pool.ntp.org rm /etc/localtime ln - ...

  2. 【oracle】lpad函数 作用(填充)

  3. 【oracle】迁表结构和数据

    背景:把一些表和数据从某库迁到另一个库 1.命令框: exp yktsh/yktsh_2019@orcl30 file=d:\yktsh20191201.dmp log=d:\daochu; exp ...

  4. [LeetCode] 190. Reverse Bits 颠倒二进制位

    Reverse bits of a given 32 bits unsigned integer. Example 1: Input: 00000010100101000001111010011100 ...

  5. Ubuntu安装支持PCL、LAS的CloudCompare

    git clone --recursive https://github.com/cloudcompare/trunk.git cd trunk mkdir build cd build cmake ...

  6. pytorch 查看中间变量的梯度

    pytorch 为了节省显存,在反向传播的过程中只针对计算图中的叶子结点(leaf variable)保留了梯度值(gradient).但对于开发者来说,有时我们希望探测某些中间变量(intermed ...

  7. JS存取Cookies值

    这里对cookie进行了说明,也介绍了几个方法,但是我要取我存的cookie时取不到,他的方法只是针对存的  名字-值,不涉及键,所以自己写了个方法,来满足我的需求. 封装了简单存取Cookie: / ...

  8. Qt 绘制图表 - Qt Charts版

    一.前言 自从 Qt 发布以来,给广大跨平台界面研发人员带来了无数的福利.但是Qt自己却一直没有提供自带的图表库,这就使得 QWT.QCustomPlot 等第三方图表库有了巨大的生存空间,为了降低开 ...

  9. mac os 使用 from scipy.misc import imread ImportError: cannot import name 'imread'

    mac os 使用 from scipy.misc import imread ImportError: cannot import name 'imread' 问题1: 我原先安装了 pillow ...

  10. html 四种定位含义

    技术过段时间不用的话就会忘记,需要复习一下 1.static:默认值.没有定位,元素出现在正常的流中(忽略top,bottom,left,right或者z-index声明). 2.relative:生 ...