zoukankan      html  css  js  c++  java
  • LDA(线性判别分类器)学习笔记

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

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

    预备知识

    协方差与协方差矩阵

    协方差

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

    随机变量的协方差

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

    $$covleft(X,Y ight)=Eleft[left(X-Eleft[X ight])(Y-Eleft[Y ight] ight) ight]$$

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

    $$eta=frac{covleft(X,Y ight )}{sqrt{varleft(X ight )cdot varleft(Y ight )}}$$

    取值范围[-1,1]。

    样本的协方差

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

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

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

    协方差矩阵

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

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

    $$Sigma_{i,j}=covleft(X_i,X_j ight )\ Sigma=Eleft[left(X-Eleft[X ight ] ight )left(X-Eleft[Y ight ] ight )^T ight ]$$

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

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

    那么定义

    $$z_{jcdot}=frac{x_{icdot}-ar{x}_i}{sigma_i}$$

    $ar{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} ight )left(vec{mu_i}-vec{mu_j} ight )^T$

    算法解释

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

    求解

    $$Jleft(w ight )=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$$

    可以运用拉格朗日乘子法

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

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

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

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

    $$wpropto {S_W}^{-1}left(vec{mu_i}-vec{mu_j} ight )$$

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

  • 相关阅读:
    tcp三次握手和四次挥手
    tcp/ip五层协议
    osi七层模型
    函数与模块间作用域的区别
    简易版学生选课系统
    用pathon实现计算器功能
    python三大神器之生成器
    python三大神器之迭代器
    用python实现购物车功能
    正则表达式用法简介
  • 原文地址:https://www.cnblogs.com/LukeStepByStep/p/10529706.html
Copyright © 2011-2022 走看看