----分类:分类的意义----
#传统意义下的分类:生物物种
#预测:天气预报
#决策: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)
>ld

Call:
lda(G ~ x1 + x2)

Prior probabilities of groups:
1 2
0.5 0.5

Group means:
x1 x2
1 0.92 2.10
2 -0.38 8.85

Coefficients of linear discriminants:
LD1
x1 -0.1035305
x2 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 2
Levels: 1 2

>y=cbind(G,z$x,newG)
>y
G LD1 newG
1 1 -0.28674901 1
2 1 -0.39852439 1
3 1 -1.29157053 1
4 1 -1.15846657 1
5 1 -1.95857603 1
6 1 0.94809469 2
7 1 -2.50987753 1
8 1 -0.47066104 1
9 1 -1.06586461 1
10 1 -0.06760842 1
11 2 0.17022402 2
12 2 0.49351760 2
13 2 2.03780185 2
14 2 0.38346871 2
15 2 -1.24038077 1
16 2 0.24005867 2
17 2 1.42347182 2
18 2 2.01119984 2
19 2 1.40540244 2
20 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)



 

posted on 2018-01-14 09:55  EleanorInHarbin  阅读(188)  评论(0编辑  收藏  举报