----分类:分类的意义----
#传统意义下的分类:生物物种#预测:天气预报#决策:yes or no#分类的传统模型#分类(判别分析)与聚类有什么差别?----常见分类模型与算法----
#线性判别法#距离判别法#贝叶斯分类器#决策树#支持向量机(SVM)#神经网络----线性判别法(Fisher)----
#例子:天气预报数据>G=c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2)>x1=c(-1.9,-6.9,5.2,5.0,7.3,6.8,0.9,-12.5,1.5,3.8,0.2,-0.1,0.4,2.7,2.1,-4.6,-1.7,-2.6,2.6,-2.8)>x2=c(3.2,0.4,2.0,2.5,0.0,12.7,-5.4,-2.5,1.3,6.8,6.2,7.5,14.6,8.3,0.8,4.3,10.9,13.1,12.8,10.0)>a=data.frame(G,x1,x2)>plot(x1,x2)>text(x1,x2,G,adj=-0.5)----线性判别法的原理----
#用一条直线来划分学习集(这条直线一定存在 )#然后根据待测点在直线的哪一边决定它的分类----MASS包与线性判别函数lda()----
>library(MASS)>ld=lda(G~x1+x2)>ldCall:
lda(G ~ x1 + x2)Prior probabilities of groups:
1 2 0.5 0.5Group means:
x1 x21 0.92 2.102 -0.38 8.85Coefficients of linear discriminants:
LD1x1 -0.1035305x2 0.2247957----分类判断----
>z=predict(ld)>newG=z$class>newG [1] 1 1 1 1 1 2 1 1 1 1 2 2 2 2 1 2 2 2 2 2Levels: 1 2>y=cbind(G,z$x,newG)
>y G LD1 newG1 1 -0.28674901 12 1 -0.39852439 13 1 -1.29157053 14 1 -1.15846657 15 1 -1.95857603 16 1 0.94809469 27 1 -2.50987753 18 1 -0.47066104 19 1 -1.06586461 110 1 -0.06760842 111 2 0.17022402 212 2 0.49351760 213 2 2.03780185 214 2 0.38346871 215 2 -1.24038077 116 2 0.24005867 217 2 1.42347182 218 2 2.01119984 219 2 1.40540244 220 2 1.33503926 2----距离判别法----
#原理:计算待测点与各类的距离,取最短者为其所属分类#马氏距离(薛毅书,为什么不用欧氏距离?),计算函数mahalanobis()#薛毅P378-R程序及例8.1
----贝叶斯分类器----#原理(薛毅书P385)----结果----
#对总体协方差矩阵相同的情形#对于总体协方差矩阵不同的情形----程序与例子----
#薛毅书P387#利用贝叶斯分类器判断垃圾邮件----多分类的情况----
#多分类下的距离判别法(薛毅书p382)#多分类下的贝叶斯(薛毅书p390)----Knn算法----
#算法主要思想1,选取k个和待分类点距离最近的样本点2,看1中的样本点的分类情况,投票决定待分类点所属的类----决策树decision tree----
#什么是决策树#输入:学习集#输出:分类规则(决策树)--例子
# 用SNS社区中不真实账号检测的例子说明如何使用ID3算法构造决策树。为了简单起见,我们假设训练集合包含10个元素。其中s、 m和l分别表示小、中和大。----信息增益----
#设L、F、H和R表示日志密度、好友密度、是否使用真实头像和账号是否真实,下面计算各属性的信息增益。----根据信息增益选择分裂属性----
#因此日志密度的信息增益是0.276。用同样方法得到H和F的信息增益分别为0.033和0.553。因为F具有最大的信息增益,所以第一次分裂选择F为分裂属性。----递归+分而治之----
#在上图的基础上,再递归使用这个方法计算子节点的分裂属性,最终就可以得到整个决策树。#这个方法称为ID3算法,还有其它的算法也可以产生决策树#对于特征属性为连续值,可以如此使用ID3算法:先将D中元素按照特征属性排序,则每两个相邻元素的中间点可以看做潜在分裂点,从第一个潜在分裂点开始,分裂D并计 算两个集合的期望信息,具有最小期望信息的点称为这个属性的最佳分裂点,其信息期望作为此属性的信息期望。----R语言实现决策树:rpart扩展包----
#以鸢尾花数据集作为算例说明>iris.rp = rpart(Species~., data=iris,method="class")>plot(iris.rp, uniform=T, branch=0,margin=0.1, main=“ Classification Tree\nIris Species by Petal and Sepal Length")>text(iris.rp, use.n=T, fancy=T, col="blue")#Rule 1: if Petal.Length>=2.45&Petal.Width<1.75, then it is versicolor(0/49/5)
#Rule2: if Petal.Length>=2.45&Petal.Width>=1.75, then it is virginica (0/1/45)#Rule 3: if Petal.Length<2.45, then it is setosa (50/0/0)