机器学习基础知识全梳理:从原理到实践
写在前面
机器学习作为人工智能的核心分支,已经渗透到我们生活的方方面面:推荐系统推荐你喜欢的音乐、垃圾邮件自动识别、自动驾驶车辆感知环境、医疗辅助诊断等等。但你是否想过,这些系统是如何"学习"的?
本文适合对机器学习已有初步了解的学习者进行系统复习,内容从基础概念到算法原理,由浅入深,注重理解而非死记硬背。如果你是机器学习新手,强烈推荐先系统学习吴恩达老师的经典课程。
推荐入门课程:
- 吴恩达机器学习 2025 重制版 - B站高清完整课程,附课件和实战项目
- CS229: Machine Learning - 斯坦福大学官方课程资料
- 3Blue1Brown: Neural Networks - 视觉化理解神经网络
一、什么是机器学习?
形式化定义
机器学习是人工智能的一个分支,它使计算机系统能够从数据中学习并做出决策或预测,而无需进行明确的编程。
通俗理解:假设你有一个数据集,需要通过这个数据集找出一个函数或方法来分析数据并对新数据进行预测。从这个角度看,机器学习本质上就是"找函数"的过程。
学习范式类比
我们可以用一个形象的类比来理解机器学习的核心思想:
| 传统编程 | 机器学习 |
|---|---|
| 输入数据 + 明确规则 → 输出结果 | 输入数据 + 期望输出 → 推导规则 |
| 规则由人类编写 | 规则从数据中学习 |
| 适合规则明确的任务 | 适合规则难以定义的任务 |
举例说明:
- 传统编程:编写一个程序判断数字是否能被 2 整除——规则明确(
x % 2 == 0) - 机器学习:训练模型识别手写数字——规则难以用代码表达,需要从大量样本中学习
学习的三要素
有效的机器学习需要三个核心要素:
- 数据(Data):学习的素材,质量决定上限
- 模型(Model):函数的假设空间,决定表达能力
- 算法(Algorithm):从数据中优化模型参数的方法
延伸阅读:
- Mitchell, T. (1997). Machine Learning - 经典教材,学习形式化定义
- Learning representations by back-propagating errors - 神经网络反向传播经典论文
二、机器学习四大范式

