R语言分类算法之线性判别分析(Linear Discriminant Analysis)

1.线性判别原理解析
基本思想是”投影”,即高纬度空间的点向低纬度空间投影,从而简化问题的处理.在原坐标系下,空间中的点可能很难被分开,如图8-1,当类别Ⅰ和类别Ⅱ中的样本点都投影至图中的”原坐标轴”后,出现了部分样本点的”影子”重合的情况,这样就无法将分属于这两个类别的样本点区分开来;而如果使用如图8-2中的”投影轴”进行投影,所得到的”影子”就可以被”类别划分线”明显地区分开来.
费希尔判别最重要的就是选择出适当的投影轴,对该投影轴方向上的要求是:保证投影后,使每一类之内的投影值所形成的类内离尽可能小,而不同类之间的投影值所形成的类间距离差尽可能大.
对线性判别来说,线将样本点投影到一维空间,即直线上,若效果不明显,则可以考虑增加一个纬度,即投影到二维空间,依此类推.
而二次判别(Quadratic Discriminant Analysis,QDA)与线性判别(Linear Discriminant Analysis,LDA)的区别就在于投影面的形状不同,二次判别使用若干次曲面,而非直线或平面来将样本划分至相应的类别中.二次判别函数是一种常用的非线性判别函数.
R语言分类算法之线性判别分析(Linear Discriminant Analysis)_第1张图片
2.在R语言中的应用
MASS包是Modern Applied Statistics with S 的缩写,即S语言在现代统计中的应用。线性判别分析(LDA)主要用到了lda(formula,data,…,subset,na.action)函数,二次判别分析(QDA)则用到了qda(formula,data,…,subset,na.action)函数。
3.以iris数据集为例进行线性判别分析
1)应用模型并查看模型的相应参数

library(MASS)
fit_lda1=lda(Species~.,data_train)
fit_lda1

R语言分类算法之线性判别分析(Linear Discriminant Analysis)_第2张图片


2)查看模型的输出结果

fit_lda1[1:length(fit_lda1)]

R语言分类算法之线性判别分析(Linear Discriminant Analysis)_第3张图片


3)做出模型图

plot(fit_lda1)

R语言分类算法之线性判别分析(Linear Discriminant Analysis)_第4张图片

plot(fit_lda1,dimen=1)

R语言分类算法之线性判别分析(Linear Discriminant Analysis)_第5张图片


4)对data_test进行预测,并观察预测结果

pre_ldal=predict(fit_lda1,data_test)
pre_ldal[1:length(pre_ldal)]

R语言分类算法之线性判别分析(Linear Discriminant Analysis)_第6张图片


5)评测预测结果

table(data_test$Species,pre_ldal$class)
error_lda1=sum(as.numeric(as.numeric(pre_ldal$class)!=as.numeric(data_test$Species)))/nrow(data_test)

R语言分类算法之线性判别分析(Linear Discriminant Analysis)_第7张图片

你可能感兴趣的:(R语言)