NaiveBayes

关于朴素贝叶斯

朴素贝叶斯分类的原理:
对于给出的待分类项目,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项就属于哪个分类。
在这就不给出贝叶斯定理了,其实还是比较好理解的。

那么对于朴素贝叶斯分类器的包有很多,自己用的比较顺手的是e1071和klaR,这次以e1071为例
其中的的主要函数为naiveBayes(formula, data, laplace = 0)
formula: 公式的主要形式为type ~ . ,但是相互作用是不允许的(可以参照贝叶斯信念网络)
laplace: 正面双控制拉普拉斯平滑,默认值为0表示禁用。
data:数据集

data("Glass")
model<-naiveBayes( Type ~ .,data = Glass)
prd_test_Glass<-predict(model, Glass[1:10,],tpye = "raw")
prd_test_Glass

结果如下
> prd_test_Glass [1] 2 1 1 1 1 1 1 1 3 1 Levels: 1 2 3 5 6 7

可以看到对于glass的分类有7种,而对于数据集的前十行玻璃的分类结果为: 2 1 1 1 1 1 1 1 3 1
那么对比下数据,实际上Glass数据集的前10种玻璃的分类都为1,说明分类失误两个,整体判断的准确率还是有的。

总结一下,之前看到有大神用Titanic数据集做朴素贝叶斯分类,得到最后船上的人符合什么样的条件最容易获救,还是比较有意义的,于是自己做了下进行了对比,并且用了e1071和klaR两个包,结果还是不尽相同的。对于朴素贝叶斯整体而言还能做的还有很多,例如根据用户行为的社交网络、网络游戏的流失分析依然可以用到朴素贝叶斯分类器。