线性判别分析lda c语言,线性判别分析 Linear Discriminant Analysis,LDA

线性判别分类器由向量$w$和偏差项$b$构成。给定样例$x$,其按照如下规则预测获得类别标记$y$,即

$y=sign(w^Tx+b)$

后面统一使用小写表示列向量,转置表示行向量。

分类过程分为如下两步:首先,使用权重向量w将样本空间投影到直线上去

然后,寻找直线上一个点把正样本和负样本分开。

为了寻找最有的线性分类器,即$w$和$b$,一个经典的学习算法是线性判别分析(Fisher's Linear Discriminant Analysis,LDA)。

简要来说,LDA的基本想法是使不同的样本尽量原理,使同类样本尽量靠近。

这一目标可以通过扩大不同类样本的类中心距离,同时缩小每个类的类内方差来实现。

在一个二分类数据集上,分别记所有正样本的的均值为$\\mu_+$,协方差矩阵为$\\Sigma_+$;所有负样本的的均值为$\\mu_-$,协方差矩阵为$\\Sigma_-$。

类间距离

投影后的类中心间距离为正类中心的投影点值减去负类投影点值:

$$S_B(w)=(w^T\mu_+-w^T\mu_-)^2$$

类内距离

同时,类内方差可写为:

$$S_W(w)=\frac{\sum_x(w^Tx_i-w^T\mu_+)^2+\sum_x(w^Tx_i-w^T\mu_-)^2}{n-1}$$

$$=\frac{\sum_x(w^T(x_i-\mu_+))^2+\sum_x(w^T(x_i-\mu_-))^2}{n-1}$$

$$=\frac{\sum_xw^T(x_i-\mu_+)(w^T(x_i-\mu_+))^T+\sum_xw^T(x_i-\mu_-)(w^T(x_i-\mu_-))^T}{n-1}$$

$$=\frac{w^T\sum_x(x_i-\mu_+)(x_i-\mu_+)^Tw+w^T\sum_x(x_i-\mu_-)(x_i-\mu_-)^Tw}{n-1}$$

其中

$$\frac{\sum_x(x_i-\mu_+)(x_i-\mu_+)^T}{n-1} = \Sigma_+$$

是正类的协方差矩阵,注意

$$x(x_i-\mu_+)$$

是列向量,所以协方差是一个长宽等于数据维度的方阵。

最后:

$$S_W(w)=w^T\Sigma_+w+w^T\Sigma_-w$$

优化目标

线性判别式的总目标就是最大化类间距离,最小化类内方差,类似于聚类:

$$ \mathop{\arg\max}\limits_{w} J(w) = \frac{S_B(w)}{S_W(w)}$$

$$=\frac{(w^T\mu_+-w^T\mu_-)^2}{w^T\Sigma_+w+w^T\Sigma_-w}$$

$$= \frac{w^T(\mu_+-\mu_-)(w^T(\mu_+-\mu_-))^T}{w^T(\Sigma_+-\Sigma_-)w}$$

$$= \frac{w^T(\mu_+-\mu_-)(\mu_+-\mu_-)^Tw}{w^T(\Sigma_+-\Sigma_-)w}$$

看到这个形式,我们根据上一篇文档的知识知道这个可以使用广义瑞利商来求极大值。

广义瑞利商

广义瑞利商是指这样的函数$𝑅(𝐴,𝐵,𝑥)$:

$$R(A,B,x) = \cfrac{X^{H}Ax}{X^{H}Bx}$$

其中𝑥为非零向量,而𝐴,𝐵为$𝑛×𝑛$的Hermitan矩阵。𝐵为正定矩阵。

$$A=(\mu_+-\mu_-)(\mu_+-\mu_-)^T$$

$$B= \Sigma_+-\Sigma_- $$

$$ \mathop{\arg\max}\limits_{w} J(w) = \frac{w^TAw}{w^TBw}$$

这个就很广义瑞利商了。

至于w的值,使用拉格朗日乘子法可以求解得到:

$$B^{-1}Aw = \lambda w$$

$$B^{-1}(\mu_+-\mu_-)(\mu_+-\mu_-)^Tw = \lambda w$$

由于

$$(\mu_+-\mu_-)^Tw$$

是行向量乘列向量,所以结果是一个标量,

那我们知道:

$$B^{-1}(\mu_+-\mu_-) \propto \lambda w$$

$$(\Sigma_+-\Sigma_-)^{-1}(\mu_+-\mu_-) \propto w$$

由于w我们只关注方向而不是长度,所以可以认为:

$$w_{best} =(\Sigma_+-\Sigma_-)^{-1}(\mu_+-\mu_-)$$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值