首先盗个图from:https://blog.csdn.net/bravery_again/article/details/81104914
决策树是一种解决分类问题的机器学习算法。他模拟了人思考的过程,当一件事情由很多因素构成的时候,先选择影响性最大的因素进行判断(比如白富美白最重要,其次是富,最后是美)类似的决策树要做的事情就是选出区分度最高的特征,并对样本进行区分,然后在已经分成几类的样本递归使用这种方法,直到1没有特征可以用来区分或2所有样本都落在同一类或3剩余特征值的区分度低到可忽略。
决策树可以实现分类,但由于树过于庞大,有可能发生过拟合现象,所以决策树算法的第二步就是剪枝,使决策树有更好的鲁棒性。
第一部分建树算法:
输入:训练数据集D,特征集A,阀值e
输出:决策树T
1. 如果D中样本都属于同一类,则T为单节点树,返回T;
2. 如果特征集A为空集,则T为单节点树,返回T;
3. 否则,选择区分度最大的特征A[i]
4. 如果特征A[i]的区分度小于阀值e,则将该节点置为叶节点,并将落在该节点中的样本最多的那类作为该节点的标签。
5. 如果特征A[i]的区分度大于阀值e,则根据A[i]的值分割成若干个子节点,落入每个子节点的样本构成新的样本D[j]
6. 对每个新的D[j],对特征集A去除特征A[i]作为新的特征集A',对新的D[j],和A‘作为新的输入递归调用步骤1~6
上面提到的区分度如何定量计算呢?
决策树算法中用信息增益来表示区分度。
首先了解一下信息熵:
想象一个硬币,正反面的概率都是0.5,它的信息熵就是 − ( 0.5 ∗ l o g ( 0.5 ) + 0.5 ∗ l o g 0.5 ) ≈ 0.301 -(0.5*log(0.5)+0.5*log0.5)\approx0.301 −(0.5∗log(0.5)+0.5∗log0.5)≈0.301
再想象一个硬币,证明的概率是1