文章目录
- 机器学习概述
-
- [一、AI、ML、DL 三者的定义与关系](#一、AI、ML、DL 三者的定义与关系)
-
- [1.1 人工智能(AI --- Artificial Intelligence)](#1.1 人工智能(AI — Artificial Intelligence))
- [1.2 机器学习(ML --- Machine Learning)](#1.2 机器学习(ML — Machine Learning))
- [1.3 深度学习(DL --- Deep Learning)](#1.3 深度学习(DL — Deep Learning))
- 二、机器学习核心术语
-
- [2.1 数据集的基本构成](#2.1 数据集的基本构成)
- [2.2 数据集的划分](#2.2 数据集的划分)
- 三、机器学习的四大分支
-
- [3.1 有监督学习(Supervised Learning)](#3.1 有监督学习(Supervised Learning))
- [3.2 无监督学习(Unsupervised Learning)](#3.2 无监督学习(Unsupervised Learning))
- [3.3 半监督学习(Semi-Supervised Learning)](#3.3 半监督学习(Semi-Supervised Learning))
- [3.4 强化学习(Reinforcement Learning)](#3.4 强化学习(Reinforcement Learning))
- [3.5 四大分支对比](#3.5 四大分支对比)
- 四、机器学习完整流程
-
- [4.1 流程总览](#4.1 流程总览)
- [4.2 数据划分应该在哪个步骤?](#4.2 数据划分应该在哪个步骤?)
- [4.3 训练流程 vs 预测流程](#4.3 训练流程 vs 预测流程)
- 五、特征工程详解
-
- [5.1 五个概念总结](#5.1 五个概念总结)
- [5.2 特征提取(Feature Extraction)](#5.2 特征提取(Feature Extraction))
- [5.3 特征预处理(Feature Preprocessing)](#5.3 特征预处理(Feature Preprocessing))
- [5.4 特征降维(Feature Dimensionality Reduction)](#5.4 特征降维(Feature Dimensionality Reduction))
- [5.5 特征选择(Feature Selection)](#5.5 特征选择(Feature Selection))
- [5.6 特征组合(Feature Cross)](#5.6 特征组合(Feature Cross))
- 六、拟合
-
- [6.1 欠拟合(Underfitting)](#6.1 欠拟合(Underfitting))
- [6.2 过拟合(Overfitting)](#6.2 过拟合(Overfitting))
- [6.3 泛化与奥卡姆剃刀原则](#6.3 泛化与奥卡姆剃刀原则)
机器学习概述
一、AI、ML、DL 三者的定义与关系
刚接触机器学习时,AI、ML、DL 这三个词很容易混淆。实际上它们是一个逐层包含的关系。

1.1 人工智能(AI --- Artificial Intelligence)
英文定义:
"Artificial Intelligence is the science and engineering of making intelligent machines, especially intelligent computer programs."
--- John McCarthy, 1956(达特茅斯会议,AI 一词正式提出)
中文定义:
"人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。"
--- 中国《人工智能标准化白皮书(2018)》
核心理解: 赋予机器以人的智慧,让机器能像人一样感知、思考、决策。AI 是最大的范畴,所有让机器变"聪明"的技术都属于 AI。
1.2 机器学习(ML --- Machine Learning)
英文定义:
"A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E."
--- Tom M. Mitchell, Machine Learning (1997)
中文定义:
"机器学习是一门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身性能的学科。"
核心理解: 机器学习是实现 AI 的一条核心路径。思路不是让程序员手写 if-else 规则,而是喂给模型历史数据,让模型自己从数据中归纳经验和规律。
这里有两个关键点:
- "自己归纳":区别于传统编程(程序员手写逻辑),机器自动从数据中发现模式,不需要人类把规律显式编码。
机器学习是基于模型的学习
- "数据":这里的"数据"是经过特征工程处理后的训练数据,其特征仍然需要人来筛选和设计。这也是 ML 和 DL 的关键分界线之一,深度学习可以自动学习特征,传统机器学习依赖人工特征工程。
1.3 深度学习(DL --- Deep Learning)
英文定义:
"Deep learning allows computational models that are composed of multiple processing layers to learn representations of data with multiple levels of abstraction."
--- Yann LeCun, Yoshua Bengio & Geoffrey Hinton, Nature, 2015
中文定义:
"深度学习是机器学习的一个分支,通过构建具有多个处理层的深层神经网络,学习数据中的多层次抽象表征。"
核心理解: 深度学习利用多层神经网络模拟人脑结构。它最革命性的地方在于可以自动从原始数据中提取特征,不再需要人工做大量特征工程。网络浅层学边缘、纹理,中间层学部件、形状,深层学语义、概念,每一层自动选取对当前任务最有用的特征和权重。
二、机器学习核心术语
2.1 数据集的基本构成

| 术语 | 英文 | 含义 | 类比 |
|---|---|---|---|
| 数据集 | Dataset | 整个表格数据 | 一整张 Excel 表 |
| 样本 | Sample | 数据集中的一行数据 | 表中一行,代表一个个体 |
| 特征 | Feature | 数据集中的一列(标签列除外),也称"属性" | 表中的"学历""工作经验"列 |
| 标签 | Label | 模型需要预测的那一列结果,也称"目标值" | 表中的"就业薪资"列,即要预测的答案 |
2.2 数据集的划分
不能把所有数据都用来训练,需要拆成两部分:

| 子集 | 用途 | 类比 |
|---|---|---|
| 训练集(Train Set) | 喂给模型学习规律 | 学生做的练习题 |
| 测试集(Test Set) | 检验模型是否真正学会了 | 期末考试的试卷 |
常用划分比例: 训练集占 70%~80%,测试集占 20%~30%(即 7:3 或 8:2,训练集总是占大头)。
X_train:训练集的特征X_test:测试集的特征y_train:训练集的标签y_test:测试集的标签
三、机器学习的四大分支
根据训练集是否有标签(y_train),机器学习可以分为不同的学习范式。
注意这里我们说的是训练集!!!
3.1 有监督学习(Supervised Learning)
训练数据中既有特征 X,也有标签 y。模型在有标准答案的情况下学习。
输入: X_train + y_train
根据标签 y 的数据类型,进一步分为两类:
| 子类 | 标签类型 | 典型问题 | 例子 |
|---|---|---|---|
| 回归(Regression) | 连续数值 | 预测一个数 | 房价预测、气温预测、股票价格 |
| 分类(Classification) | 离散类别 | 判断属于哪一类 | 垃圾邮件识别、猫狗识别、疾病诊断 |
3.2 无监督学习(Unsupervised Learning)
训练数据只有特征 X,没有标签 y。模型需要在没有标准答案的情况下,自己发现数据内部的结构和规律。
输入: X_train(只有特征,没有标签)
核心思路: 根据样本之间的相似性对数据进行聚类(Clustering),将"长得像"的样本归为一组,发现数据中隐藏的分组结构。
典型场景:用户分群(把购买行为相似的用户聚在一起做精准营销)、异常检测、图像分割等。
这里有一个值得注意的问题:相似性度量的标准不止一种。 选择欧氏距离还是余弦相似度?用单链接还是全链接?不同的相似性衡量标准,聚类的结果可能完全不同。因此无监督学习中,选取合适的相似性度量是一个核心考量,需要结合业务场景和数据特点来判断。
3.3 半监督学习(Semi-Supervised Learning)
少量数据有标签 + 大量数据无标签。现实中标签获取成本很高(比如医学影像需要专家逐张标注,标注费时费钱),但未标注数据很便宜。半监督学习就是为了解决"标注数据太少"这个痛点。
核心流程:
┌─────────────────┐
│ 少量有标签数据 │ ──→ 训练初始模型
└─────────────────┘ │
▼
┌─────────────────┐ 用模型预测无标签数据
│ 大量无标签数据 │ ──→ 挑出高置信度的打上"伪标签"
└─────────────────┘ │
▼
把这些"新标签数据"加入训练集,重新训练模型
│
▼
重复以上过程,不断迭代
关键理解: 半监督学习从头到尾只在最开始有那少量人工标注标签,之后完全靠模型自己对数据结构的理解(一致性假设、熵最小化等)来利用无标签数据,不再向人类询问。它依赖的是数据自身的内在结构信号,而非外部标注,这一点从根本上区别于强化学习。
3.4 强化学习(Reinforcement Learning)
一个智能体 (Agent)在环境 (Environment)中采取行动,环境给予奖励(Reward)信号,智能体据此调整策略,再采取下一步行动,如此循环。
智能体 ──(采取动作)──→ 环境
↑ │
└──(奖励 + 新状态)─────┘
策略更新,继续行动

类比:做了一整套模拟试卷,老师不告诉你每道题的具体答案,只告诉你"这次总分比上次高了 10 分"。你需要自己复盘、总结、调整,争取下次考得更好。你不知道每道题的正确答案,只知道总体表现是好是坏。
注意这里:不知道每道题的正确答案,只知道总体表现是好是坏。所以强化学习给予的是给予奖励(Reward)信号。
典型场景:AlphaGo 下围棋、自动驾驶决策、机器人控制、游戏 AI。
3.5 四大分支对比
| 对比维度 | 有监督学习 | 无监督学习 | 半监督学习 | 强化学习 |
|---|---|---|---|---|
| 训练数据 | X + y 完整配对 | 只有 X | 少量 X+y + 大量 X | 无固定数据集 |
| 反馈信号 | 明确的正确答案 | 无外部反馈 | 少量明确 + 大量推断 | 环境奖励信号 |
| 核心任务 | 回归 / 分类 | 聚类 / 降维 | 利用无标签数据增强 | 序列决策 |
| 典型算法 | 线性回归、决策树、SVM | K-Means、DBSCAN、PCA | Label Propagation | Q-Learning、DQN、PPO |
四、机器学习完整流程
4.1 流程总览
一个完整的机器学习项目通常经过五个步骤:

各步骤说明:
| 步骤 | 内容 | 说明 |
|---|---|---|
| 1. 获取数据 | 图像、文本、语音、结构化表格等 | 数据的来源和质量决定最终效果的上限 |
| 2. 数据基本处理 | 缺失值填充、异常值检测、类型转换、去重 | 与数据分析中的数据清洗基本一致 |
| 3. 特征工程 | 特征提取、预处理、降维、选择、组合 | 用专业背景知识和技巧处理数据,让模型能更好地学习 |
| 4. 模型训练 | 选择合适的算法在训练集上学习 | 算法选择取决于任务类型(回归/分类/聚类) |
| 5. 模型评估 | 用测试集检验模型泛化能力 | 不同任务有不同评估指标 |
4.2 数据划分应该在哪个步骤?
结论:数据集划分(train/test split)在特征工程之前、数据基本处理之后完成。
原因在于:防止数据泄漏(Data Leakage)。
特征工程中很多操作需要从数据中"学习参数":标准化需要先算训练集的均值和标准差,归一化需要先算训练集的最大值和最小值。如果把测试集也混进去一起算,测试集的信息就"泄漏"到了训练过程中。测试集就不再是"模型从未见过的考题"了,评估结果会虚高,但上线后面对真正的新数据就会暴露问题。也就是说特征工程需要从数据中"学习参数"的时候,用x_train进行训练 fit并且将其转换transform,x_test只是会在这个训练好的基础上进行转换transform。
判断过程顺序的标准:
- 如果某个数据处理操作不需要"学习"任何东西(比如去除 HTML 标签、全量统一去停用词),可以在划分前对整个数据集做。
- 一旦涉及从数据中"学习参数"(计算均值、标准差、最大值、最小值等),就必须只在训练集上
fit,然后将学到的规则transform到测试集。
4.3 训练流程 vs 预测流程

┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 1.获取新数据 │ ──→ │ 2.数据基本处理 │ ──→ │ 3.特征工程 │ ──→ │ 4.模型预测 │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
│
┌───────┴───────┐
│ 返回预测结果 │
└───────────────┘
预测阶段没有"模型训练"和"模型评估",模型已经在训练阶段学好了,预测时直接用学好的模型对新数据做推断。特征工程中使用的变换参数(均值、标准差等)来自训练阶段的 fit 结果,预测时只需 transform,不能重新 fit。
这里所说的预测,是指模型评估通过后对真实新数据做推断。此时数据处理的过程,等同于训练阶段对
X_train的处理方式,只transform,不fit。
五、特征工程详解
数据和特征决定了机器学习的上限,而模型和算法只是不断逼近这个上限而已 。这里先建立整体框架,知道特征工程有哪五类操作、各自的核心目标是什么。具体的 API 和用法在特征工程篇中展开。
5.1 五个概念总结
| 概念 | 一句话核心 | 是否创造新特征 | 是否改变特征含义 |
|---|---|---|---|
| 特征提取 | 从原始数据(文本、图像、时间)中构造出数值特征 | ✅ 是,从无到有 | 原始数据变成向量 |
| 特征预处理 | 对已有数值特征做变换、缩放、编码,让模型更好消化 | 通常不增加维度 | 保留含义,只改数值范围或形式 |
| 特征降维 | 将高维特征映射到低维空间,产生少数新特征 | ✅ 是,生成主成分 | 新特征是原特征的组合,物理意义改变 |
| 特征选择 | 筛选出最有用的原特征,扔掉冗余 | ❌ 否,只删除 | 不改变特征本身 |
| 特征组合 | 用已有特征交叉、乘积构造高阶交互特征 | ✅ 是,基于已有创造 | 新特征表达交互关系 |
5.2 特征提取(Feature Extraction)
把非结构化的原始数据(文字、图像、声音、时间戳)变成模型能读懂的"特征矩阵":一张全是数字的二维表格。
文本数据:
预处理(特征提取的前置步骤,不属于特征工程五大概念):
- 分词 :英文天然有空格分隔,还可配合词干提取(stemming);中文用
jieba、HanLP等分词工具- 去停用词("的""是""在"等高频无意义词)、小写化、词形还原(lemmatization)等
特征提取方法(将文字转为向量):
- 词袋模型(Bag of Words) :
CountVectorizer,统计每个词的出现次数 - TF-IDF :
TfidfVectorizer,既考虑词频又考虑词的区分度 - N-gram:提取连续单词对或字对,捕捉局部语序信息
- 词嵌入(Word Embedding):Word2Vec、GloVe、FastText,用稠密低维向量表示词义
- 句子/文档嵌入:用预训练模型(如 BERT)导出整个句子的语义向量
注意:
jieba是分词工具,属于文本特征提取之前的预处理步骤;TfidfVectorizer等是特征提取方法,两者在不同的阶段发挥作用。
图像数据:
- 传统方法:SIFT(尺度不变特征变换)、HOG(方向梯度直方图)、LBP(局部二值模式)
- 现代方法:用 CNN 中间层的输出作为特征(比如去掉全连接层的 VGG 网络,将卷积层输出直接作为图像的特征向量)
结构化/表格数据:
- 从时间戳提取:年、月、日、星期几、是否周末、小时
- 从地址/名称提取:城市、省份、文本长度
5.3 特征预处理(Feature Preprocessing)
特征提取之后,手上已经是数值矩阵了,但各个特征的量纲、分布、形式可能天差地别。比如"年龄"取值 0~100,而"年收入"取值 0~1,000,000。
如果把这样的原始数据直接喂给模型,收入那一列的数值天然是年龄的 10,000 倍,模型里基于距离或梯度的计算会被大数值特征主导。即使年龄才是真正决定结果的关键因素,只要收入产生一点波动,其影响力就远远超过年龄。这就是量纲差异带来的虚假权重。
无量纲化(统一量纲)的本质: 移除数据里由"单位"和"量级"带来的虚假噪音,让模型把算力和注意力都花在真正的数据规律上,而不是数值的大小悬殊上。
常见方法:
| 方法 | 公式 | 效果 | 适用场景 |
|---|---|---|---|
| 标准化(Standardization) | (x - mean) / std |
均值为 0,标准差为 1 | 数据近似正态分布,如线性回归、SVM、神经网络 |
| 归一化(Min-Max) | (x - x_min) / (x_max - x_min) |
缩放到 0, 1 区间 | 对数据分布无假设;适合距离相关算法如 KNN、K-Means |
类别特征编码:将非数值的类别信息(如"红色/蓝色/绿色")转换成模型能理解的数值形式:
- One-Hot 编码:把"颜色"的三种取值变成三个 0/1 列,每一行只有一个位置是 1
- Label 编码:直接编码为 0, 1, 2,简单但不适合有大小关系的模型(如线性回归),适用于树模型
- 目标编码(Target Encoding):用该类别对应的目标变量均值来编码,能捕捉类别与目标的关系
- 频率编码 / 二进制编码等变体
5.4 特征降维(Feature Dimensionality Reduction)
当特征维度特别高,或者特征之间高度相关时,通过数学变换把很多列融合成少数几个新列,同时尽量保留原始信息。
降维一定会生成新特征,新特征是原有特征的线性或非线性组合,物理含义可能丢失。
典型方法:PCA(主成分分析),无监督方法,找数据方差最大的方向作为新坐标轴,用前几个主成分近似代表原始高维数据。
5.5 特征选择(Feature Selection)
从已有特征中挑出最有用的子集 ,丢弃无用或冗余的。它不改变特征本身含义,只做减法。
常用策略:过滤法(根据统计指标如方差、相关系数筛选)、包裹法(用模型性能反馈迭代选择)、嵌入法(训练过程中自动选择,如 L1 正则化)。
5.6 特征组合(Feature Cross)
人工构造特征之间的交互关系,让模型更容易学到"非线性组合效应"。
经典例子:给模型"身高"和"体重"两个独立特征,模型单靠自己很难直接学到 BMI 这个概念。但如果直接算好 体重 / 身高² 作为新特征喂给它,模型一下就"懂"了。
六、拟合
训练模型,本质上是解决一个根本矛盾,如何在"记住训练数据"和"推广到新数据"之间找到最佳平衡。
拟合(Fitting) 描述的是模型对样本数据点的逼近程度。根据在不同数据集上的表现,分为三种情况。
6.1 欠拟合(Underfitting)
| 维度 | 描述 |
|---|---|
| 表现 | 训练集上表现差,测试集上表现也差 |
| 根因 | 模型学到的特征规律太少,不足以正确判断,模型太简单了 |
| 类比 | 学生连课本例题都没搞懂,考试自然也一塌糊涂 |
| 常见原因 | 模型复杂度过低、特征工程不足、训练不充分 |
| 解决方向 | 增加模型复杂度、增加更多特征、减少正则化强度 |
6.2 过拟合(Overfitting)
| 维度 | 描述 |
|---|---|
| 表现 | 训练集上表现极好,测试集上表现很差 |
| 根因 | 模型把训练数据里的噪声 也当成规律学进去了,模型太复杂了 |
| 类比 | 学生把练习册答案背得滚瓜烂熟(连印刷错误的题目都背了),换一套新题就不行了 |
| 常见原因 | 模型复杂度过高、特征过多、训练数据太少 |
| 解决方向 | 增加训练数据、减少特征数量、增加正则化、使用交叉验证 |
6.3 泛化与奥卡姆剃刀原则
泛化能力(Generalization): 模型在从未见过的新数据上表现好坏的能力。这是机器学习真正追求的目标,不是把训练数据背下来,而是在新数据上也能做出正确判断。
奥卡姆剃刀原则(Occam's Razor): "如无必要,勿增实体。"在机器学习中体现为,给定两个泛化误差相当的模型,选择更简单的那个。简单模型通常有更好的泛化能力、更快的训练速度、也更容易解释。
┌─ 欠拟合 ─┐ ┌── 刚好 ──┐ ┌─ 过拟合 ─┐
模型复杂度: 太低 → 适中 → 太高
训练集表现: 差 好 极好
测试集表现: 差 好 差
泛化能力: 差 好 差
└────────────────────────────────────────┘
训练模型的目标,不是找到能把训练数据完美拟合的那个,而是找到在新数据上也能保持良好表现的那个。欠拟合和过拟合之间的平衡点,就是我们要找的最佳模型。
以上为个人学习总结,旨在梳理个人理解。如有疏漏或不当之处,欢迎指正与交流。如果文章对你有帮助,别忘了点个赞、留个言~ 我们下篇再见!

