一、机器学习算法选择

https://zh.wikipedia.org/wiki/朴素贝叶斯分类器 中提到“2006年有一篇文章详细比较了各种分类方法,发现更新的方法(如提升树随机森林)的性能超过了贝叶斯分类器”,综合网络中对两者的评价,选择使用随机森林作为机器学习算法。

二、数据预处理

(1)分词:用jieba中文分词将内容切分成一组分词。

(2)热独编码: 将具有多维意义的数据转化成类二进制的数据,例如:”我们”=>包含有”我们”这组词的则为1,否则为0。详见:参考资料(4)

三、Python扩展包sklearn随机森林算法RandomForestClassifier部分参数说明

参数名称
默认值 说明
criterion
gini
纯度计算方式,详见:参考资料(1)
max_features
auto
最大特征数,减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。详见:参考资料(2)
max_depth
None
决策树的最大深度,数据量大的情况下spark项目组建议为4,来自:https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/tree/RandomForest.scala

 

实践部分可参考:《算法实践-随机森林》

参考资料:

(1)Spark 随机森林算法原理、源码分析及案例实战 https://www.ibm.com/developerworks/cn/opensource/os-cn-spark-random-forest/

(2)随机森林(Random Forest) by poll笔记 http://www.cnblogs.com/maybe2030/p/4585705.html

(3)python的决策树和随机森林 https://www.ibm.com/developerworks/cn/opensource/os-cn-spark-random-forest/

(4)OneHotEncoder进行数据预处理 http://willz.net/2013/07/13/data_preprocessing_via_onehotencoder/