线性判别分析原理及实现(Linear Discriminant Analysis)

项目地址:https://github.com/Daya-Jin/ML_for_learner/blob/master/discriminant_analysis/LinearDiscriminantAnalysis.ipynb
原博客:https://daya-jin.github.io/2018/12/05/LinearDiscriminantAnalysis/

LDA

单变量二分类

假设现在有一个单变量二分类问题,并且标签服从二项分布,特征条件概率服从等方差的高斯分布:

那么在给定样本的条件下,这两个类别发生的条件概率分别为:

两者之间的对数几率可以写成:

\begin{aligned} \log\frac{P(y=1|x)}{P(y=0|x)}&=\log\frac{P(y=1)}{P(y=0)}+\log\frac{P(x|y=1)}{P(x|y=0)} \\ &=\log\frac{\phi}{1-\phi}+\log\frac{exp[-\frac{(x-\mu_{1})^{2}}{2\sigma^{2}}]}{exp[-\frac{(x-\mu_{0})^{2}}{2\sigma^{2}}]} \\ &=\log\frac{\phi}{1-\phi}-\frac{(x-\mu_{1})^{2}}{2\sigma^{2}}+\frac{(x-\mu_{0})^{2}}{2\sigma^{2}} \\ &=\frac{\mu_{1}-\mu_{0}}{\sigma^{2}}{\cdot}x-\frac{\mu_{1}^{2}-\mu_{0}^{2}}{2\sigma^{2}}+\log\frac{\phi}{1-\phi} \end{aligned}

由上式可以得到,LDA对于某一样本的线性判别函数可写成:

\delta_{1}(x)=\frac{\mu_{1}}{\sigma^{2}}{\cdot}x-\frac{\mu_{1}^{2}}{2\sigma^{2}}+\log{\phi} \\ \delta_{0}(x)=\frac{\mu_{0}}{\sigma^{2}}{\cdot}x-\frac{\mu_{0}^{2}}{2\sigma^{2}}+\log{(1-\phi)} \\

单变量多分类

不难得到,对于多分类问题,LDA模型的预测输出为:

其中为类分布概率。

多变量多分类

更一般的,讨论多变量的情况下,假如数据有个特征,在的条件下,引入协方差矩阵,特征条件概率可以写成:

线性判别函数为:

LDA模型的预测输出为:

其中各参数均由观测数据估计得到:

  • ,为某个类别的样本数,为总样本数
  • ,表示第个类别的样本集合
  • ,表示类别数

所以可以看出LDA就是一个简单的贝叶斯模型,并没有用到最大似然策略。

QDA

LDA模型有一个前提假设:数据的特征条件概率服从均值不等、方差相等的高斯分布,如果真实情况下方差不等呢?下图展示了方差相等于方差不等的情况:

20180110232856285205.png

同理,可以得到QDA(quadratic discriminant analysis)的判别函数:

QDA模型的预测输出为:

其中各参数均由观测数据估计得到:

  • ,为某个类别的样本数,为总样本数
  • ,表示第个类别的样本集合
  • .

Fisher角度解析LDA

待补充,这部分没太理解

LDA用于降维

对于个类别的数据,假定“物以类聚”的条件成立,那么对于个中心,在不影响分类器性能的条件下,我们至少可以将其映射到一个维的空间。如对于两个聚类中心,我们可以将其映射到一条直线上并且还能将其分开,对于的情况,可以找到一个维的映射空间。所以LDA算法还有一个用途就是作为有监督的降维算法,其核心思想在于将原数据映射到一个新空间,使得在新空间中各类的均值差尽量大,而每个类内部的方差尽量小,那么在二分类的情况下很容易给出一个直观的优化目标:

为了将概念拓展到高维空间,首先给出几个概念:

  • 类间(between-class)散度矩阵:,其中为类均值,为数据均值
  • 类内(within-class)散度矩阵:

在Fisher提出的方法中,降维过程可以写成:

其中为映射矩阵,为原数据。那么低维数据的类间方差为,类内方差为,降维的优化目标就等同于最大化一个瑞利熵:

该优化问题还等价于:

使用拉格朗日数乘法解上述问题:

假设可逆:

可以看到这就是一个特征值问题。

实现指导

完整代码

你可能感兴趣的:(线性判别分析原理及实现(Linear Discriminant Analysis))