LDA线性判别


引: 判别分析是针对分布问题的方法,从机器学习角度来说是有监督学习方法 例如:在医学诊断中,一个病人肺部有阴影,医生要判断他患的是肺结核、肺部肿瘤还是肺癌?这里由肺结核病人、良性肿瘤病人、肺癌病人构成三个总体,病人来源于这三个总体之一,判别分析的目的是通过测得病人的指标(阴影的大小、边缘是否光滑、体温...)来判断他应该是属于哪个总体

距离判别

距离判别的思想是:样品和哪个总体距离最近,就判断它是属于哪个总体

假如有两个类别(G1和G2)的不同数据,总体G1的分布为 N ( μ 1 , σ 1 2 ) N(\mu_1,\sigma_1^2) N(μ1,σ12),总体G1的分布为 N ( μ 2 , σ 1 2 ) N(\mu_2,\sigma_1^2) N(μ2,σ12)

定义X0与G1和G2的相对距离为(以下定义与总体分布无关)

d 1 2 ( x 0 ) = ( x 0 − μ 1 ) 2 σ 1 2 d_1^2(x0)=\frac{(x0-\mu_1)^2}{\sigma_1^2} d12(x0)=σ12(x0μ1)2
d 2 2 ( x 0 ) = ( x 0 − μ 2 ) 2 σ 2 2 d_2^2(x0)=\frac{(x0-\mu_2)^2}{\sigma_2^2} d22(x0)=σ22(x0μ2)2

于是我们可以找到分界点 μ ∗ \mu^* μ μ ∗ \mu_* μ
使得 ( x 0 − μ 1 ) 2 σ 1 2 \frac{(x0-\mu_1)^2}{\sigma_1^2} σ12(x0μ1)2= ( x 0 − μ 2 ) 2 σ 2 2 \frac{(x0-\mu_2)^2}{\sigma_2^2} σ22(x0μ2)2

⇒ \Rightarrow x = μ 1 σ 2 + μ 2 σ 1 σ 1 + σ 2 = μ ∗ =\frac{\mu_1\sigma_2+\mu_2\sigma_1}{\sigma_1+\sigma_2}=\mu^* =σ1+σ2μ1σ2+μ2σ1=μ
和x = μ 1 σ 2 − μ 2 σ 1 σ 2 − σ 1 = μ ∗ =\frac{\mu_1\sigma_2-\mu_2\sigma_1}{\sigma_2-\sigma_1}=\mu_* =σ2σ1μ1σ2μ2σ1=μ

为什么有两个解?
在这里插入图片描述
如上图所示,若两总体方差不等,则在两总体均值 μ 1 \mu_1 μ1 μ 2 \mu_2 μ2之间,有一解 μ ∗ \mu^* μ,在方差较小的总体右边有一解 μ ∗ \mu_* μ

若两总体方差相等,则只有一解在两总体均值之间

因此判别准则为:
μ ∗ \mu^* μ<x< μ ∗ \mu_* μ,x ∈ G 1 \in G1 G1
当X< μ ∗ \mu^* μ或x> μ ∗ \mu_* μ,x ∈ G 2 \in G2 G2

在多元情况下,我们定义距离为
在这里插入图片描述
于是,在多元情况下我们用样本均值和样本离差阵代替期望和协方差矩阵(若未知)

两个总体情况下,如果 Σ 1 = Σ 2 \Sigma_1=\Sigma_2 Σ1=Σ2
则我们可推得判别准则为一个线性判别函数(超平面)

在这里插入图片描述
当协方差矩阵不等时,距离之差为一个二次函数(二次型),如一元情况,在这个二次函数围成的闭区间内为一个类,在闭区间外为另一类

若总体个数大于2,我们应该计算x在每个总体的马氏距离,并且把x判归距离最小的那个总体

Bayes判别

上面的距离判别可以说是Bayes判别的特殊情况,Bayes判别还要考虑属于各个总体的先验概率,并且可以计算错判造成的损失

正态假设

以下推导建立在总体的正态假设下
两个总体时(推导如下):
在这里插入图片描述
可见,在协方差矩阵相等的情况下,除线性判别函数常数项增加了考虑先验概率的部分外,与马氏距离判别法是一样的

误判的概率为
在这里插入图片描述
在这里插入图片描述

logistic判别

在这里插入图片描述

Fisher判别

应用于LDA的降维方法,像主成分分析一样提取数据的主要特征再进行判别
在这里插入图片描述

上面有fisher判别构建的线性函数成为线性判别函数linear discriminant function(不知道为啥)

Δ a \Delta a Δa称为判别效率,等于最大特征值

依次类推,若仅用一个线性判别函数不能很好区分k个总体(画图或用判别效率),我们可以用第二大特征值 λ 2 \lambda_2 λ2,它所对应的满足 l 2 ′ A l 2 = 1 l_2'Al_2=1 l2Al2=1的特征向量 l 2 l_2 l2,建立第二个线性判别函数 l 2 ′ X l_2'X l2X,不行就建立第三个判别函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述*在这里插入图片描述
为什么特征向量数量r ≤ \leq k-1?
因为要对k个总体分类,最多只需要k-1个判别函数

R Program

library(MASS)
wine=read.table("C:/Users/18461/Desktop/wine.train.txt")
wine.lda = lda(wine$V14 ~ ., wine)#R语言调用函数lda是MASS包中
type=wine$V14#数据第14列是种类,前13列是自变量
LD = predict(wine.lda)
wine.lda

lda调用函数解释

Call:
lda(wine$V14 ~ ., data = wine)

Prior probabilities of groups: ##这是计算先验概率
1 2 3
0.3220339 0.3898305 0.2881356

Group means: #计算每组各自变量均值
V1 V2 V3 V4 V5
1 13.73763 1.933684 2.493684 17.00526 108.50000
2 12.27739 1.976957 2.281739 20.69565 94.73913
3 13.15059 3.458235 2.448235 21.44118 98.17647
V6 V7 V8 V9
1 2.845263 2.9697368 0.3050000 1.864474
2 2.250435 2.1556522 0.3641304 1.721522
3 1.725882 0.7864706 0.4561765 1.137059
V10 V11 V12 V13
1 5.554474 1.0831579 3.101579 1114.2105
2 3.163043 1.0730435 2.838696 523.9348
3 7.417059 0.6985294 1.687941 620.2941

Coefficients of linear discriminants: (由于这里k=3,因此线性判别函数有2个)
LD1 LD2
V1 -0.511244928 0.969702370
V2 0.258344142 0.292124971
V3 -1.025022033 2.660728316
V4 0.137671902 -0.216784939
V5 0.005982794 0.001589583
V6 0.825384675 0.204914606
V7 -1.497234903 -0.527624083
V8 -0.782651707 -0.741267095
V9 -0.132131408 -0.563902276
V10 0.332815833 0.167774503
V11 -1.230827739 -1.361751242
V12 -1.264082609 -0.098889671
V13 -0.002683669 0.002759903

Proportion of trace: (计算特征值占比,可见第一线性判别函数判别能力高)
LD1 LD2
0.6837 0.3163

计算线性判别函数

调用predict中的x

绘制线性判别函数的二维图

plot(
LD$x[,1],LD$x[,2],
col = type,
xlab = "1st Linear Discriminant Score",
ylab = "2nd Linear Discriminant Score"
)

在这里插入图片描述
通过plot可以发现,LD1 和 LD2 一起能比较好的将 3 种酒分开。而沿着LD1方向三种酒容易区分,而沿着LD2方向绿色和黑色在相近位置。这说明LD1是判别效率最高的函数,在LD2中也存在有助于判别的信息。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值