这部分内容过多,所以主要参考往年题目进行复习。

联结主义的代表是机器学习和深度学习。本文主要讨论机器学习(考虑到往年只考过选择,而选择题又基本不怎么变。。。)

一、决策树

决策树本质就是层层闯关式判断—— 像玩 “是 / 否” 答题游戏一样,从 “根节点”(最开始的判断条件)出发,按实际情况选分支,一步步走到 “叶子节点”(最终结论),全程只做简单的 “符合 / 不符合” 判断,最后给出明确结果。下面用一个经典的 “判断顾客是否会购买电脑” 的实例,来一步步构建决策树。

准备数据集

用ai简单生成了一个数据集,目标:用这些数据构建决策树,输入一个顾客的所有特征,就能判断他 “是否会买电脑”。

分类标准

决策树的每一步,都要选最能区分 “买 / 不买” 的特征作为当前节点。我们用「信息增益」来衡量每个特征的区分能力

  • 熵(Entropy):表示数据集的 “混乱度”(比如 14 个样本里 8 个买、6 个不买,混乱度较高)。
  • 信息增益(Information Gain):“初始熵” 减去 “用某特征划分后的条件熵”,值越大说明这个特征越能减少混乱度,越适合当判断节点。
步骤 1:计算整个数据集的初始熵

整个数据集共 14 个样本,其中8 个买(是)、6 个不买(否)


步骤 2:计算每个特征的信息增益,选最大的作为根节点

我们分别计算「年龄、收入、学生、信用等级」的信息增益:

(1)特征:年龄(分为青年、中年、老年 3 个子集)
  • 青年子集(5 个样本):2 买、3 不买 → 熵≈0.971
  • 中年子集(4 个样本):4 买、0 不买 → 熵 = 0
  • 老年子集(5 个样本):2 买、3 不买 → 熵≈0.971

(2)特征:收入(高、中、低 3 个子集)

同理计算得:

(3)特征:学生(是、否 2 个子集)

学生:

(4)特征:信用等级(一般、优秀 2 个子集)

信用等级:


步骤 3:确定根节点

比较信息增益:年龄(0.292)> 学生(0.151)> 信用等级(0.048)> 收入(0.029)。因此,根节点选 “年龄”,按 “青年、中年、老年” 分成 3 个分支。


步骤 4:对每个分支递归构建子节点
分支 1:中年(4 个样本,全部 “买”)

这个子集已经是 “纯的”(所有标签都是 “是”),直接设为叶子节点(结论:买),无需再判断。

分支 2:青年(5 个样本:2 买、3 不买)

对剩下的特征(收入、学生、信用等级)计算信息增益,发现 **“学生” 的信息增益最大 **(能区分 “买 / 不买”),因此子节点选 “学生”,分为 “是”“否”:

  • 学生→是(2 个样本,全部 “买”)→ 叶子节点(买)
  • 学生→否(3 个样本,全部 “不买”)→ 叶子节点(不买)
分支 3:老年(5 个样本:2 买、3 不买)

对剩下的特征计算信息增益,发现 **“信用等级” 的信息增益最大 **,因此子节点选 “信用等级”,分为 “一般”“优秀”:

  • 信用等级→一般(3 个样本,全部 “买”)→ 叶子节点(买)
  • 信用等级→优秀(2 个样本,全部 “不买”)→ 叶子节点(不买)

用决策树做预测

比如有一个顾客:青年、高收入、不是学生、信用一般

  • 根节点 “年龄”→青年
  • 子节点 “学生”→否
  • 叶子节点→不买(符合数据集中的规律:青年且不是学生的顾客都没买电脑)

回归树

决策树是分类模型,即待预测的变量是离散型的随机变量;但是现实中需要预测的事情不一定都是离散变量,比如说预测明天的最高气温是多少度、预测一年后的房价。这时我们希望计算机能够给我们一个准确的数值作为答案。通常来说,我们把预测值为离散值的任务称为分类任务,而预测值为连续值的任务称为回归任务。

回归树 (Regression Tree) 适用于回归任务,其输出为连续值。其每一 条训练数据都包含若干条件属性,和一个连续的输出值。整体上看,回归树 很像是用于预测一个连续数值类型输出的决策树,只不过回归树会在优化 目标和训练方法上有所不同。

回归树的本质是:把复杂的连续预测问题,拆成 “层层判断→分组→用组内平均值作为预测结果” 的简单过程

举个例子:预测你家小区房子的价格,我们有 3 个特征:

  • 面积(小:<50㎡;中:50-100㎡;大:>100㎡)
  • 房龄(新:<5 年;老:≥5 年)
  • 是否学区房(是 / 否)

