基本原理:二分类问题。给定样例集,尽可能将样例投影在一条直线上,同类尽可能接近,异类尽可能远离。新样本,也是投影,然后根据位置确定类别。

目标:找到一个最好的直线,达到上述目的,也就是w,使得同类尽可能接近,异类尽可能远离

1.两个类别的LDA

1.先对各样本进行投影: z=w^Tx(原理参考向量的投影,两个向量相乘除以自己的模长,就是对方的投影,此处类似)

2.构造类内散度类间散度

类内散度

S_{w} = \Sigma_{0} + \Sigma_{1 } = \sum_{x\in X_{0}}^{}{(x-\mu_{0})(x-\mu_{0})^T} +\sum_{x\in X_{1}}^{}{(x-\mu_{1})(x-\mu_{1})^T}

其中 μi 代表第i类向量的均值,公式的含义为,对于每一个类别的向量x,计算其与均值向量的距离,最后求和

类间散度:

Sb = (\mu_0-\mu_1)(\mu_0-\mu_1)^T

含义为,两个类别均值向量的距离

3.最终的优化目标为: J = \frac{w^TS_bw}{w^TS_ww} ,越大越好

4.如何优化:

因为J的分子与分母,w的次数相同,所以w的大小,对于最终的结果没有影响,但是其方向有影响。所以,不妨令 w^TS_ww求出一个w,使得此时的 w^TS_bw最大

拉格朗日乘子法:解决有约束条件下的极值问题

构造拉格朗日函数:L(w,\lambda) = w^TS_bw-\lambda(w^TS_ww-1)

对w求导:\frac{\delta L(w,\lambda)}{\delta w} = S_bw-\lambda S_ww

导数为0:S_bw = \lambda S_ww

左右两边同时乘逆矩阵:S_w^{-1}S_bw = \lambda w,只需要解矩阵的特征值和特征向量即可。

二分类任务中,S_bw= (\mu_0-\mu_1)(\mu_0-\mu_1)^Tw,其中(\mu_0-\mu_1)^Tw为标量,则设其为k, (\mu_0-\mu_1)k = \lambda S_ww

w = S_w^{-1}(\mu_0-\mu_1)\frac{k}{\lambda}

因为w的长度不重要,只需要在意方向,则简化为:w =S_w^{-1}(\mu_0-\mu_1)

2.多分类任务的LDA

假定存在N个类,类内散度矩阵的定义不变,仍是各类散度矩阵之和

但是由于类间散度矩阵不可以直接求,需要先求解全局散度矩阵:

S_t = \sum_{i=1}^{m}{(x_i-\mu)(x_i-\mu)^T}

含义为,所有向量与均值向量 μ 的距离之和

类间散度矩阵的值为: Sb=St−Sw

其他解法,同上,仍是采用拉格朗日乘子法求解

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