LDA(线性判别分类器)学习笔记
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(线性判别分类器)学习笔记的更多相关文章
- LDA-作为线性判别 分类器 推导
LDA, 即 Linear Discriminant Analysis, 中文翻译为, 线性判别分析. 比较有趣的一点是:LDA 既可以直接用作分类算法, 也可作为特征降维的方法. 给人感觉, 这是将 ...
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
- 高斯消元 & 线性基【学习笔记】
高斯消元 & 线性基 本来说不写了,但还是写点吧 [update 2017-02-18]现在发现真的有好多需要思考的地方,网上很多代码感觉都是错误的,虽然题目通过了 [update 2017- ...
- 「线性基」学习笔记and乱口胡总结
还以为是什么非常高大上的东西花了1h不到就学好了 线性基 线性基可以在\(O(nlogx)\)的时间内计算出\(n\)个数的最大异或和(不需要相邻). 上述中\(x\)表示的最大的数. 如何实现 定义 ...
- 最长子序列(线性DP)学习笔记
子序列和子串不一样.子串要求必须连续,而子序列不需要连续. 比如说\(\{a_1,a_2\dots a_n\}\),他的子串就是\(\{a_i,a_{i+1},\dots, a_j|1\leq i\l ...
- UI设计学习笔记(7-12)
UI学习笔记(7)--扁平化图标 认识扁平化 Flat Design 抛弃传统的渐变.阴影.高光等拟真视觉效果,打造看上去更平的界面.(颜色.形状) 扁平化图标有什么优缺点 优点: 简约不简单.有新鲜 ...
- 机器学习降维方法概括, LASSO参数缩减、主成分分析PCA、小波分析、线性判别LDA、拉普拉斯映射、深度学习SparseAutoEncoder、矩阵奇异值分解SVD、LLE局部线性嵌入、Isomap等距映射
机器学习降维方法概括 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014772862/article/details/52335970 最近 ...
- LDA主题模型学习笔记5:C源代码理解
1.说明 本文对LDA原始论文的作者所提供的C代码中LDA的主要逻辑部分做凝视,原代码可在这里下载到:https://github.com/Blei-Lab/lda-c 这份代码实现论文<Lat ...
- UFLDL深度学习笔记 (五)自编码线性解码器
UFLDL深度学习笔记 (五)自编码线性解码器 1. 基本问题 在第一篇 UFLDL深度学习笔记 (一)基本知识与稀疏自编码中讨论了激活函数为\(sigmoid\)函数的系数自编码网络,本文要讨论&q ...
随机推荐
- VMware Workstation 14永久激活密钥
VMware Workstation是一款功能强大的桌面虚拟计算机软件,简单来说就是最强的中文虚拟机了,可以在桌面上运行不同的操作系统 VMware workstation 14永久激活密钥 : CG ...
- js 常用代码
//获取url中的参数 function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "= ...
- 小程序如何封装自定义组件(Toast)
1.创建和pages 同级的component目录新建一个myToast目录 例如: 2.myToast.wxml文件内容: <!-- 自定义toast组件 --> <!-- nam ...
- centos7安装配置jdk
① java -version 可以查看系统自带的openjdk版本信息 ② rpm -qa | grep java 查看系统自带的Java文件 ③ 卸载文件(noarch文件可以不用删除) -- ...
- opencv学习之路(33)、SIFT特征点提取(一)
一.简介 二.OpenCV中的SIFT算法接口 #include "opencv2/opencv.hpp" #include <opencv2/nonfree/nonfree ...
- requirejs官网
http://www.requirejs.cn/
- C#线程同步(2)- 临界区&Monitor
文章原始出处 http://xxinside.blogbus.com/logs/46740731.html 预备知识:C#线程同步(1)- 临界区&Lock 监视器(Monitor)的概念 可 ...
- 清北学堂北京大学冯哲神仙讲课day2
今天讲基础数据结构 首先讲(二叉搜索树) 保证左儿子小于右儿子,那么对于根节点来说.大于根节点的放到右子树递归,小于根节点的放在左子树 相等的呢?某大佬(老师)这么说: 删除的前提是找这个点在哪: 如 ...
- js三种弹出框的用法
https://blog.csdn.net/cui_angel/article/details/7784211 js中prompt()的用法
- 还原真实,javascript之预编译 / 预解析
今天在群里吹水时,有群友提出一个问题.我一看很简单,就立马给出了答案:因为存在变量提升,所以输出undefined.本以为无人反驳,可确招来口诛笔伐.作为写实派的我,一贯以来坚持真实是我的使命,岂能容 ...