欢迎光临
我们一直在努力

第 2 章 机器学习概览

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

《人工智能学习笔记》系列第 3 篇,共 9 篇。

本章导读 从"人写规则"转到"机器从数据里找规则"。这一章是全书的地基:定义、分类、流程、评估、优化、算法,六件事以后每一章都会回来用。

读完你应该能回答:① T、P、E 分别指什么?② 为什么"训练集损失很低"不能说明模型好?③ 偏差和方差各自对应什么毛病、怎么治?

本章骨架

小节一句话核心
2.1 算法 机器学习 = 用经验 E 改进任务 T 的绩效 P,前提是目标函数未知
2.2 分类 有标签是监督(回归/分类),无标签是无监督,与环境交互试错是强化
2.3 流程 数据处理 → 特征 → 建模 → 评估,数据决定能力天花板
2.4 重要方法 梯度下降调参数,超参数靠搜索,交叉验证防"一次侥幸"
2.5 常见算法 八个经典算法各自的假设、优缺点与适用场景

2.1 机器学习算法

定义:T、P、E

机器学习(含深度学习分支)研究的是「学习算法」。所谓「学习」指的是:

有任务 TTT、有衡量标准 PPP:程序在 TTT 上、按 PPP 算出来的表现,会随着经验 EEE 的积累自己变好。

(这是 Tom Mitchell 1997 年给的定义,使用 T / P / E 这套记号。)

三个字母拆开看:

记号含义例子(手写识别)
T(任务) 系统应该如何处理样本 识别手写文字
P(性能度量) 评估算法能力的指标 分类准确率
E(经验) 训练数据;强化学习的经验来自与环境交互 已分类的样例库

要强调的是:深度学习是机器学习的一个分支,理解深度学习必须先理解机器学习的基本原理。

机器学习:从历史数据归纳规律

与传统「基于规则」编程的区别

传统编程机器学习
规则来源 人工用显式代码写死 从样本中训练得到
适用场景 规则可以被人明确描述 规则复杂或难以描述
数据变化 改代码 通过重新训练或在线更新适应

什么时候该用机器学习

  • 问题的解决方案很复杂,或数据量大且没有明确的分布函数;
  • 规则会随时间改变(词性标注——随时产生新词、新词义);
  • 数据分布本身会随时间变化(商品销售趋势预测),程序需要不停重新适应。

规模上有个直觉:小问题用人工规则更划算,问题一大,机器学习才显出优势。

理性认识:目标函数未知

真正的目标函数 fff 是未知的,学习算法永远得不到完美的 fff;它只能训练出一个假设函数 ggg 去逼近 fff,而 ggg 可能与 fff 不同。所有模型评估,本质上就是在衡量 ggg 与 fff 差多远。

能解决的三类问题

任务输出例子
分类 离散类别(把输入归到 k 类之一) 图像分类
回归 连续数值 预测索赔金额、证券价格
聚类 无标注数据按内在相似性分组 图片检索、用户画像

分类与回归是监督学习里的两大预测类型;聚类属于无监督。

2.2 机器学习的分类

范式数据一句话理解典型任务
监督学习 有标签 给一堆选择题连标准答案一起给,让它学会做题 分类、回归
无监督学习 无标签 只给题不给答案,自己把相似的题归堆 聚类
半监督学习 少量有标签 + 大量无标签 用大量未标注数据辅助少量标注数据训练 网页推荐
强化学习 无标准答案,有奖励 做题后老师只批「对/错、加/减分」,不给正确答案 自动驾驶、机器人

机器学习四大范式

几个要点:

  • 监督学习:利用已标类别的样本训练出最优模型,再把输入映射为输出,从而对未知数据分类。
  • 无监督学习:「物以类聚,人以群分」——把相似度高的放一起,新样本算相似度后归类。

无监督学习:没有标签,按数据自身特征分组

  • 半监督学习:现实中未标注数据海量、标注成本高(比如让用户标注感兴趣的网页,很少有人愿意花时间),于是让学习器自动利用未标注数据帮忙。
  • 强化学习:学习的是「环境 → 行为」的映射,目标是让奖励信号最大。它和监督学习的关键差别在教师信号:环境只评价动作好坏(通常是一个标量),不告诉系统正确动作是什么。在线强化学习边交互边学习,离线强化学习也可用预先收集的固定轨迹训练。

