如何理解R语言分类算法中的线性判别分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1.线性判别原理解析
基本思想是”投影”,即高纬度空间的点向低纬度空间投影,从而简化问题的处理.在原坐标系下,空间中的点可能很难被分开,如图8-1,当类别Ⅰ和类别Ⅱ中的样本点都投影至图中的”原坐标轴”后,出现了部分样本点的”影子”重合的情况,这样就无法将分属于这两个类别的样本点区分开来;而如果使用如图8-2中的”投影轴”进行投影,所得到的”影子”就可以被”类别划分线”明显地区分开来.
费希尔判别最重要的就是选择出适当的投影轴,对该投影轴方向上的要求是:保证投影后,使每一类之内的投影值所形成的类内离尽可能小,而不同类之间的投影值所形成的类间距离差尽可能大.
对线性判别来说,线将样本点投影到一维空间,即直线上,若效果不明显,则可以考虑增加一个纬度,即投影到二维空间,依此类推.
而二次判别(Quadratic Discriminant Analysis,QDA)与线性判别(Linear Discriminant Analysis,LDA)的区别就在于投影面的形状不同,二次判别使用若干次曲面,而非直线或平面来将样本划分至相应的类别中.二次判别函数是一种常用的非线性判别函数.
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
2)查看模型的输出结果
fit_lda1[1:length(fit_lda1)]
3)做出模型图
plot(fit_lda1)
plot(fit_lda1,dimen=1)
4)对data_test进行预测,并观察预测结果
pre_ldal=predict(fit_lda1,data_test) pre_ldal[1:length(pre_ldal)]
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语言分类算法中的线性判别分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注天达云行业资讯频道了解更多相关知识。