学习路线:入门机器学习基本概念之用线性判别分析 LDA 降维

本文结构:

  • 什么是 LDA
  • 和 PCA 区别
  • LDA 投影的计算过程
  • LDA 降维的例子

1. 什么是 LDA

先说判别分析,Discriminant Analysis 就是根据研究对象的各种特征值,判别其类型归属问题的一种多变量统计分析方法。

根据判别标准不同,可以分为距离判别、Fisher 判别、Bayes 判别法等。例如,在 KNN 中用的是距离判别,朴素贝叶斯分类用的是 Bayes 判别,线性判别分析用的是 Fisher 判别式。

根据判别函数的形式,可以分为线性判别和非线性判别。

线性判别式分析(Linear Discriminant Analysis),简称为 LDA,也称为 Fisher 线性判别,1936 年由 Ronald Fisher 提出,1996 年由 Belhumeur 引入模式识别和人工智能领域。


2. 和 PCA 区别

二者都有降维的作用。

1. 左边是 PCA,属于无监督方法,当数据没有标签时可以用它。

右边是 LDA,属于监督方法。考虑了数据的分类信息,这样数据在低维空间上就可以分类了,减少了很多的运算量。

2. PCA 主要是从特征的协方差角度考虑,追求的是在降维之后能够最大化保持数据的内在信息。
它不考虑分类信息,因此,降低维度后,信息损失降到最低,但分类上可能会变得更加困难。

LDA 追求的是降维后的数据点尽可能容易被区分。
降维后的样本数据在新的维度空间有最大的类间距离和最小的类内方差,数据在低维空间有最佳的可分离性。

3. PCA 后的维度数目是和数据维度相关的,原始数据是 n 维,那么 PCA 后维度为 1、2~n 维。

LDA 后的维度数目是和类别的个数相关的,原始数据是 n 维,一共有 C 个类别,那么 LDA 后维度为 1、2~C-1 维。

4. PCA 投影的坐标系都是正交的

LDA 关注分类能力,不保证投影到的坐标系是正交的。


3. LDA 投影的计算过程(两个类别)

给的数据有两个类别,要找到一个向量 w,将数据 x 投影到 w 上之后:

  • 两个类别的距离较远,这一点用映射后两个类别的均值差的绝对值来度量。
  • 每个类内部数据点比较聚集,这一点用投影后每个类别的方差来度量。


类别 i 的均值:

类别 i 投影后的均值:

投影后均值差的绝对值:


投影后的方差,y 为投影后的数据,y = w_t * x:

目标优化函数为:


为了方便计算 w ,继续推导分母为:


分子为:

则优化目标 J(w) 为:

我们希望分母越小越好,分子越大越好:

  • 分母小,则每个类内部数据点比较聚集;
  • 分子大,则两个类别的距离较远。

所以需要找出一个 W 使 J(W) 的值最大。

最后推导出 w :

这样通过计算后,获得向量 W,生成新的 Y 轴,使两个类别的样本数据在新 Y 轴的投影能最大程度的分离。


4. LDA 降维的例子

下面这个例子,将 iris 数据降到 2 维:

import matplotlib.pyplot as plt

from sklearn import datasets
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

iris = datasets.load_iris()

X = iris.data
y = iris.target
target_names = iris.target_names

lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(X, y).transform(X)

plt.figure()
for c, i, target_name in zip("rgb", [0, 1, 2], target_names):
    plt.scatter(X_r2[y == i, 0], X_r2[y == i, 1], c=c, label=target_name)
plt.legend()
plt.title('LDA of IRIS dataset')

plt.show()


猜你喜欢

转载自blog.csdn.net/weixin_40013463/article/details/79494265