Linear Discriminant Analysis(线性判别分类器)是对费舍尔的线性鉴别方法(FLD)的归纳,属于监督学习的方法。

LDA的基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。因此,它是一种有效的特征抽取方法。使用这种方法能够使投影后模式样本的类间散布矩阵最大,并且同时类内散布矩阵最小。就是说,它能够保证投影后模式样本在新的空间中有最小的类内距离和最大的类间距离,即模式在该空间中有最佳的可分离性。

预备知识

协方差与协方差矩阵

协方差

协方差分为随机变量的协方差和样本的协方差。

随机变量的协方差

跟数学期望、方差一样,是分布的一个总体参数。协方差是对两个随机变量联合分布线性相关程度的一种度量。两个随机变量越线性相关,协方差越大,完全线性无关,协方差为零。定义如下。

$$cov\left(X,Y\right)=E\left[\left(X-E\left[X\right])(Y-E\left[Y\right]\right)\right]$$

因为变量尺度不同,所以不能用若干协方差的大小作为相关性强弱的比较。因此引入相关系数,本质上是对协方差进行归一化。

$$\eta=\frac{cov\left(X,Y \right )}{\sqrt{var\left(X \right )\cdot var\left(Y \right )}}$$

取值范围[-1,1]。

样本的协方差

对于现有的m个样本,每个样本均具有n维属性,每一维属性我们都可以将其看作是一个随机变量。每一个样本$x_j =\left[x_{1j} ,...,x_{nj} \right ]$。那么我们就可以考察样本集中,两个随机变量(两属性)间的线性关系。计算和随机变量的协方差一致。

$$q_{ab}=\frac{\sum_{j=1}^{m}\left(x_{aj}-\bar{x}_a \right )\left(x_{bj}-\bar{x}_b \right )}{m-1}$$

因为在这里我们只有样本,随机变量的数学期望未知,用样本均值代替,所以自由度减一得到m-1。

协方差矩阵

多维随机变量的协方差矩阵

考虑多维随机变量,那么原先的两变量之间的协方差就可以扩展为多维随机变量中任意两变量之间的协方差,并进一步构造成协方差矩阵。

$$\Sigma_{i,j}=cov\left(X_i,X_j \right )\\ \Sigma=E\left[\left(X-E\left[X \right ] \right )\left(X-E\left[Y \right ] \right )^T \right ]$$

此时对角线上是各维度的方差,其余均为两维度之间的协方差。

一般来说,我们希望各维度之间可以相互比较,换言之需要对样本进行归一化。

那么定义

$$z_{j\cdot}=\frac{x_{i\cdot}-\bar{x}_i}{\sigma_i}$$

$\bar{x}_i$表示样本整体在维度i的均值,$\sigma_i$表示维度i上的方差。

$$\hat{\Sigma}=\frac{1}{m-1}\sum_{j=1}^m{z_{\cdot j}{z_{\cdot j}}^T}$$

这样矩阵内的元素就具有可比性!

散度矩阵

散度矩阵表示为

$$S_i=\sum_{j=1}^m{z_{\cdot j}{z_{\cdot j}}^T}$$

也就是不除以自由度的协方差矩阵。

类内散度矩阵$S_W=S_i+S_j$

类间散度矩阵$S_B=\left(\vec{\mu_i}-\vec{\mu_j} \right )\left(\vec{\mu_i}-\vec{\mu_j} \right )^T$

算法解释

LDA本质上是要$\max\limits_w {\frac{w^TS_Bw}{w^TS_Ww}}$,将类内散度矩阵和类间散度投影到直线上,并得出到原点的距离。选择合适的向量使得比值最大。

求解

$$J\left(w \right )=\frac{w^TS_Bw}{w^TS_Ww}$$

因为分子分母都为w的二次项,那么与的w模长无关。

不妨设

$$w^TS_Ww$$

可以得出

$$\min \limits_{w}{-w^TS_Bw}\\s.t.\quad w^TS_Ww=1$$

可以运用拉格朗日乘子法

$$l\left(w,\lambda \right )=-w^TS_Bw+\lambda\left(w^TS_Ww-1 \right )\\\frac{\partial l\left(w,\lambda \right )}{\partial w}=-\left(S_B+{S_B}^T\right)w+\lambda\left(S_W+{S_W}^T \right )w=0\\S_Bw=\lambda S_Ww$$

注意到$S_B=\left(\vec{\mu_i}-\vec{\mu_j}\right)\left(\vec{\mu_i}-\vec{\mu_j}\right)^T$