1. 有监督学习(Supervised Learning)
核心思想
有监督学习利用带有标签的训练数据(labeled data),学习从输入变量 X 到输出变量 Y 的函数映射。
数学表达:
$$ y = f(x) $$其中:
- $x$ 是输入特征向量
- $y$ 是目标标签或值
- $f$ 是我们要学习的函数
任务类型
| 类型 | 输出类型 | 典型应用 |
|---|---|---|
| 分类问题 | 离散类别 | 垃圾邮件检测、图像识别、疾病诊断 |
| 回归问题 | 连续数值 | 房价预测、股票价格、气温预报 |
代表算法
- 线性回归、逻辑回归
- 决策树、随机森林、XGBoost
- 支持向量机(SVM)
- K近邻算法(KNN)
- 神经网络
集成学习
集成学习将有监督学习推向了新高度,它将多个"弱"模型组合成"强"模型:
- Bagging(装袋法):并行训练多个独立模型,投票或平均决策(如随机森林)
- Boosting(提升法):串行训练模型,后续模型纠正前序错误(如 AdaBoost、XGBoost)
延伸阅读:
- Scikit-learn Supervised Learning Guide - 监督学习官方指南
- XGBoost: A Scalable Tree Boosting System - XGBoost 原论文
2. 无监督学习(Unsupervised Learning)
核心思想
无监督学习处理只有输入变量 X 的训练数据,利用未标注数据对数据的内在结构建模。它不需要标签,而是要发现数据中隐藏的模式。
任务类型
| 类型 | 目标 | 典型应用 |
|---|---|---|
| 关联分析 | 发现事物同时出现的规律 | 购物篮分析(买啤酒的人也常买尿布) |
| 聚类 | 将相似样本归为一组 | 客户分群、图像压缩、异常检测 |
| 降维 | 减少特征维度,保留关键信息 | 数据可视化、特征提取、降噪 |
| 异常检测 | 识别偏离正常模式的数据 | 欺诈检测、系统监控 |
降维机制
降维是减少数据维度同时保留有意义信息的技术,分为两类:
- 特征选择:选择原始特征的一个子集
- 特征提取:将数据从高维空间变换到低维空间(如 PCA)
代表算法
- K-means 聚类
- 主成分分析(PCA)
- Apriori 关联规则
- 自编码器
延伸阅读:
- Unsupervised Learning Guide - 无监督学习指南
- Principal Component Analysis - PCA 交互式可视化
3. 半监督学习(Semi-supervised Learning)
核心思想
半监督学习结合了有监督学习和无监督学习的特点,使用少量标注数据和大量未标注数据。这在标注成本高昂的场景中特别有价值。
常见场景
- 医学影像诊断(专家标注成本高)
- 网页分类(海量的未标注网页)
- 语音识别(标注时间序列数据困难)
典型方法
- 自训练(Self-training):用有监督学习模型预测未标注数据,将高置信度样本加入训练集
- 生成模型:假设数据服从特定分布(如高斯混合模型)
- 图半监督:利用数据间的邻接关系传播标签
延伸阅读:
- A Survey on Semi-Supervised Learning - 半监督学习综述
- Label Propagation Algorithm - 标签传播算法
4. 强化学习(Reinforcement Learning)
核心思想
强化学习通过试错(Trial and Error) 来学习最优策略,目标是最大化累积回报。智能体(Agent)根据当前状态选择动作,环境反馈奖励和下一状态。
关键要素
| 要素 | 说明 |
|---|---|
| 状态(State) | 智能体所处的环境状况 |
| 动作(Action) | 智能体可以采取的操作 |
| 奖励(Reward) | 环境对动作的反馈,正向奖励鼓励、负向奖励惩罚 |
| 策略(Policy) | 从状态到动作的映射函数 |
典型应用
- 游戏AI(AlphaGo、星际争霸AI)
- 机器人控制(步行、抓取)
- 自动驾驶
- 推荐系统(探索与利用)
核心算法
- Q-learning(基于价值函数)
- SARSA(同策略时序差分)
- Policy Gradient(基于策略梯度)
- Actor-Critic(价值+策略混合)
延伸阅读:
- Reinforcement Learning: An Introduction - Sutton & Barto 经典教材
- Human-level control through deep reinforcement learning - DeepMind 论文
三、核心概念深度解析
1. 偏差-方差权衡
机器学习模型面对的是一个永恒的矛盾:太简单的模型学不到复杂规律,太复杂的模型会记住噪声。

