之前转过一篇文章:2016年GitHub排名前20的Python机器学习开源项目(转),说明现在已经有了很多很好的机器学习的包,我们不必从底层开始实现,只要懂点算法、会看文档,一般人也能玩好机器学习。
随着生信领域的数据量越来越多,我们得到知识的途径必然会发生变化,慢慢地我们将不再使用固定呆板的模型,而是使用灵活的机器学习方法从海量数据中提取出知识。
现在我准备开一系列的机器学习算法原理及python包的实例的文章,开始全面的熟悉python和机器学习。
看完上面几个教程基本就能搞懂决策树了。
首先需要一些信息论的基础:
信息增益:ID3,g(D,A) = H(D)-H(D|A),表示了特征A使得数据集D的分类不确定性减少的程度。
信息增益比:C4.5,g‘(D,A)=g(D,A) / H(D),消除了H(D)的影响
基尼指数:CART,(经济学中也有个基尼指数反应社会的贫富差距,链接)
ID3算法就是对各个feature信息计算信息增益,然后选择信息增益最大的feature作为决策点将数据分成两部分。
C4.5与ID3相比其实就是用信息增益比代替信息增益,因为信息增益有一个缺点:信息增益选择属性时偏向选择取值多的属性。
CART(classification and regression tree)的算法整体过程和上面的差异不大,然是CART的决策是二叉树的每一个决策只能是“是”和“否”,换句话说,即使一个feature有多个可能取值,也只选择其中一个而把数据分类两部分而不是多个,它用到的是基尼指数。
注意:Scikit-learn在Linux上很好安装,直接使用pip就可以,而在Windows上很麻烦,乱七八糟的错误。
待续~