随着算法发展,又出现了自监督学习、对比学习、生成式学习等新范式。

监督学习内部:回归 vs 分类

回归分类
输出 连续值 离散类别
例子 下周股票收益、周二温度 饮料瓶属于哪类垃圾、邮件是否垃圾邮件

强化学习的典型判断

  • 自动驾驶:黄灯开始闪,刹车还是加速通过?
  • 扫地机器人:电量剩 10%,还剩一小块没扫,继续扫还是回去充电?

这类「在状态 sss 下选动作 aaa、拿奖惩 rrr、进入下一状态 s′s's′」的循环,就是强化学习的基本框架。

2.3 机器学习的整体流程

主流程

数据准备 → 数据清洗与选择 → 特征提取 → 模型训练
→ 验证评估与反馈迭代 → 最终独立测试 → 模型部署与整合

机器学习的整体流程

基本概念

  • 数据集:任务中用的一组数据,每条叫一个样本;
  • 特征:反映样本某方面表现或性质的属性;
  • 训练集:训练用的数据,样本叫训练样本,学得模型的过程叫学习/训练;
  • 测试集:模型训练好后用来预测的数据,样本叫测试样本。

数据处理:模型能力的天花板

没有好的数据,就没有好的模型。 数据处理三件事:

操作作用
数据清理 填充缺失值,发现并消除噪声与异常
数据标准化 调节特征尺度,减弱量纲差异的影响
数据降维 简化属性,避免维度爆炸

CrowdFlower 2016 年调查中,60% 的受访者把清理和组织数据列为最耗时工作,4% 选择改进算法;这不是工时占比。

「脏」数据的三种毛病:

  • 不完整:缺少属性或含缺失值;
  • 多噪音:含错误记录或异常值;
  • 不一致:存在矛盾、有差异的记录(同一含义在不同表里写法不同)。

预处理通常包括:数据过滤、处理缺失、处理错误/异常值、合并多个数据源、数据汇总。

数据转换

  • 分类问题里把类别数据编码成数值;
  • 数值数据转类别(如年龄分段),减少变量取值;
  • 文本用词嵌入(word2vec、BERT)转成词向量;
  • 图像做颜色空间变换、灰度化、几何变换、Haar 特征、图像增强;
  • 特征工程:归一化/标准化(调节特征尺度;z-score 不保证值域一致)、特征扩充(对现有变量组合或变换生成新特征)。

特征选择

必要性:数据集中很多特征冗余或与预测无关。选好特征能简化模型、缩短训练、提升可解释性、避免维度爆炸与过拟合。

方法怎么做优点局限常见实现
Filter 过滤法 用统计量给每个特征打分排序,独立于模型 快 不考虑特征间关系,易选到冗余变量 皮尔逊相关系数、卡方系数、互信息
Wrapper 包装法 把特征选择当搜索问题,用模型评分选子集 针对模型效果好 每个子集都要训一次模型,计算量大 特征递归消除(RFE)
Embedded 嵌入法 特征选择是模型构建的一部分 一次训练同时完成 依赖具体模型 LASSO、正则化

