📖《机器学习》第4章·通俗解读 | 决策树:像做选择题一样做判断

决策树是机器学习里最像人类思维的模型之一。
它的思路很简单:遇到一个问题,一步步问“是或否”,最终走到一个答案。
就像医生看病:先问“发烧吗?” → 是,再问“咳嗽吗?” → 是 → 可能是感冒……


1. 决策树长什么样?

还是用西瓜举例。你要判断一个瓜是不是好瓜。

你可能这样问自己:

  1. 色泽是什么?

    • 青绿 → 再看根蒂

    • 乌黑 → 再看敲声

    • 浅白 → 大概率不是好瓜

  2. 根蒂怎么个蜷法?

    • 蜷缩 → 好瓜

    • 稍蜷 → 再听敲声

    • 硬挺 → 坏瓜

把这些问题串起来,画成一个树状图,就是决策树

树的顶部叫根结点,中间叫内部结点(每个都是一个判断题),底部叫叶结点(最终答案)。
从根走到叶的过程,就是对瓜的一次完整判断。


2. 怎么构建一棵决策树?—— 分而治之

构建决策树的核心思想:找一个最“好”的属性来作为当前的判断问题

比如,现在有一堆瓜,你要先问一个什么问题?
问“色泽”?还是问“根蒂”?还是问“敲声”?
哪个问题能最好地把好瓜和坏瓜分开,就先问哪个。

这就是划分选择


3. 怎么判断哪个属性最好?—— 三种常用标准

方法一:信息增益(ID3算法)

通俗理解:
问完一个问题后,数据会变“纯”多少?
变得越纯,说明这个问题越有用。

“纯”的意思是:一堆瓜里,要么全是好瓜,要么全是坏瓜,不要混在一起。

信息增益 = 原来的混乱程度 - 问完问题后的混乱程度。
增益越大,说明这个问题越值得先问。

但是存在一个问题:信息增益偏爱取值多的属性。比如“编号”这种每个瓜都不同的属性,信息增益会很大(因为每个分支只有一个瓜,非常纯),但这种树没意义(不能泛化)。所以需要改进。


方法二:增益率(C4.5算法)

给取值多的属性“打个折”,避免偏心。
先算一个“固有值”(取值越多,固有值越大),然后用信息增益除以固有值,得到增益率。

C4.5不是直接选增益率最大的,而是先找信息增益高于平均的,再从中选增益率最高的,既防偏心,又不失效果。


方法三:基尼指数(CART算法)

基尼指数反映的是从一堆瓜里随机抽两个,它们类别不同的概率
基尼指数越小,说明数据越纯。

选属性时,选划分后基尼指数最小的那个。

三种方法各有千秋,实际中差别不大,随便选一种都能用。


4. 剪枝:防止树长得太“茂密”

如果你让树一直长,它可能会把训练数据里的“意外”也当成规律,这就是过拟合
比如某个好瓜刚好颜色浅,树就记住了“颜色浅也是好瓜”,结果新来一个浅白瓜,它可能就判错了。

剪枝就是砍掉一些不必要的树枝。

预剪枝(边建边剪)

每要分一个新分支前,先问:
“分了之后,在验证集上的表现会变好吗?”
如果不会,就不分,把当前结点直接当叶子。

好处:快,不容易过拟合。
坏处:只盯着眼前一步的收益,放弃了可能带来更大收益的深层分支。

后剪枝(建完再剪)

先让树完整长到最大,然后自底向上看每个内部结点:
“把这个子树换成叶子(取多数类),验证集表现会变好吗?”
如果会,就剪。

好处:比预剪枝保留更多分支,泛化能力通常更好。
坏处:慢(要先建完整棵树)。


5. 处理连续值和缺失值

连续值怎么办?

比如“密度”是连续数字,不能直接问“密度等于多少?”
处理办法:二分法
把连续值排序,取相邻两数的中点作为候选切分点,然后像离散属性一样比较信息增益,选最好的那个切分点。

比如密度有0.4、0.5、0.6,候选切分点就是0.45、0.55。
问“密度 ≤ 0.45?”就是一个二分问题。

注意:连续属性可以被重复使用(比如父结点用了“密度≤0.5”,子结点还可以再用“密度≤0.3”)。

缺失值怎么办?

有些样本某个属性值缺失(比如根蒂脱落)。
处理思路:

  • 计算信息增益时,只考虑不缺失的样本,然后按比例折算

  • 划分时,如果样本在该属性上缺失,就以不同概率分到所有分支(概率 = 该分支的样本比例)

C4.5就是这样做的。


6. 多变量决策树:斜着切一刀

传统的决策树每次只问一个属性(如“色泽=青绿?”),所以分类边界是平行于坐标轴的直线或折线。

如果真实的分类边界是斜线,传统决策树需要用很多段折线去逼近,树会很大。

多变量决策树允许结点问多个属性的组合,比如“0.5×色泽 + 0.3×根蒂 > 0.6?”。
这样就能用一条斜线直接分开,树会小很多,也更简洁。

但多变量决策树的每个结点相当于训练一个小分类器,计算量更大。


📌 第四章总结(背下这5句就够了)

  1. 决策树 = 一步一步问“是/否”问题,最后走到答案

  2. 划分属性时,常用信息增益增益率基尼指数

  3. 剪枝(预剪枝/后剪枝)用来防止过拟合

  4. 连续值用二分法处理,缺失值用概率分配处理

  5. 多变量决策树可以斜着切,边界更灵活,树更小


👇 下章预告

第五章讲神经网络——模仿人脑神经元的模型。
你会学到:什么是神经元、什么是BP算法(误差反向传播)、深度学习为什么这么火。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