机器学习实战-64:线性判别分析降维算法(Linear Discriminant Analysis)

机器学习实战-64:线性判别分析降维算法

深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读!

机器学习分为监督学习、无监督学习和半监督学习(强化学习)。无监督学习最常应用的场景是聚类(clustering)和降维(dimension reduction)。聚类算法包括:K均值聚类(K-Means)、层次聚类(Hierarchical Clustering)和混合高斯模型(Gaussian Mixture Model)。降维算法包括:主成因分析(Principal Component Analysis)和线性判别分析(Linear Discriminant Analysis)。

线性判别分析(Linear Discriminant Analysis-LDA)是一种监督学习的降维技术, 即他要求训练数据是有标签信息的数据集。主成因分析(Principal Component Analysis-PCA)是一种无监督学习的降维技术。

线性判别分析(Linear Discriminant Analysis-LDA)的核心思想是:投影后类内方差最小,类间方差最大。LDA要将数据在低维度上进行投影,投影后希望每一种类别数## 1 算法原理

线性判别分析(Linear Discriminant Analysis-LDA)基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本到来后,我们可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率密度函数,计算它属于这个类别的概率,最大的概率对应的类别即为预测类别。

线性判别分析(Linear Discriminant Analysis-LDA)降维算法的核心步骤如下:

  • 计算类内散度矩阵: S w S_w Sw;
  • 计算类间散度矩阵: S b S_b Sb;
  • 计算矩阵: S w − 1 S b S_w^{-1}S_b Sw1Sb;
  • 计算 S w − 1 S b S_w^{-1}S_b Sw1Sb矩阵的最大的d个特征值和对应的d个特征向量(w1,w2,…wd),得到投影矩阵
  • 取出原始高维度样本x(i), 进行降维计算操作,获得低维度样本: z ( i ) = W T x ( i ) z(i)=W^Tx(i) z(i)=WTx(i);
  • 输出降维后的样本集 D ′ = ( z ( 1 ) , z ( 2 ) , . . . , z ( m ) ) D′=(z(1),z(2),...,z(m)) D=(z(1),z(2),...,z(m))

线性判别分析(Linear Discriminant Analysis-LDA)降维算法的核心优势如下:

  • 计算伸缩性: LDA算法可以使用类别的先验知识,PCA无需先验知识;
  • 参数依赖性: 样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优;
  • 普适性能力: LDA不适合对非高斯分布样本进行降维,PCA也有这个问题;
  • 抗噪音能力: 抗噪音能力一般;
  • 结果解释性: 特征维度的含义可能具有模糊性,解释性降低。

2 算法实例

注意:本文中使用sklearn中的鸢尾花(yuānwěi)数据集来对特征处理功能进行说明。如果不熟悉该数据集请阅读sklearn的数据集(含python源码)并先了解一下鸢尾花(yuānwěi)数据集。
https://blog.csdn.net/shareviews/article/details/82848530

部分机器学习项目,由于数据集特征矩阵过大,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。常见的降维方法包括:基于L1惩罚项的模型、主成分分析法(PCA)和线性判别分析(LDA)。降维的本质就是将原始的样本映射到维度更低的样本空间中。PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。

使用sklearn.lda库的LDA类进行数据降维的代码如下:

#
# Python 3.6
#
from sklearn.datasets import load_iris
from matplotlib import pyplot as plt
from sklearn.decomposition import PCA
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

iris = load_iris()

print(iris.keys())
print("iris.keys()  = {0}".format(iris.keys()))

raw_data = iris['data']
print("iris.data.shape  = {0}".format(raw_data.shape))

feature_names = iris['feature_names']
print("data.feature_names  = {0}".format(feature_names))

raw_target = iris['target']
print("data.target.shape = {0}".format(raw_target.shape))

def plot_iris_projection(x_index, y_index):
    # plt.scatter one type of iris flower with one color.
    types_count = 3
    for t,marker,c in zip(range(types_count),'>ox', 'rgb'):
        plt.scatter(dst_data[dst_target==t,x_index],
                    dst_data[dst_target==t,y_index],
                    marker=marker,c=c)
    if(dst_data.shape[1] == 4):
        plt.xlabel(feature_names[x_index])
        plt.ylabel(feature_names[y_index])

plt.figure(figsize=(16, 9))
dst_data   = raw_data
dst_target = raw_target
plt.subplot(2, 2, 1)
plot_iris_projection(x_index=0, y_index=1)
plt.subplot(2, 2, 2)
plot_iris_projection(x_index=0, y_index=2)

# supervised dimensionality reduction
dst_data = LinearDiscriminantAnalysis(n_components=2).fit_transform(raw_data, raw_target)
ax = plt.subplot(2, 2, 3)
ax.set_title('LDA(n_components=2)')
plot_iris_projection(x_index=0, y_index=1)
print(dst_data.shape)

# supervised dimensionality reduction
dst_data = LinearDiscriminantAnalysis(n_components=3).fit_transform(raw_data, raw_target)
ax = plt.subplot(2, 2, 4)
ax.set_title('LDA(n_components=3)')
plot_iris_projection(x_index=0, y_index=1)
print(dst_data.shape)

#Adjust subgraph spacing
plt.subplots_adjust(wspace =0.3, hspace =0.4) 

plt.show()

线性判别分析(Linear Discriminant Analysis)降维算法
由上图可以看出,sklearn.lda库的LDA类仅需要配置维度数量n_components即可,不需要额外的调参。原始数据维度print(raw_data.shape)为(150,4)。处理后为数据维度print(dst_data.shape)为(150, 2)和(150, 2)得到了降维的目的。线性可分只能2维,纯的线性函数无法分开3维数据。所以这只n_components=2或者n_components=3,最终输出都是2维的。

3 典型应用

线性判别分析(LDA)是最著名的有监督线性降维方法,主成因分析(PCA)是无监督线性降维方法。他们也存在核函数版本,用以支持非线性降维场景。

线性判别分析(LDA)在模式识别领域应用非常广泛。线性判别分析在人脸识别、舰艇识别、行人识别、车辆识别等领域等表现良好。

系列文章

参考资料

  • [1] 周志华. 机器学习. 清华大学出版社. 2016.
  • [2] [日]杉山将. 图解机器学习. 人民邮电出版社. 2015.
  • [3] 佩德罗·多明戈斯. 终极算法-机器学习和人工智能如何重塑世界. 中信出版社. 2018.据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值