模型构建

  • 分割数据:训练集 / 验证集 / 测试集;
  • 用训练集训练;
  • 用验证集评估,结合业务反馈迭代微调;
  • 方案确定后,用独立测试集最终评估泛化能力;
  • 部署到生产;
  • 持续监控业务表现。
  • 什么是好模型

    指标说明权重
    泛化能力 对新样本也能预测准(与鲁棒性不同;鲁棒性指输入带噪声、扰动时依然稳) 最重要
    可解释性 预测结果是否容易被解释 视场景
    预测速率 每条数据预测要多久 视场景

    误差:训练误差(训练集上的)与泛化误差(新样本上的)。要的是泛化误差小。

    • 欠拟合:训练误差就很大——模型太简单或训练不足;
    • 过拟合:训练误差很小,但泛化误差大——模型太复杂,把噪声也学了。

    给定问题假定形式后,所有可能的函数构成假设空间,机器学习就是在假设空间里搜一个合适的拟合函数。

    模型容量(复杂度):容量与任务复杂度、数据量匹配时效果最好;容量不足 → 欠拟合;容量过高 → 过拟合。有效容量受算法、参数、正则化限制。

    偏差与方差

    对回归的期望平方误差,在加性零均值噪声等常见假设下可拆成三部分:

    总误差=偏差2+方差+不可消解的误差\\text{总误差} = \\text{偏差}^2 + \\text{方差} + \\text{不可消解的误差}总误差=偏差2+方差+不可消解的误差

    • 偏差(Bias):模型预测的平均值与真实值的差异——「瞄得准不准」;
    • 方差(Variance):固定输入、改变训练集时,预测结果在均值附近的波动幅度——「手抖不抖」。

    四种组合:低偏低方差=好模型;低偏高方差=过拟合倾向;高偏低方差=欠拟合倾向;高偏高方差=不良模型。

    偏差与方差的四种组合

    模型复杂度与误差:训练误差随复杂度上升而单调下降;测试误差先降后升,形成 U 形曲线——那个最低点就是容量最合适的地方。

    模型复杂度与训练/测试误差

    性能评估

    回归:

    • MAE(平均绝对误差):越接近 0 越拟合;
    • MSE(均方误差);
    • R²:通常在 0~1 之间,越大越好(模型比「直接取均值」还差时会为负),R2=1−RSSTSSR^2 = 1 – \\frac{RSS}{TSS}R2=1−TSSRSS​(RSS 是预测值与样本值的差异,TSS 是样本之间的差异)。

    分类:先有混淆矩阵。

    记号含义
    TP 正元组被正确分类
    TN 负元组被正确分类
    FP 负元组被错误标成正(误报)
    FN 正元组被错误标成负(漏报)

    分类性能评估的四个基本术语

    指标:

    准确率=TP+TNP+N查准率=TPTP+FP查全率=TPTP+FN\\text{准确率} = \\frac{TP+TN}{P+N} \\qquad \\text{查准率} = \\frac{TP}{TP+FP} \\qquad \\text{查全率} = \\frac{TP}{TP+FN}准确率=P+NTP+TN​查准率=TP+FPTP​查全率=TP+FNTP​

    F1=2×precision×recallprecision+recallF1 = \\frac{2 \\times precision \\times recall}{precision + recall}F1=precision+recall2×precision×recall​

    一个猫的例子:200 张图,170 张是猫、30 张不是;模型判为猫的 160 张、判为非猫的 40 张。混淆矩阵 TP=140TP=140TP=140、FN=30FN=30FN=30、FP=20FP=20FP=20、TN=10TN=10TN=10,于是查准率 140/160=87.5140/160=87.5%140/160=87.5、查全率 140/170=82.4140/170=82.4%140/170=82.4、准确率 150/200=75150/200=75%150/200=75。

    注意:不少资料在这里把两个数字写反(查全率记成 75%、准确率记成 82.4%),按上面的公式应为 82.4% 与 75%。

    2.4 其他机器学习重要方法

    梯度下降

    用当前位置的负梯度方向作为搜索方向(该方向下降最快):

    wi+1=wi−η∇Lw_{i+1} = w_i – \\eta \\nabla Lwi+1​=wi​−η∇L

    η\\etaη 是学习率,决定每次迭代权重变化的大小。收敛判据:目标函数值变化非常小,或达到最大迭代次数。

    注意:接近极小值时下降幅度越来越小;但在最优点附近的一定范围内,可能存在梯度不稳定的情况。

    梯度下降:沿负梯度方向最快下降

    参数 vs 超参数

    参数超参数
    谁定 模型从数据中「蒸馏」出来,自动学习 人工手动设定
    作用 定义模型功能 控制训练过程
    例子 神经网络权重、SVM 支持向量、线性/逻辑回归系数 Lasso/Ridge 的 λ、学习率、迭代次数、批大小、激活函数、神经元数量、SVM 的 C 与 γ、KNN 的 K、随机森林的树棵数
    保存 作为学习模型的一部分保存 模型外部的配置

    超参数搜索

    标准流程四步:

  • 数据集分成训练集 / 验证集 / 测试集;
  • 在训练集上按性能指标优化参数;
  • 在验证集上按性能指标搜索超参数;
  • 步骤 2、3 交替迭代,最后用测试集评价模型优劣。
  • 方法做法适用
    网格搜索 穷举所有超参数组合 超参数少时可行;神经网络这类维度高的场景行不通(昂贵耗时)
    随机搜索 从分布中随机取样 搜索空间大时优于网格;先粗搜再缩小范围
    贝叶斯搜索 启发式智能搜索 更省评估次数

    交叉验证

    思想:把原始数据分组,一部分训练、一部分验证,轮流来,用平均表现评价分类器。

    k 折交叉验证:

  • 把数据均分成 k 组;
  • 每组轮流做一次验证集,其余 k−1 组做训练集,共得到 k 个模型;
  • 用这 k 个模型在各自验证集上的准确率平均值作为性能指标。
  • 细节:

    • 固定训练集/测试集的问题:测试集太小时,误差估计的统计不确定性大,很难判断算法好坏;数据量大(十万级)时不严重。
    • k≥2k \\geq 2k≥2,常用 5 或 10 折;折数需权衡样本量、估计波动与计算开销。
    • k 折可更稳健地估计泛化表现,辅助模型与超参数选择;本身不保证避免过拟合或欠拟合。
    • K 本身也是超参数。

    k 折交叉验证

    2.5 机器学习的常见算法

    算法总览

    大类子类算法
    有监督 分类 逻辑回归、SVM、神经网络、决策树、随机森林、GBDT、KNN、朴素贝叶斯
    回归 线性回归、SVM、神经网络、决策树、随机森林、GBDT、KNN
    无监督 聚类 K-means、层次聚类、密度聚类
    其他 关联规则、PCA、GMM

    常见机器学习算法总览

    线性回归

    用回归分析确定两种或以上变量间相互依赖的定量关系,属于有监督学习。

    h(x)=wx+bh(x) = wx + bh(x)=wx+b

    • 一个自变量 + 一个因变量且可用直线近似 → 一元线性回归;
    • 两个及以上自变量 → 多元线性回归。

    学出来的不一定是一条直线:只有变量是一维时才是直线,高维时是超平面。比如房价由面积、户型、区域共同决定。

    误差假设:真实值 y=wx+b+ϵy = wx + b + \\epsilony=wx+b+ϵ,误差受众多独立因素影响,假设服从正态分布;由正态分布函数 + 最大似然估计可推出损失函数(均方误差),再用梯度下降求使损失最小的 www。

    多项式回归:数据复杂度超过直线能拟合的范围时(欠拟合),用多项式。它仍属线性回归——非线性体现在特征维度上,而权重 www 之间仍是线性关系。

    防过拟合:

    • 加 L2L2L2 正则项(权重平方和)→ Ridge 回归;
    • 加 L1L1L1 正则项(绝对值)→ LASSO 回归。

    逻辑回归

    名字叫回归,实际是分类模型(解决二分类):

    P(Y=0)=11+ewx+b,P(Y=1)=ewx+b1+ewx+bP(Y=0) = \\frac{1}{1+e^{wx+b}}, \\qquad P(Y=1) = \\frac{e^{wx+b}}{1+e^{wx+b}}P(Y=0)=1+ewx+b1​,P(Y=1)=1+ewx+bewx+b​

    比两个概率值大小,大的就是预测类别。

    • 与线性回归同属广义线性模型;逻辑回归在线性回归基础上引入sigmoid 这个非线性因素并设阈值,因此能处理二分类;
    • 损失函数由最大似然估计得出,同样用梯度下降求解;
    • 加正则项也能防过拟合。

    扩展到多分类:softmax。把 K 维任意实数向量压成 K 维、每元素在 (0,1) 之间且加起来等于 1 的概率分布。例:橙子 0.09、苹果 0.22、香蕉 0.68、其他 0.01 → 判为香蕉。

    决策树

    树结构:每个非叶节点是一次特征属性测试,每个分支是该属性在某值域上的输出,每个叶节点存放一个类别。决策过程从根节点开始,按特征值选分支,直到叶子。

    决策树的根节点、子节点与叶节点

    • 关键在构造:进行属性选择度量,确定特征之间的拓扑结构;核心步骤是分裂属性;
    • 纯度指标:信息熵与 Gini 系数——分割前后纯度差异越大,树越好;
    • 构造三步:特征选择(ID3 / C4.5 / CART 的差别就在选择标准)→ 决策树生成(递归分裂,直到不可分)→ 剪枝(预剪枝/后剪枝,防过拟合)。

    决策树分类案例:结果受三个属性影响

    支持向量机(SVM)

    二分类模型,基本形态是特征空间上间隔最大的线性分类器;加上核技巧后实质上是非线性分类器。学习算法是求解凸二次规划。

    核心思想两句话:

  • 找到一条直线(高维是超平面),让离它最近的样本点尽可能远离它——这些点就是支持向量;
  • 线性不可分时,用非线性映射把低维样本映射到高维,使其线性可分。
  • 常见核函数:线性核、高斯核(用得最多)、多项式核、Sigmoid 核。

    线性 SVM:间隔最大的那条分割线

    K 最邻近(KNN)

    思路:一个样本在特征空间中最近的 k 个样本里,多数属于某类,它就属于该类。

    • 「近朱者赤,近墨者黑」,逻辑极简;
    • 非参数方法,适合决策边界不规则的数据;
    • 分类用多数表决,回归用平均值;
    • 计算量大(要算与所有样本的距离);
    • K 值:越大越平滑、越容易欠拟合;越小越细腻、越容易过拟合。

    朴素贝叶斯

    基于贝叶斯定理,并假设特征之间相互独立(类条件独立性)。给定特征 x1,…,xnx_1,…,x_nx1​,…,xn​,样本属于类别 HHH 的概率:

    P(H∣x1,…,xn)=P(H)⋅P(x1,…,xn∣H)P(x1,…,xn)P(H \\mid x_1,…,x_n) = \\frac{P(H)\\cdot P(x_1,…,x_n \\mid H)}{P(x_1,…,x_n)}P(H∣x1​,…,xn​)=P(x1​,…,xn​)P(H)⋅P(x1​,…,xn​∣H)​

    • 「朴素」就朴素在假定一个属性值在给定类上的影响与其他属性无关——这是为了简化计算;
    • 例:红色、圆、直径约 10 cm 的水果判为苹果——分类器认为三个特征各自独立地贡献概率,不考虑它们之间的相关性;
    • 在大型数据库上准确率高、速度快。

    集成学习

    多个学习器组合解决同一问题,泛化能力往往远强于单个学习器(「群众智慧」)。

    方式做法关键作用代表
    Bagging 并行、独立地训练多个基学习器,再平均/投票 降低方差 随机森林
    Boosting 串行构建,逐步减小综合学习器的偏差 降低偏差,但要防过拟合 AdaBoost、GBDT、XGBoost
    • 典型随机森林 = Bagging + CART 决策树 + 节点随机候选特征:bootstrap 抽样出多个子集,各训一棵树,分裂时再随机选候选特征;分类用多数投票,回归用平均值。
    • GBDT:综合预测由初始预测与各轮学习器的加权输出相加;每轮拟合损失对当前预测的负梯度。以平方损失、初始预测 0、学习率 1 为例:真实 30 岁,第一棵预测 20 岁(残差 10),第二棵拟合残差 10、预测 9(剩 1),第三棵拟合残差 1。

    无监督:K-means 与层次聚类

    K-means 聚类

    • K-means:输入聚类个数 kkk 和 nnn 个数据对象,以最小化簇内平方距离和为目标,迭代形成 kkk 个簇;通常得到局部解,不保证全局最优,可多次初始化择优。
    • 层次聚类:在不同层次上划分数据,形成树形聚类结构;可自下而上聚合,也可自顶向下分拆。树根是包含全部样本的聚类,叶子是单样本聚类。

    章末练习

  • (单选)以下不属于有监督学习的是?D. K-means
  • (判断)梯度下降迭代法是机器学习算法的唯一方法。False

  • 赞(0)
    未经允许不得转载:171主机测评 » 第 2 章 机器学习概览
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址