线性判别分析(LDA)详解

这篇具有很好参考价值的文章主要介绍了线性判别分析(LDA)详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。

目录

一、LDA简介

二、数学原理(以二分类为例子)

1、设定

2、每一类的均值和方差

3、目标函数

4、目标函数的求解

5、最终的实践所求

三、多分类LDA

四、LDA用途与优缺点

1、用途

2、优点

3、缺点

五、LDA的python应用

1、调用函数LinearDiscriminantAnalysis

2、常用参数意义

3、常用返回值

4、利用LDA进行二分类实例


一、LDA简介

LDA(线性判别分析)是一个经典的二分类算法。

主要思想:以一种基于降维的方式将所有的样本映射到一维坐标轴上,然后设定一个阈值,将样本进行区分

如下图所示,把红蓝两类的点投影在了一条直线(向量a)上,即二维变一维(本来一个点要用(x,y)来表示,投影到直线后就用一个维度来描述)。

线性判别分析(LDA)详解


二、数学原理(以二分类为例子)

1、设定

首先我们假设整个样本空间分为两个类别,分别是1、-1;N1、N2分别代表1,-1类别样本的个数;样本为X。

那么有:;

设定z为映射后的坐标(即投影后的坐标)

2、每一类的均值和方差

将样本数据X向w向量(设定w的模长为1)做投影,则有:

接下来求出映射后的均值和方差(用来衡量样本的类间距离和类内距离)

均值:;

方差:;

3、目标函数

想要得到好的分类模型,即要求类内间距小,类间间距大。即:

类内间距小:线性判别分析(LDA)详解;两个类的方差越小,说明样本越密集
类间间距大:;用两个类的均值的距离说明两个类之间的距离

根据这样的思路构建目标函数:

线性判别分析(LDA)详解

J(w)越大越好,即我们要求的是:

4、目标函数的求解

化简目标函数:(将w向量与原数据的运算分隔开)

线性判别分析(LDA)详解

令类间散度矩阵:;类内散度矩阵:线性判别分析(LDA)详解,则有:

方法一:

为了解决,则对J(w)求导:

线性判别分析(LDA)详解

化简得到:

又因为,,都是标量,w前面我们已经约定它的模长为1,所以我们不关心它的长度,只关心他的方向,所以把标量都摘掉,得:

方法二:

J(w)的分子分母都是关于w的二次项,因此J(w)的解与w的长度无关,只与它的方向有关。所以这里为例简单处理也可以令,故求,利用拉格朗日乘子法可得:

又因为方向恒为,所以令,因此有

5、最终的实践所求

为得到数值解的稳定性,通常对进行奇异值分解(),再由得到。


三、多分类LDA

假定存在N个类,且第i类示例数为。

全局散度矩阵:线性判别分析(LDA)详解,其中是所有样本的均值向量。

类内散度矩阵:

类间散度矩阵:

然后与上面的二分类类似:目标函数为:

类似可得:

所以W的解为的特征向量组成的矩阵。


四、LDA用途与优缺点

1、用途

LDA既可以用来降维(将W视为投影矩阵),又可以用来分类,但主要还是用于降维。

2、优点

与另一个降维算法PCA对比

(1)在降维过程中可以使用类别的先验知识经验,而PCA(无监督学习)无法使用类别先验知识

(2)LDA样本分类依赖的是均值而不是方差,比PCA算法更优

3、缺点

(1)LDA不适合对非高斯分布的样本降维

(2)LDA降维最多降到类别数N-1的维数,如果我们降维的维度大于N-1,则不能使用LDA

(3)LDA可能会过度拟合数据


五、LDA的python应用

1、调用函数LinearDiscriminantAnalysis

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

2、常用参数意义

(1)solver:字符串类型,指定求解最优化问题的算法

🌳'svd':奇异值分解。对于有大规模特征的数据,推荐用这种算法

🌳'lsqr':最小平方差,可以结合skrinkage参数

🌳'eigen' :特征分解算法,可以结合shrinkage参数

(2)skrinkage:取值:字符串‘auto’或者浮点数或者None。

该参数通常在训练样本数量小于特征数量的场合下使用。

🌳‘auto’:自动决定shrinkage参数的大小

🌳None:不使用shrinkage参数

🌳浮点数(位于0~1之间):自己指定的shrinkage参数

(3)n_components:(整数类型)指定了数组降维后的维度(该值必须小于n_classes-1)

(4)priors:一个数组,数组中的元素依次指定了每个类别的先验概率。如果为None,则认为每个类的先验概率都是等可能的

3、常用返回值

coef_:权重向量

intercept:b值

covariance_:一个数组,依次给出了每个类别的协方差矩阵

means_:一个数组,依次给出了每个类别的均值向量

xbar_:给出了整体样本的均值向量

4、利用LDA进行二分类实例

来个简单的小栗子

我们使用sklearn里的乳腺癌数据集

from sklearn.datasets import load_breast_cancer 
cancer = load_breast_cancer()

然后对数据进行一个处理,让我们看起来舒服点,计算机处理也舒服点

data=cancer["data"]
col = cancer['feature_names']
x = pd.DataFrame(data,columns=col)#就是那些个特征
target = cancer.target.astype(int)
y = pd.DataFrame(target,columns=['target'])#对应特征组合下的类别标签

训练集测试集分分类

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=1)

直接进入训练

