线性判别分析,简称LDA,是一种线性学习方法。

常用来降维,是一种有监督的降维方法,是基于最佳分类效果的降维方法。

核心思想

给定训练样本,带label,设法将样本投影到一条直线上,使得同类样例的投影尽可能接近,异类样例的投影尽可能远离;

在对新样本进行预测时,先将其投影到这条直线上,再根据投影点的位置确定类别。

以二分类为例,x1  x2 代表训练集,u1 u2 代表样本均值,cov1 cov2 代表样本协方差矩阵,将样本投影到直线w上,则两样本的中心的投影分别为 wu1  wu2,两样本的协方差为 wTcov1w  wTcov2w ,

要使同类间距离尽可能小,需使 wTcov1w + wTcov2w 尽可能小;

要使异类间距离尽可能大,需使 |wu1-wu2| 尽可能大,

综合考虑,则可得到如下式子

目标是使得 J 最大。

具体求解过程省略,实际应用中一般不会自己实现LDA,因为LDA只是算法中很小的一个步骤,而其本身求解比较麻烦。

class sklearn.lda.LDA(solver='svd', shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)

示例代码

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis(n_components=2)
lda.fit(iris.data,iris.target)
X_new = lda.transform(iris.data)
print(X_new)

上面写了两个接口,适用不同版本。

LDA与PCA的应用场景对比

若两类样本的均值有明显差异,LDA较优

若两类样本均值无明显差异,但协方差差异很大,PCA较优

在实际应用中也常结合LDA和PCA一起使用,先用PCA降维消除噪声,再用LDA降维。

参考资料:

周志华《机器学习》

https://mp.weixin.qq.com/s?__biz=MzU0MDQ1NjAzNg==&mid=100002594&idx=1&sn=c9cdfc2c174ae6f4a36b383439a1627a&chksm=7b39ae294c4e273ff314dee92d2fff280ba7aa9ff74ae9f2a8f0345d8e794f30dfd2c9d4f9d4#rd

https://scikit-learn.org/0.16/modules/generated/sklearn.lda.LDA.html

LAD 线性判别分析的更多相关文章

  1. 线性判别分析LDA原理总结

    在主成分分析(PCA)原理总结中,我们对降维算法PCA做了总结.这里我们就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 以下简称LDA)做一个总结. ...

  2. 线性判别分析(LDA)准则:FIsher准则、感知机准则、最小二乘(最小均方误差)准则

    准则 采用一种分类形式后,就要采用准则来衡量分类的效果,最好的结果一般出现在准则函数的极值点上,因此将分类器的设计问题转化为求准则函数极值问题,即求准则函数的参数,如线性分类器中的权值向量. 分类器设 ...

  3. LDA(Linear discriminate analysis)线性判别分析

    LDA 线性判别分析与Fisher算法完全不同 LDA是基于最小错误贝叶斯决策规则的. 在EMG肌电信号分析中,... 未完待续:.....

  4. 线性判别分析(Linear Discriminant Analysis)转载

    1. 问题 之前我们讨论的PCA.ICA也好,对样本数据来言,可以是没有类别标签y的.回想我们做回归时,如果特征太多,那么会产生不相关特征引入.过度拟合等问题.我们可以使用PCA来降维,但PCA没有将 ...

  5. 线性判别分析(LDA), 主成分分析(PCA)及其推导【转】

    前言: 如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了. 谈到LDA,就不得不谈谈PCA,PCA ...

  6. 机器学习中的数学-线性判别分析(LDA), 主成分分析(PCA)

    转:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/08/lda-and-pca-machine-learning.html 版权声明: 本文由L ...

  7. 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  8. 线性判别分析算法(LDA)

    1. 问题 之前我们讨论的PCA.ICA也好,对样本数据来言,可以是没有类别标签y的.回想我们做回归时,如果特征太多,那么会产生不相关特征引入.过度拟合等问题.我们可以使用PCA来降维,但PCA没有将 ...

  9. LDA 线性判别分析

    LDA, Linear Discriminant Analysis,线性判别分析.注意与LDA(Latent Dirichlet Allocation,主题生成模型)的区别. 1.引入 上文介绍的PC ...

随机推荐

  1. UP_GetRecordByPage

    CREATE PROCEDURE [dbo].[UP_GetRecordByPage] @tblName varchar(255), -- 表名 @fldName varchar(255), -- 主 ...

  2. 6.4 SpringData JPA的使用

    引言:该文档是参考尚硅谷的关于springboot教学视屏后整理而来.当然后面还加入了一些自己从网上收集整理而来的案例! 一.SpringData JPA初步使用 1. springdata简介 2. ...

  3. oracle 游标分析与理解(基础)

    --------------坚持写一点 慢慢成长 希望对大家有所帮助(小白的理解)  也是自己学习后的理解(只是一小部分,需要更深沉的还需日后成长) 接下来就是我们的重点 --游标 提供了一种对从表中 ...

  4. js点滴3 vs vue

    web Components 学习之路 https://www.cnblogs.com/zhaowinter/p/5447246.html vue学习指路. vue全局配置. ignoredEleme ...

  5. 关于python 的http 日常操作

    Http,互联网的基础 .net ,java(springboot),node.js,python 都能非常方便的实现http服务. 现在服务器后台跑着pytorch的模型,想着还是用python来处 ...

  6. python 往mysql数据库中插入多条记录。

    最近想写mysql库,用到insert into语句,如何一次性将多条记录插入库表中呢. MySQLdb提供了两个执行语句的方法:一个是execute(),另一个是executemany() exec ...

  7. reactiveCocoa使用注意点

    @RACSubject信号 注意点:1如果一个页面需要多次发送这个消息,那么似乎会暴露一个bug,信号不会被销毁,等到发送第二个信号 时,第一个信号仍然会被发送,导致错误,比如一个tableView的 ...

  8. Subversion ----> svnserve.conf / authz / passwd / hooks-env.tmpl <<翻译笔记>>

    svnserve.conf 假如你使用这个文件去允许访问这个仓库,那么这个文件控制着svnserve后台进程的配置.(但是如果你只是允许通过http和/或者 file:URLs,则这个文件就不起作用了 ...

  9. Mac OS X 绑定80端口,不装nginx的小技巧

    Mac OS X 因为要绑定80端口需要ROOT权限, 但是如果用root权限启动eclipse或tomcat又会造成, 启动创建的各类文件是root的,普通用户无法删除. 为此, 我们可以通过pfc ...

  10. 跟我一步一步写出MongoDB Web 可视化工具(二)

    前言 上篇讲了一些基础,主要注重的是查,包括建立数据库链接.获取数据库.获取表.列出数据库.列出表.列出索引.获取数据等. 本篇依然是基础,注重增改删,废话不多说,咱们开始. 进阶 创建一个数据库和一 ...