回归树的思路是:

  1. 先找一个最能区分房价的特征(比如 “面积”),把房子分成 “小、中、大” 三组;
  2. 对每组再找下一个最能区分房价的特征(比如 “是否学区房”),继续细分;
  3. 当小组里的房价足够 “整齐”(波动很小)时,就用这个小组的平均房价作为该组的预测值。

下面用这个例子来构建回归树并预测

准备数据集

目标:用这些数据构建回归树,输入房子的特征就能预测房价。

步骤 1:怎么选第一个分裂特征?(核心:减少数值波动)

分类树用 “信息增益” 选特征,回归树用 **“均方误差(MSE)的减少量”**——MSE 越小,说明小组内的房价越接近,预测越准。

  • 整个数据集的房价 MSE:先算所有房价的平均值((80+120+200+250+220+100+180+160)/8 = 161.25),再算每个房价与平均值的差的平方的平均,得到初始 MSE≈3514。

  • 我们分别用 “面积”“房龄”“是否学区房” 分裂,看哪个分裂能让 MSE 下降最多:

    ① 用 “面积” 分裂(<50、50-100、>100):

    • <50㎡组(样本 1、6):房价 80、100 → 平均 90 → MSE=100
    • 50-100㎡组(样本 2、3、7、8):房价 120、200、180、160 → 平均 165 → MSE=800
    • 100㎡组(样本 4、5):房价 250、220 → 平均 235 → MSE=225
    • 分裂后的总 MSE = (2/8)×100 + (4/8)×800 + (2/8)×225 = 456.25
    • MSE 减少量 = 3514 - 456.25 = 3057.75

    ② 用 “是否学区房” 分裂(是 / 否):

    • 是组(样本 3、4、6、7):房价 200、250、100、180 → 平均 182.5 → MSE=3281.25
    • 否组(样本 1、2、5、8):房价 80、120、220、160 → 平均 145 → MSE=2750
    • 分裂后的总 MSE = (4/8)×3281.25 + (4/8)×2750 = 3015.625
    • MSE 减少量 = 3514 - 3015.625 = 498.375

    显然,“面积” 分裂后 MSE 下降更多(3057.75 > 498.375),所以根节点选 “面积”


步骤 2:对每个分支继续分裂
  • <50㎡组(样本 1、6):房价 80、100,MSE=100(已经很小,不用再分裂)→ 叶子节点:预测值 = 90 万。
  • 50-100㎡组(样本 2、3、7、8):用 “是否学区房” 分裂,“是” 组(3、7)房价 200、180→平均 190;“否” 组(2、8)房价 120、160→平均 140→MSE 下降明显,所以子节点选 “是否学区房”。
  • >100㎡组(样本 4、5):房价 250、220,MSE=225(波动小)→ 叶子节点:预测值 = 235 万。

用回归树做预测

比如有一套房子:面积 70㎡、房龄 5 年、是学区房

  • 根节点 “面积”→50-100㎡
  • 子节点 “是否学区房”→是
  • 叶子节点→预测 190 万(和数据集中 “50-100㎡+ 学区房” 的平均房价一致)

决策树和回归树是机器学习预测的基础,针对不同任务,选择不同的目标函数进行优化,就可以解决很多问题。后续的几种模型,基本都是建立在它们之上的,因此只做知识点上的总结。

GBRT(梯度提升回归树)

  • 基本假设:多个回归树预测值相加,逐树修正前序模型残差。
  • 优化目标:最小化训练误差 + 模型复杂度惩罚。
  • 训练方法:迭代训练回归树,每棵树拟合前序模型的残差。
  • 预测方法:加总所有树的预测结果。

概率模型:逻辑回归

  • 基本假设:用 sigmoid 函数将线性组合映射到 [0,1] 概率空间,本质是线性分类器。
  • 优化目标:最大化数据似然,转化为最小化 Logistic Loss,支持 L1/L2 正则化。
  • 训练方法:随机梯度下降法(SGD)更新参数。
  • 预测方法:选择概率最大的类别作为输出。

集成学习

模型 样本调整方式 预测方法
Bagging 可放回重复采样生成不同训练集 分类投票、回归取均值
随机森林 随机选择属性构建决策树,随机分裂连续属性 类别投票
AdaBoost 基于前序模型预测结果调整样本权重 加权投票,错误率低的模型权重更高

特征工程

  • 核心目标:降低数据维度、提升模型泛化能力,减少过拟合。
  • 关键技巧:结合 GBRT 与线性模型,将树模型输出作为新特征输入线性模型。

例题

D并不是条件熵,而是初始熵” 减去 “用某特征划分后的条件熵”,即信息增益

C 前面已经证明过了。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