偏差(Bias)
定义:模型预测值与真实值的平均偏离程度,反映模型本身的拟合能力。
高偏差:模型太简单,无法捕捉数据的真实规律,表现为欠拟合。
比喻:用一个直尺去拟合弯曲的数据,无论怎么调整直尺都画不出那条曲线。
方差(Variance)
定义:同一模型在不同训练数据集上的预测波动程度,反映模型对数据扰动的敏感度。
高方差:模型太复杂,对训练数据的噪声过度敏感,表现为过拟合。
比喻:考试前死记硬背了模拟卷的所有题目,但考试遇到稍有不同的题就蒙了。
噪声(Noise)
定义:数据中无法消除的随机误差,代表了任务本身的难度,是泛化误差的下界。
泛化误差分解
$$ \text{泛化误差} = \text{偏差}^2 + \text{方差} + \text{噪声} $$| 模型复杂度 | 偏差 | 方差 | 泛化误差 |
|---|---|---|---|
| 低(简单模型) | 高 | 低 | 高(欠拟合) |
| 中(适中模型) | 中 | 中 | 低(最佳) |
| 高(复杂模型) | 低 | 高 | 高(过拟合) |
延伸阅读:
- Understanding the Bias-Variance Tradeoff - 详细解释
- 百面机器学习:偏差与方差 - 中文经典教材
2. 过拟合与欠拟合
表现特征
| 现象 | 训练集表现 | 测试集表现 |
|---|---|---|
| 过拟合 | 优秀(近乎完美) | 差(远差于训练集) |
| 欠拟合 | 差 | 差 |
| 恰当拟合 | 良好 | 接近训练集 |
过拟合的原因
- 模型过于复杂:参数数量远超数据规模
- 训练数据不足:样本无法代表真实分布
- 数据噪声过大:模型将噪声当作特征学习
- 训练时间过长:过度训练导致"死记硬背"
欠拟合的原因
- 模型过于简单:表达能力不足
- 特征工程不足:关键特征缺失
- 训练不充分:未收敛或迭代次数过少
解决过拟合的方法
| 方法 | 原理 | 适用场景 |
|---|---|---|
| 更多数据 | 提供更全面的样本分布 | 数据收集成本可接受 |
| 数据增强 | 通过变换生成额外样本 | 图像、文本数据 |
| 正则化 | 添加参数惩罚项,限制复杂度 | 参数过多的模型 |
| Dropout | 训练时随机丢弃神经元 | 深度神经网络 |
| 早停法 | 验证误差上升时停止训练 | 迭代式训练 |
| 交叉验证 | 更客观地评估泛化能力 | 小数据集 |
解决欠拟合的方法
| 方法 | 说明 |
|---|---|
| 增加新特征、特征组合 | |
| 添加多项式特征(如 $x^2$, $x^3$) | |
| 减少正则化强度 | |
| 使用更复杂的模型(深度学习、核SVM) |
延伸阅读:
3. 正则化与参数稀疏性
为什么参数越小代表模型越简单?
正则化的核心思想是通过约束参数大小来限制模型复杂度,其原理可以从数学直观理解:
- 参数稀疏即特征选择:小的参数意味着对应特征的权重低,相当于弱化了该特征
- 平滑性:参数越小,函数曲线越平滑,不会在小区间内剧烈波动
- 梯度控制:大参数会产生大梯度,导致预测值在局部剧烈变化
L1 与 L2 正则化

