线性判别分析

概述

需要注意一下,LDA有两种缩写:

  • 一种是线性判别分析(Linear Discriminant Analysis)
  • 一种是概率主题模型——隐含狄利克雷分布(Latent Dirichlet Allocation)

本文讲的是前者。

线性判别分析(Linear Discriminant Analysis,LDA)的思想是:

  • 训练时:设法将训练样本投影到一条直线上,使得同类样本的投影点尽可能地接近,异类样本的投影点尽可能地远离。要学习的就是这样的一条直线。
  • 预测时:将待预测样本投影到学到的直线上,根据它的投影点的位置来判定它的类别。

推导过程

首先考虑二分类问题。
给定数据集T,其中共有m个样本,n个特征。即:

x11,x12,x13,...,x1n,y1

x21,x22,x23,...,x2n,y2

......

xm1,xm2,xm3,...,xmn,ym

其中, yi={0,1},i=1,2,...,m

设类别为0的样本的均值向量为: u0=(u10,u20,...,un0)T ,这些样本的特征之间的协方差矩阵为 0
设类别为1的样本的均值向量为: u1=(u11,u21,...,un1)T ,这些样本的特征之间的协方差矩阵为 1
假设直线为 y=θTx ,将数据投影到直线上,则:
两类样本的中心在直线上的投影分别为 θTu0 θTu1
两类样本投影的方差分别为 θT0θ θT1θ
我们的目标是:同类样本的投影点尽可能地接近,异类样本的投影点尽可能地远离。那么可以使同类样例投影点的方差尽可能地小,即 θT0θ+θT1θ 尽可能地小;可以使异类样例的中心投影点尽可能地远离,即 θTu0θTu12 尽可能地大。
于是得到最大化的目标:

J=θTu0θTu12θT0θ+θT1θ=θT(u0u1)(u0u1)TθθT(0+1)θ

定义类内散度矩阵:
Sw=0+1=xT0(xu0)(xu0)T+xT1(xu1)(xu1)T

定义类间散度矩阵:
Sb=(u0u1)(u0u1)T

则LDA最大化的目标为:
J=θTSbθθTSwθ

求解最优化问题:
argmaxθθTSbθθTSwθ

分子分母都是关于 θ 的二次项,因此上式的解与 θ 的长度无关。令 θTSwθ=1 ,则最优化问题改写为:
argmimθθTSbθs.t.θTSwθ=1

应用拉格朗日乘子法:
Sbθ=λSwθ

(u0u1)Tθ=λθ ,其中 λθ 为实数。则 Sbθ=(u0u1)(u0u1)Tθ=λθ(u0u1)=λSwθ 。由于与 θ 的长度无关,可以令 λθ=λ ,则有:
(u0u1)=Swθ

θ=S1w(u0u1)

上面讨论的是二分类LDA算法。可以将它扩展到多分类任务中。由于多分类任务不止有两个中心点,因此不能简单地套用二类LDA的做法(即两个中心点的距离)。这里用每一类样本和的中心点距离总的中心点的距离作为度量。同时考虑到每一类样本集的大小可能不同(密度分布不均),所以我们对这个距离加以权重,因此定义类间散度矩阵 Sb=Mi=1mi(uiu)(uiu)T
经推导可以得到最大化的目标:
J=tr(θTSbθ)tr(θTSwθ)

其中, tr(.) 表示矩阵的迹。一个矩阵的迹是矩阵对角线的元素之和,它是一个矩阵不变量,也等于所有特征值之和。

多类LDA将样本投影到n-1维空间,因此它是一种经典的监督降维技术。

参考文献:

  1. 华校专,王正林《Python大战机器学习》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值