clf = LinearDiscriminantAnalysis(n_components=1)
model=clf.fit(x_train,y_train)

训练出来的模型对test集进行一个预测

y_pred = model.predict(x_test)
print(classification_report(y_test, y_pred))

完整代码

from sklearn.datasets import load_breast_cancer 
from sklearn.model_selection import train_test_split
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn import metrics
import matplotlib.pyplot as plt
from sklearn.metrics import classification_report
import pandas as pd
import warnings
warnings.filterwarnings('ignore')

cancer = load_breast_cancer()

data=cancer["data"]
col = cancer['feature_names']
x = pd.DataFrame(data,columns=col)
target = cancer.target.astype(int)
y = pd.DataFrame(target,columns=['target'])

x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=1)
clf = LinearDiscriminantAnalysis(n_components=1)
model=clf.fit(x_train,y_train)

y_pred = model.predict(x_test)
print(classification_report(y_test, y_pred))

结果

线性判别分析(LDA)详解


欢迎大家在评论区批评指正,谢谢~文章来源地址https://www.toymoban.com/news/detail-413734.html

到了这里,关于线性判别分析(LDA)详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习之线性判别分析(Linear Discriminant Analysis)

    线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的监督学习算法,也称\\\"Fisher 判别分析\\\"。LDA在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用。 LDA的核心思想是给定训练样本集,设法将样例投影到一条直线上。使得同类样例的

    2024年02月15日
    浏览(36)
  • 核矩阵半正定性: 支持向量机与线性判别分析

    支持向量机(Support Vector Machine,SVM)和线性判别分析(Linear Discriminant Analysis,LDA)都是用于解决二分类问题的机器学习算法。它们的核心思想是找到一个超平面(在二维空间中是直线)将数据集划分为两个类别。然而,SVM 和 LDA 在处理数据的方式和性能上存在一些关键区别。 SVM 通过

    2024年02月19日
    浏览(35)
  • R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Box's M检验可视化...

    Reaven和Miller(1979)研究了145名非肥胖成年人的葡萄糖耐量和胰岛素血液化学指标之间的关系。他们使用斯坦福线性加速器中心的PRIM9系统将数据可视化为3D,并发现了一个奇特的图案,看起来像是一个有两个翼的大斑点 ( 点击文末“阅读原文”获取完整 代码数据 )。 相关视

    2024年02月07日
    浏览(39)
  • 【模式识别】探秘判别奥秘:Fisher线性判别算法的解密与实战

    ​🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《模式之谜 | 数据奇迹解码》 ⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 🌌1 初识模式识别 🌌2 Fisher线性判别 🌍2.1 研究目的 🌍2.2 实验环境 🌍2.3 实验内容 🌕2.3.1 算法

    2024年02月04日
    浏览(35)
  • 【Sklearn】基于线性判别法的数据分类预测(Excel可直接替换数据)

    线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的模式识别和分类方法,它的目标是找到一个投影,将数据投影到低维空间,使得不同类别的样本在投影后的空间中有最大的类别间距,同时最小化类内方差。 模型原理如下: 假设有d维的数据,分为K个类别。我们

    2024年02月12日
    浏览(35)
  • 判别分析(1)——距离判别法

    判别分析是多元统计分析的内容,其作用在分类确定的条件下,根据某一研究对象的各种特征的值来判断其归属于哪一类(即总体)。实际上,这一类问题就是根据已有的样本数据与对应的类别,判断未知类别的数据属于哪一类。像逻辑回归、支持向量机等从某种意义上来说

    2024年02月06日
    浏览(36)
  • 【应用多元统计分析】CH5 判别分析3——贝叶斯判别

    目录 前言——距离判别不适合的一个例子 一、最大后验概率法  1.含义 ​编辑 2.【例5.3.1】 3.先验概率的赋值方法 4.皆为正态组的情形 (1)先验概率相等,协方差矩阵相等时 (2)仅先验概率相等时 (3)仅协方差矩阵相等时  5.【例5.3.2】 二、最小期望误判代价法 1.例子

    2024年02月12日
    浏览(50)
  • 判别分析之Fisher判别、Bayes判别、距离判别的R实现案例

            某企生产的产品,其造型、性能和价位及所属级别数据如下表所示: 某企业产品的造型、性能、价位、级别等指标   题目来自《多元统计分析-基于R》课后习题           下面分别用Fisher判别法和Bayes判别法进行判别分析。            先进性Fisher判别,R程序如下

    2024年02月05日
    浏览(37)
  • 【多元统计分析】判别分析——SPSS上机实验

    参考文献:何晓群.《多元统计分析》中国人民大学出版社第五版(82-105) 公众号中还有更多的理论知识、个人笔记整理和资源放送,欢迎阅读哦~ 通过判别分析,对数据中的变量的各类特征值判别确定其类型属性。 为研究某地区人口死亡状况,已按某种方法将15个一直样品分为

    2024年02月04日
    浏览(37)
  • 基于spss的多元统计分析 之 聚类分析+判别分析(3/8)

    实验目的: 1. 掌握多元数据的相关性、正态性、可视化表征的基本原理; 2.熟悉掌握SPSS软件/R软件的基本用法和基本操作; 3.利用实验指导中及软件中内置的实例数据,上机熟悉相关性检验+正态性检验+可视化数据方法。 实验内容: 1.实验数据为女性汗液+ 32名学生核心课

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包