线性判别分析原理及实现(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

单变量二分类

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

P(y=1)=\phi \\ P(y=0)=1-\phi \\ P(x|y=1)=\frac{1}{\sqrt{2\pi}\sigma}exp[-\frac{(x-\mu_{1})^{2}}{2\sigma^{2}}] \\ P(x|y=0)=\frac{1}{\sqrt{2\pi}\sigma}exp[-\frac{(x-\mu_{0})^{2}}{2\sigma^{2}}] \\

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

P(y=1|x)=\frac{P(y=1)P(x|y=1)}{P(y=0)P(x|y=0)+P(y=1)P(x|y=1)} \\ P(y=0|x)=\frac{P(y=0)P(x|y=0)}{P(y=0)P(x|y=0)+P(y=1)P(x|y=1)} \\

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

\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模型的预测输出为:

\begin{align*} f(x)&=\arg\max\limits_{k}\delta_{k}(x) \\ &=\arg\max\limits_{k} \ \frac{\mu_{k}}{\sigma^{2}}{\cdot}x-\frac{\mu_{k}^{2}}{2\sigma^{2}}+{\log}p_{k} \end{align*}

其中p_{k}为类分布概率。

多变量多分类

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

P(x|y=k)=\frac{1}{(2\pi)^{p/2}|\Sigma|^{1/2}}exp(-\frac{1}{2}(x-\mu_{k})^{T}\Sigma^{-1}(x-\mu_{k}))

线性判别函数为:

\delta_{k}(x)=x^{T}\Sigma^{-1}\mu_{k}-\frac{1}{2}\mu_{k}^{T}\Sigma^{-1}\mu_{k}+{\log}p_{k}

LDA模型的预测输出为:

\begin{aligned} f(x)&=\arg\max\limits_{k}\delta_{k}(x) \\ \end{aligned}

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

  • \hat{p}_{k}=\frac{N_{k}}{N}N_{k}为某个类别的样本数,N为总样本数
  • \hat{\mu}_{k}=\frac{1}{N_{k}}\sum_{x{\in}C_{k}}x_{i}C_{k}表示第k个类别的样本集合
  • \hat{\Sigma}=\frac{1}{N-K}\sum_{k=1}^{K}\sum_{x{\in}C_{k}}(x_{i}-\hat{\mu}_{k})(x_{i}-\hat{\mu}_{k})^{T}K表示类别数

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

QDA

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

20180110232856285205.png

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

\delta_{k}(x)=-\frac{1}{2}\log|\Sigma_{k}|-\frac{1}{2}(x-\mu_{k})^{T}\Sigma_{k}^{-1}(x-\mu_{k})+{\log}p_{k}

QDA模型的预测输出为:

\begin{aligned} f(x)&=\arg\max\limits_{k}\delta_{k}(x) \\ \end{aligned}

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

  • \hat{p}_{k}=\frac{N_{k}}{N}N_{k}为某个类别的样本数,N为总样本数
  • \hat{\mu}_{k}=\frac{1}{N_{k}}\sum_{x{\in}C_{k}}x_{i}C_{k}表示第k个类别的样本集合
  • \hat{\Sigma}_{k}=\frac{1}{N_{k}-1}\sum_{x{\in}C_{k}}(x_{i}-\hat{\mu}_{k})(x_{i}-\hat{\mu}_{k})^{T}.

Fisher角度解析LDA

待补充,这部分没太理解

LDA用于降维

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

\max \frac{(\mu_{1}-\mu_{2})^{2}}{\sigma_{1}^2+\sigma_{2}^{2}}

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

  • 类间(between-class)散度矩阵:S_{b}=\sum\limits_{i=k}^{K}N_{k}(\mu_{k}-\mu)(\mu_{k}-\mu)^{T},其中\mu_{k}为类均值,\mu为数据均值
  • 类内(within-class)散度矩阵:S_{w}=\sum\limits_{k}^{K}\sum\limits_{x_{i}{\in}C_{k}}(x_{i}-\mu_{k})(x_{i}-\mu_{k})^{T}

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

Z=a^{T}X

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

\max\limits_{a}\frac{a^{T}S_{b}a}{a^{T}S_{w}a}

该优化问题还等价于:

\max\limits_{a}a^{T}S_{b}a \qquad s.t. \ a^{T}S_{w}a=K

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

L(a)=a^{T}S_{b}a-\lambda(a^{T}S_{w}a-K) \\ \frac{\partial{L(a)}}{\partial{a}}=2S_{b}a-2{\lambda}S_{w}a=0 \\ S_{b}a={\lambda}S_{w}a \\

假设S_{w}可逆:

S_{w}^{-1}S_{b}a-{\lambda}a=0 \\ (S_{w}^{-1}S_{b}-{\lambda}I)a=0 \\

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

实现指导

完整代码

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,313评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,369评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,916评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,333评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,425评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,481评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,491评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,268评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,719评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,004评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,179评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,832评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,510评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,153评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,402评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,045评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,071评论 2 352

推荐阅读更多精彩内容