| 类型 | 公式 | 特点 | 典型应用 |
|---|---|---|---|
| L1(Lasso) | $\lambda \sum | \theta_i | $ |
| L2(Ridge) | $\lambda \sum \theta_i^2$ | 平滑解,防止参数过大 | 岭回归 |
L1 为什么能产生稀疏解?
L1 正则化的损失函数等值线是菱形的,与无约束最优解的交点更容易落在坐标轴上,意味着某些参数恰好为 0。
延伸阅读:
- L1 and L2 Regularization - 可视化理解
- The Lasso - Lasso 理论基础
四、经典算法详解
有监督学习算法
1. 线性回归(Linear Regression)
基本原理
线性回归假设目标变量与特征之间存在线性关系,通过最小化预测误差(通常用最小二乘法)来拟合最佳直线或超平面。
数学表达:
$$ h_\theta(x) = \theta_0 + \theta_1 x_1 + \dots + \theta_n x_n $$损失函数:
$$ J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 $$优缺点
| 优点 | 缺点 |
|---|---|
| 实现简单、计算高效 | 只能建模线性关系 |
| 可解释性强(参数即特征重要性) | 对异常值敏感 |
| 是很多复杂算法的基础 | 需要满足高斯噪声假设 |
代码示例
| |
延伸阅读:
- Linear Regression Implementation - scikit-learn 官方文档
- The Elements of Statistical Learning - 统计学习圣经
2. 逻辑回归(Logistic Regression)
基本原理
逻辑回归用于二分类问题,通过 Sigmoid 函数将线性输出映射到 $[0,1]$ 区间,表示属于正类的概率。
Sigmoid 函数:
$$ \sigma(z) = \frac{1}{1 + e^{-z}} $$决策规则:当 $P(y=1|x) > 0.5$ 时预测为正类,否则为负类。
为什么需要 Sigmoid?
线性模型的输出范围是 $(-\infty, +\infty)$,而概率必须限制在 $[0,1]$。Sigmoid 函数完美解决了这个问题:
- 指数函数 $e^z$ 恒大于 0
- 除以自身加 1,保证结果小于 1
- 极限行为:$\sigma(-\infty) = 0$, $\sigma(+\infty) = 1$
决策边界
逻辑回归的决策边界是线性的(或超平面),当特征空间线性可分时效果良好,否则需要引入多项式特征。
代码示例
| |
延伸阅读:
- Logistic Regression Guide - 官方指南
- The Sigmoid Function - 数学性质
3. 决策树(Decision Tree)
基本原理
决策树通过一系列是/否问题将数据逐步分割到叶子节点,每个节点对应一个特征判断,叶子节点对应预测结果。
工作流程:
- 选择最优特征和切分点
- 根据切结果将数据分为子集
- 递归构建左右子树
- 达到停止条件(深度、样本数、纯度)时生成叶子
关键概念
| 概念 | 说明 |
|---|---|
| 信息增益 | 切分前后信息熵的减少量 |
| 基尼指数 | 衡量集合纯度(越小越纯) |
| 剪枝 | 减少复杂度,防止过拟合 |
优缺点
| 优点 | 缺点 |
|---|---|
| 可解释性强(可视化为树结构) | 容易过拟合 |
| 无需特征缩放 | 不稳定(数据微小变化导致树结构大变) |
| 可处理分类和回归任务 | 难以建模线性关系 |
代码示例
| |
延伸阅读:
- Scikit-learn Decision Trees - 官方文档
- CART: Classification and Regression Trees - CART 算法经典著作
4. 朴素贝叶斯(Naive Bayes)
基本原理
朴素贝叶斯基于贝叶斯定理,通过先验概率和似然计算后验概率进行分类。
贝叶斯定理:
$$ P(h|d) = \frac{P(d|h)P(h)}{P(d)} $$其中:
- $P(h|d)$ 是后验概率(在数据 d 下假设 h 为真的概率)
- $P(d|h)$ 是似然(假设 h 为真时数据 d 的概率)
- $P(h)$ 是先验概率
- $P(d)$ 是证据因子(归一化常数)
为什么"朴素"?
朴素贝叶斯假设所有特征相互独立。这个假设在现实中很少成立,但算法依然在实践中效果很好,原因是:
- 对分类要求不高,只要找到概率最高的类别即可
- 特征独立性假设带来的简化往往抵消了假设误差
应用场景
- 文本分类(垃圾邮件过滤、新闻分类)
- 情感分析
- 医学诊断
示例:天气与运动
给定历史数据:{天气, 温度, 湿度} → 是否运动,当今天是 {晴天, 炎热, 高湿} 时,计算:
- $P(\text{运动}|晴天,炎热,高湿)$
- $P(\text{不运动}|晴天,炎热,高湿)$
选择概率更高的作为预测结果。
延伸阅读:
- Naive Bayes Documentation - 官方文档
- Naive Bayes for Text Classification - 文本分类应用
5. K近邻算法(KNN)
基本原理
KNN 是一种基于实例的学习,不显式训练模型,而是直接存储所有训练数据。预测时,找到 k 个最相似的训练样本,根据它们的标签进行预测。
工作流程
- 计算待分类样本与所有训练样本的距离(欧氏距离、曼哈顿距离等)
- 选择距离最近的 k 个样本
- 分类问题:采用多数投票;回归问题:采用平均值
关键超参数
| 参数 | 影响 |
|---|---|
| k | k 过小(k=1):过拟合、对噪声敏感;k 过大:欠拟合、决策边界模糊 |
| 距离度量 | 欧氏距离、曼哈顿距离、余弦相似度等 |
| 权重 | 等权重、距离加权(近邻权重更大) |
优缺点
| 优点 | 缺点 |
|---|---|
| 实现简单、直观 | 预测慢(需要计算与所有训练样本的距离) |
| 无需训练阶段 | 对数据分布敏感 |
| 可处理多分类任务 | 需要合适的距离度量和 k 值 |
延伸阅读:
6. 支持向量机(SVM)
基本原理
SVM 在特征空间中寻找一个最优超平面,使两类样本点之间的**间隔(Margin)**最大化。
核心思想
- 最大间隔:选择距离两类样本都最远的超平面,提高泛化能力
- 支持向量:位于间隔边界上的样本点,唯一影响决策边界的点
- 核技巧:通过核函数将数据映射到高维空间,解决线性不可分问题
数学基础
超平面方程:$w \cdot x + b = 0$
决策函数:$f(x) = \text{sign}(w \cdot x + b)$
优化目标:
$$ \min_{w,b} \frac{1}{2}\|w\|^2 + C \sum_{i=1}^{n} \xi_i $$其中 $\xi_i$ 是松弛变量,$C$ 是正则化参数。
常用核函数
| 核函数 | 公式 | 特点 |
|---|---|---|
| 线性核 | $K(x,y) = x \cdot y$ | 线性可分数据,速度快 |
| 多项式核 | $K(x,y) = (x \cdot y + c)^d$ | 可捕获非线性关系 |
| RBF核(高斯核) | $K(x,y) = \exp(-\gamma \|x-y\|^2)$ | 最常用,可拟合复杂边界 |
| Sigmoid核 | $K(x,y) = \tanh(\kappa x \cdot y + c)$ | 类似神经网络激活 |
优缺点
| 优点 | 缺点 |
|---|---|
| 在高维空间高效 | 对大规模数据较慢 |
| 核技巧灵活 | 对噪声敏感(软间隔 SVM 可缓解) |
| 小数据集表现优异 | 核函数和参数选择困难 |
延伸阅读:
无监督学习算法
1. K-means 聚类
基本原理
K-means 是一种迭代聚类算法,将数据划分为 K 个簇,使簇内相似度高、簇间相似度低。
算法流程
| |

