决策树(Decision Tree)算法是是最经常使用的数据挖掘算法之一。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是 if-then 规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。
一个例子,一个叫做 "二十个问题" 的游戏,游戏的规则很简单:参与游戏的一方在脑海中想某个事物,其他参与者向他提问,只允许提 20 个问题,问题的答案也只能用对或错回答。问问题的人通过推断分解,逐步缩小待猜测事物的范围,最后得到游戏的答案 ,就是一个典型的决策树。
在实际中,决策树有很多典型应用,例如用户流失预测、 精确营销、 客户获取、个性偏好、 信用分析、 欺诈预警 智能预警、问题分类预测、可靠性与安全预测、故障诊断、故障预测、网上质量预测……
作为一个码农经常会不停的敲if, else if, else,其实就已经在用到决策树的思想了。只是你有没有想过,有这么多条件,用哪个条件特征先做if,哪个条件特征后做if比较优呢?怎么准确的定量选择这个标准就是决策树机器学习算法的关键了。1970年代,一个叫昆兰的大牛找到了用信息论中的熵来度量决策树的决策选择过程,方法一出,它的简洁和高效就引起了轰动,昆兰把这个算法叫做ID3,ID3后来进一步发展为C4.5、CART等算法。
难以避免,算法要讲几个概念:
信息量:跟随机事件的概率有关。越小概率的事情发生了产生的信息量越大; 如上海发生地震了,(上海多低的概率发生地震啊,信息量巨大)。 信息量应当是非负的,必然发生的信息量为0; 如太阳从东方升起,(肯定发生嘛,没什