从零开始实现线性判别分析(LDA)算法(二类情形)

Posted 风雪夜归子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始实现线性判别分析(LDA)算法(二类情形)相关的知识,希望对你有一定的参考价值。

线性判别分析

声明:版权所有,转载请联系作者并注明出处:
http://blog.csdn.net/u013719780?viewmode=contents

知乎专栏:
https://www.zhihu.com/people/feng-xue-ye-gui-zi/columns

线性判别分析(Linear Discriminant Analysis或者Fisher’s Linear Discriminant)简称LDA,是一种监督学习算法。

LDA的原理是,将数据通过线性变换(投影)的方法,映射到维度更低纬度的空间中,使得投影后的点满足同类型标签的样本在映射后的空间比较近,不同类型标签的样本在映射后的空间比较远。

一、线性判别分析(二类情形)

在讲解算法理论之前,先补充一下协方差矩阵的定义。

1. 协方差矩阵定义

矩阵 Xmxn 协方差的计算公式:

x,y 分别是两个列向量,则 x,y 的协方差为

cov(x,y)=E(xx¯)(yy¯)

若将 x,y 合并成一个矩阵 Xmxn ,则求矩阵 Xmxn ,则矩阵 Xmxn 的协方差矩阵为

A=i=1...m,j=1...naij=cov(Xi,Xj)=E(XiXi¯)(XjXj¯)

2. 算法原理

上图中红色的方形的点为0类的原始点、蓝色的方形点为1类的原始点,经过原点的那条线就是投影的直线,从图上可以清楚的看到,红色的点和蓝色的点被原点明显的分开了。下面具体看看二分类LDA问题的情形:

现在我们觉得原始特征数太多,想将 n 维特征降到只有一维(LDA映射到的低维空间维度小于等于nlabels1),而又要保证类别能够“清晰”地反映在低维数据上,也就是这一维就能决定每个样例的类别。

假设用来区分二分类的直线(投影函数)为:

y=wTx

注意这里得到的 y 值不是0/1值,而是x投影到直线上的点到原点的距离。

已知数据集

D=x(1),x(1),,x(m),

D 按照类别标签划分为两类D1,D2, 其中 D1D2=D,D1D2= ,
定义两个子集的中心:

μ1=1n1x(i)D1x(i),
μ2=1n2x(i)D2x(i),

则两个子集投影后的中心为

μ1~=1n1以上是关于从零开始实现线性判别分析(LDA)算法(二类情形)的主要内容,如果未能解决你的问题,请参考以下文章

从零开始实现主成分分析(PCA)算法

Matlab基于线性判别法LDA实现多分类预测(Excel可直接替换数据)

Matlab基于线性判别法LDA实现多分类预测(Excel可直接替换数据)

机器学习算法的Python实现 :logistics回归 与 线性判别分析(LDA)

线性判别分析LDA算法——

线性判别分析(Linear Discriminant Analysis, LDA)算法初识