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