最近在读《集体智慧编程》这本书,作了一些笔记,好让自己印象深刻点,不过没有记录太多的细节和代码。
第7章主要涉及决策树分类器。相比于贝叶斯分类器、神经网络分类,决策树分类器的好处在于模型具有易于理
解的特点,可以将结果转换成一系列简单的if-else语句。
实例:
预测某个网站会有多少潜在的付费用户。在注册账号时,应该尽量减少用户注册的工作量,我们可以通过从服务
器的日志中收集信息。比如:用户来自哪个网站,所在地,以及注册之前浏览了多少网页等等,将这些数据放入
一个二维表中,行表示用户,列表示用户的属性。利用决策树算法,我们可以知道有哪些因素表明用户将会成为
付费顾客,那么就可以利用这些信息来指导我们的广告策略制定工作,或者采取其他能够有效增加付费顾客数量
的策略。
书中所涉及的关键点:
1、决策树,顾名思义,其模型是一个树结构。本章采用的CART决策树,CART算法采用一种二分递归分割技术。
2、CART在每一个分支都选择最好的二元切分,即找出合适的属性变量,使得生成的两个数据集合在混杂程度上
能够尽可能小,这里考察了两种方法:基尼不纯度和熵。熵值降低的越多,说明这个属性就越能增加数据集的纯度。
3、树的构造过程是一个递归+贪心的过程。
4、剪枝。在决策树创建时,由于数据中的噪声和离群点,许多分支反映的是训练数据中得异常,因此需要剪枝方
法处理这种过度拟合问题。
5、处理缺失属性(针对测试集)。如果我们缺失了某些数据,而这些数据是确定分支走向必须得,那么可以选择
两个分支都走。这里我们对各分支结果值进行加权统计。
6、处理数值型目标值。如果目标值是数值型的,不可能把所有数字看作不同的分类,可以采用方差作为集合的纯
度来取代熵或基尼不纯度。
决策树应用场景:
决策树的特点是易解释性。上面的例子,在执行完算法之后,我们不仅可以得到一颗用于预测新用户的决策树,
而且可以得到一些规则。这些规则可以知道我们做出一些决策,也可以知道哪些属性对输出结果没有起多大作
用。决策树也有其缺点。当数据集属于的目标值种类太多时,算法预测效果会比较差;当决定分类的因素取决
于更多变量的复杂组合时,决策树不太适合,比如两个变量的差值。
总之,决策树适合那些由大量分类数据和带有明显分界点的数值数据组成的数据集,另外当对决策过程的理解
至关重要时,也可以考虑决策树。