美文网首页
线性判别分析

线性判别分析

作者: Silmarillion123 | 来源:发表于2020-11-28 15:18 被阅读0次

LDA
投影后类内方差最小,类间方差最大
将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大


image.png

LDA与PCA

LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。

相同点

1)两者均可以对数据进行降维。

2)两者在降维时均使用了矩阵特征分解的思想。

3)两者都假设数据符合高斯分布。

不同点

1)LDA是有监督的降维方法,而PCA是无监督的降维方法

2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。

3)LDA除了可以用于降维,还可以用于分类。

4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。这点可以从下图形象的看出,在某些数据分布下LDA比PCA降维较优。

library(e1071)
library(ggplot2)
library(MASS)
data('thyroid',package = 'mclust')
plot(thyroid$Diagnosis)
data<-thyroid
set.seed(2016)
N<-nrow(thyroid)
train<-sample(1:N,75,FALSE)#在1到N抽样,抽150次,采样不更换
validate_set<-data$Diagnosis[-train]
fit<-lda(Diagnosis~.,data=data[train,])#该方法直接从数据估计了类别的先验概率,也可以利用prior参数来指定先验概率

ggplot(data[train,],aes(x=Diagnosis,y=RT3U,fill=T4))+geom_point(alpha=0.1)+scale_size_area()+scale_color_brewer(palette = 'Set2')
pred<-predict(fit,data[-train,])$class
table(pred,validate_set)
mean(pred!=validate_set)

Call:
lda(Diagnosis ~ ., data = data[train, ])

Prior probabilities of groups:
     Hypo    Normal     Hyper 
0.1600000 0.7066667 0.1333333 

Group means:
           RT3U        T4       T3      TSH      DTSH
Hypo   120.8333  4.291667 1.158333 8.908333 11.250000
Normal 109.7170  9.271698 1.730189 1.343396  2.784906
Hyper   95.2000 19.620000 4.090000 1.070000 -0.040000

Coefficients of linear discriminants:#LD与各特征的相关系数
              LD1          LD2
RT3U -0.024800484 -0.007470861
T4    0.380111900  0.118762088
T3    0.107693720  0.192321312
TSH  -0.005651495  0.287412059
DTSH -0.067582273  0.063685349

Proportion of trace:#类别间方差
   LD1    LD2 
0.8684 0.1316 

table(pred,validate_set)
        validate_set
pred     Hypo Normal Hyper
  Hypo     16      0     0
  Normal    2     97    11
  Hyper     0      0    14

相关文章

网友评论

      本文标题:线性判别分析

      本文链接:https://www.haomeiwen.com/subject/doiqwktx.html