$$\left(\vec{\mu_i}-\vec{\mu_j}\right)\left(\vec{\mu_i}-\vec{\mu_j}\right)^Tw=\lambda S_Ww$$

$\left(\vec{\mu_i}-\vec{\mu_j}\right)^Tw$得到的是一个标量,$\lambda$也是标量,所以

$$w\propto {S_W}^{-1}\left(\vec{\mu_i}-\vec{\mu_j} \right )$$

因为我们只需要知道w的方向,所以具有原始样本的均值和方差就可以得到答案。

LDA(线性判别分类器)学习笔记的更多相关文章

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

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

  2. BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4436  Solved: 1957[Submit][Status][Discuss ...

  3. 高斯消元 & 线性基【学习笔记】

    高斯消元 & 线性基 本来说不写了,但还是写点吧 [update 2017-02-18]现在发现真的有好多需要思考的地方,网上很多代码感觉都是错误的,虽然题目通过了 [update 2017- ...

  4. 「线性基」学习笔记and乱口胡总结

    还以为是什么非常高大上的东西花了1h不到就学好了 线性基 线性基可以在\(O(nlogx)\)的时间内计算出\(n\)个数的最大异或和(不需要相邻). 上述中\(x\)表示的最大的数. 如何实现 定义 ...

  5. 最长子序列(线性DP)学习笔记

    子序列和子串不一样.子串要求必须连续,而子序列不需要连续. 比如说\(\{a_1,a_2\dots a_n\}\),他的子串就是\(\{a_i,a_{i+1},\dots, a_j|1\leq i\l ...

  6. UI设计学习笔记(7-12)

    UI学习笔记(7)--扁平化图标 认识扁平化 Flat Design 抛弃传统的渐变.阴影.高光等拟真视觉效果,打造看上去更平的界面.(颜色.形状) 扁平化图标有什么优缺点 优点: 简约不简单.有新鲜 ...

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

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

  8. LDA主题模型学习笔记5:C源代码理解

    1.说明 本文对LDA原始论文的作者所提供的C代码中LDA的主要逻辑部分做凝视,原代码可在这里下载到:https://github.com/Blei-Lab/lda-c 这份代码实现论文<Lat ...

  9. UFLDL深度学习笔记 (五)自编码线性解码器

    UFLDL深度学习笔记 (五)自编码线性解码器 1. 基本问题 在第一篇 UFLDL深度学习笔记 (一)基本知识与稀疏自编码中讨论了激活函数为\(sigmoid\)函数的系数自编码网络,本文要讨论&q ...

随机推荐

  1. JSON错误

    今天遇到了json转换的错误. 原因:少导入了jar包 解决方法把所有的jar导入

  2. Linux定时任务调用sh文件

    1.编写sh文件 创建:vi test.sh 写入:date >> /xiaol/data.txt 2.默认创建的这个sh问件是没有执行权限的,修改权限 chmod 777 test.sh ...

  3. HashMap 源码分析

    static final int DEFAULT_INITIAL_CAPACITY = 16;  默认容量 static final int MAXIMUM_CAPACITY = 1073741824 ...

  4. log4j2 标签解析

    根节点Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers. status用来指定log4j本身的打印日志的级别. mo ...

  5. html5 css练习,弹性三栏布局

    *{    margin: 0;    padding: 0;} body,html{    width: 100%;    height: 100%;        font: bold 24px ...

  6. sitecore开发入门之如何在代码中获取SITECORE图像URL

    using Sitecore; using Sitecore.Data.Items; using Sitecore.Resources.Media; public string GetUrl() { ...

  7. Dynamics CRM On-Premise V9安装手记

    下载地址: https://download.microsoft.com/download/A/D/D/ADDD6898-4EFA-46FA-80B6-6FE9A3CDED63/CRM9.0-Serv ...

  8. Unity用Vuforia做AR实现脱卡效果

    这篇不错,记录下,博主不让转载 http://blog.csdn.net/qwe161819/article/details/76107105

  9. docker tmpfs 的测试结果

    创建 2G 内存的 Container 使用tmpfs挂载到 /tmp docker run --rm -it --memory 2g --mount type=tmpfs,destination=/ ...

  10. 用Python实现一个词频统计(词云+图)

    第一步:首先需要安装工具python 第二步:在电脑cmd后台下载安装如下工具: (有一些是安装好python电脑自带有哦) 有一些会出现一种情况就是安装不了词云展示库 有下面解决方法,需看请复制链接 ...