关键问题
| 问题 | 说明 |
|---|---|
| K 值选择 | 肘部法则、轮廓系数、Gap Statistic |
| 初始中心敏感 | K-means++ 改进初始中心选择 |
| 收敛到局部最优 | 多次随机初始化取最佳结果 |
| 簇形状假设 | 假设簇是凸形,不适合复杂形状 |
代码示例
| |
延伸阅读:
- K-Means Clustering Algorithm - 官方文档
- K-means++: The Advantages of Careful Seeding - K-means++ 原论文
集成学习算法

1. 随机森林(Random Forest)
基本原理
随机森林是 Bagging 集成学习的典型代表,它并行训练多棵决策树,最终通过投票(分类)或平均(回归)进行预测。
两个随机性
- 样本随机性:每棵树使用自助采样(Bootstrap)得到的训练集
- 特征随机性:每个节点只从随机选择的特征子集中寻找最佳切分
两个随机性的作用
- 减少树之间的相关性
- 降低整体方差
- 提高泛化能力
优缺点
| 优点 | 缺点 |
|---|---|
| 准确率高、泛化能力强 | 模型较大,预测速度慢 |
| 可评估特征重要性 | 超参数较多 |
| 对异常值和缺失值鲁棒 | 某些情况下不如梯度提升树 |
延伸阅读:
- Random Forests - 随机森林原论文
- Understanding Random Forests - 从零实现
2. AdaBoost(自适应提升)
基本原理
AdaBoost 是 Boosting 算法的代表,它串行训练一系列弱分类器,每个新分类器关注前序分类器分错的样本,最终加权组合所有分类器。
算法流程
| |
核心机制
| 机制 | 说明 |
|---|---|
| 样本加权 | 分错的样本权重增加,后续分类器更关注它们 |
| 分类器加权 | 错误率低的分类器权重更大 |
| 指数损失 | 优化目标为最小化指数损失函数 |
手写识别例子
理解 AdaBoost 的一个经典场景是手写数字识别:
- 第一个弱分类器可能只识别"有闭合圆圈的数字"(0, 6, 8, 9)
- 第二个弱分类器可能识别"有竖线的数字"(1, 4, 7)
- 组合起来就能区分所有数字
延伸阅读:
- AdaBoost Algorithm - 官方文档
- A Decision-Theoretic Generalization of On-line Learning - AdaBoost 原论文
3. XGBoost
基本原理
XGBoost(eXtreme Gradient Boosting)是 Gradient Boosting 的高效实现,通过正向分步添加模型,每一步都拟合上一轮的残差。
核心特性
| 特性 | 说明 |
|---|---|
| 二阶导数:利用泰勒展开二阶信息,优化更精准 | |
| 正则化:自动添加正则化项,防止过拟合 | |
| 并行处理:特征维度并行、数据并行 | |
| 处理缺失值:自动学习缺失值的分裂方向 | |
| 可剪枝:基于信息增益进行后剪枝 |
为何如此流行?
- 准确率高,是许多 Kaggle 比赛的制胜算法
- 计算效率高,支持分布式训练
- API 设计友好,接口丰富
延伸阅读:
深度学习简介
神经网络(Neural Networks)
基本原理
神经网络模仿生物神经元结构,由输入层、隐藏层、输出层组成,每层包含多个神经元,层间通过权重连接。

前向传播
输入数据从输入层流向输出层,每层神经元接收前层输出,经过加权求和、激活函数处理,输出到下一层。
$$ a^{(l)} = \sigma(W^{(l)} a^{(l-1)} + b^{(l)}) $$反向传播
通过链式法则从输出层向输入层计算梯度,更新权重以最小化损失函数。
常用激活函数
| 激活函数 | 公式 | 特点 |
|---|---|---|
| ReLU | $\max(0, x)$ | 解决梯度消失,计算快 |
| Sigmoid | $\frac{1}{1+e^{-x}}$ | 输出概率,适合二分类 |
| Tanh | $\frac{e^x-e^{-x}}{e^x+e^{-x}}$ | 零中心化 |
| Softmax | $\frac{e^{x_i}}{\sum e^{x_j}}$ | 多分类归一化 |
延伸阅读:
- Neural Networks and Deep Learning - 在线教程
- Deep Learning - Goodfellow 等经典教材
五、图像特征工程
在深度学习普及前,传统机器学习需要手动设计特征。以下是经典图像特征:
| 特征 | 全称 | 原理 | 应用 |
|---|---|---|---|
| HOG | Histogram of Oriented Gradient | 局部区域梯度方向直方图 | 行人检测 |
| LBP | Local Binary Pattern | 中心与邻域像素灰度比对 | 红理检测、纹理分类面识别 |
| Haar | Haar-like | 矩形区域像素差值 | 人脸检测(Viola-Jones) |
注意:深度学习时代,这些手工特征很大程度上被 CNN 自动学到的特征所取代,但理解它们有助于洞察特征工程的本质。
六、学习资源推荐
官方文档与框架
- Scikit-learn Documentation - Python 机器学习标准库
- TensorFlow Tutorials - Google 深度学习框架
- PyTorch Tutorials - Meta 深度学习框架
经典教材
- The Elements of Statistical Learning - 统计学习基础
- Pattern Recognition and Machine Learning - 贝叶斯视角
- Deep Learning - 深度学习圣经
中文资源
- 百面机器学习 - 面试题集
- 西瓜书:机器学习 - 周志华经典教材
- 南瓜书:南瓜书对西瓜书的数学推导 - 数学推导详解
实战平台
总结:机器学习是一个广阔而精深的领域,本文涵盖了其核心概念和经典算法。掌握这些基础知识后,你可以根据具体问题选择合适的算法,并通过调参、特征工程、集成学习等手段不断提升模型性能。记住,实践是最好的老师——动手实现、调参、分析结果,你会发现机器学习的魅力所在。