笔记参考和出处:
- 《机器学习》周志华
- Datawhale吃瓜教程
重学机器学习,巩固基础数学推导知识。
原笔记用Typora完成,这里主要学习一些基本概念和一些概念的数学表达,方面在后面推导中快速建立体系。
1 - 机器学习中的基本概念
机器学习
机器学习,致力于研究如何通过计算的手段, 利用经验来改善系统自身的性能.
在计算机系统中,“经验”通常以“数据”形式存在。
因此, 机器学习所研究的主要内容, 是关于在计算机上从数据中产生 “模 型” (model) 的算法, 即 “学习算法”(learning algorithm).
有了学习算法, 我 们把经验数据提供给它, 它就能基于这些数据产生模型;
在面对新的情况时(例 如看到一个没剖开的西瓜), 模型会给我们提供相应的判断(例如好瓜).
如果说 计算机科学是研究关于 “算法”的学问, 那么类似的, 可以说机器学习是研究 关于“学习算法”的学问.
基本术语
-
数据集(data set)
-
样本(sample)& 示例(instance):构成样本
-
特征(feature) & 属性(attribute)
-
属性值(attribute value)
-
样本空间(sample space) & 属性空间 & 输入空间:属性张成的空间
-
把"色泽" “根蒂” "敲声"作为三个坐标轴,它们张成 一个用于描述西瓜的三维空间,每个西瓜都可在这个空间中找到自己的坐标位置。由于空间中的每个点对应一个坐标向量,因此我们也把个一个示例称为一个 “特征向量” (feature vector). (通常是高维的)
-
一般的向量表示:
- m m m 个示例的数据集: D = { x 1 , x 2 , … , x m } D=\left\{\boldsymbol{x}_{1}, \boldsymbol{x}_{2}, \ldots, \boldsymbol{x}_{m}\right\} D={x1,x2,…,xm} (每个示例由 d d d个属性描述"例如上面的西瓜数据使用了3 个属性“)
- 一个示例为: x i = ( x i 1 ; x i 2 ; … ; x i d ) \boldsymbol{x}_{i}=\left(x_{i 1} ; x_{i 2} ; \ldots ; x_{i d}\right) xi=(xi1;xi2;…;xid) , x i ∈ X \boldsymbol{x}_{i} \in \mathcal{X} xi∈X。(其中 x i j x_{i j} xij 是 x i \boldsymbol{x}_{i} xi 在第 j j j 个属性上的取值(例如上述第 3 个西瓜在第 2 个属性上的值是 “硬 挺” ))
-
学习(learning) & 训练(training):从数据中学习到模型
-
训练数据 和 数据样本 和 数据集
-
假设(hypothesis):模型对应于数据的某种潜在的规律(其实是一种分布)
-
真相(ground-truth):规律本身
-
学习器:就是模型,算法在给定数据和参数空间上的实例化
-
标记(label):好瓜 & 坏瓜
-
实例(example):拥有了标记信息的示例(sample)
- ( x i , y i ) \left(\boldsymbol{x}_{i}, y_{i}\right) (xi,yi) 表示第 i i i 个样例, 其中 y i ∈ Y y_{i} \in \mathcal{Y} yi∈Y 是示例 x i \boldsymbol{x}_{i} xi 的标记。
-
**标记空间 & 输出空间:**所有标记的集合 Y \mathcal{Y} Y
-
预测任务类型:
- 分类(二分类&多分类)
- 回归
- 预测任务的数学描述:一般地, 预测任务是希望通过对训练 集 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } \left\{\left(\boldsymbol{x}_{1}, y_{1}\right),\left(\boldsymbol{x}_{2}, y_{2}\right), \ldots,\left(\boldsymbol{x}_{m}, y_{m}\right)\right\} {(x1,y1),(x2,y2),…,(xm,ym)} 进行学习, 建立一个从输入空间 X \mathcal{X} X 到输出空间 Y \mathcal{Y} Y 的映射 f : X ↦ Y f: \mathcal{X} \mapsto \mathcal{Y} f:X↦Y.
- 对二分类任务, 通常令 Y = { − 1 , + 1 } \mathcal{Y}=\{-1,+1\} Y={−1,+1} 或 { 0 , 1 } ; \{0,1\} ; {0,1};
- 对多分类任务, ∣ Y ∣ > 2 ; |\mathcal{Y}|>2 ; ∣Y∣>2;
- 对回归任务 , Y = R , R , \mathcal{Y}=\mathbb{R}, \mathbb{R} ,Y=R,R 为实数集.
-
学习任务分类:是否拥有标记信息
- 监督学习:分类和 回归
- 无监督学习:聚类
-
泛化能力(generalization):适应新样本的能力
机器学习中的一个基本假设:通常假设样本空间中全体样本服从一个未知“分布” (distribution) D \mathcal{D} D, 我们获得的每个样本都是独立地从这个分布上采样获得的, 即 “独立同分布” (independent and identically distributed, 简称 i . i . d . ) i . i . d .) i.i.d.). 一般而訁, 训练样本越多, 我们得到的关于 D \mathcal{D} D 的信息。
假设空间
- 归纳(induction)和演绎(deduction)
- 假设空间:所有假设组成的空间。学习过程即是在假设空间搜索匹配的假设;假设的表示一旦确定,假设空间及其规模大小就确定了。
- 假设空间(换种说法):所有可能的函数构成的空间称为“假设空间”。(假设为线性,即为
a
x
+
b
=
y
ax + b = y
ax+b=y)
- 若“色泽”“根蒂” “敲声” 分别有3、2、2 种可能取值, 则我们面临的假设空间规模大小(判断是好瓜的为 4 × 3 × 3 + 1 = 37 4 \times 3 \times 3+1=37 4×3×3+1=37 (1 为恒假)。(图 1.1 1.1 1.1-箭头是表示搜索方式或者内部的一种结构)

- 版本空间(version space):实际训练是基于有限样本,存在多个假设与训练集一致。(假设为线性,即为 x + 3 = y x + 3 = y x+3=y or 2 x − 5 = y 2x - 5 = y 2x−5=y

2 - 模型评估与选择
经验误差
-
错误率(error rate): m m m 个样本中有 a a a 个样本分类错误, 则错误率 E = a / m ; E=a / m ; E=a/m;
-
精度(accuracy):精度 = 1 - 错误率
-
误差(error):模型的实际预测和样本的真实输出之间的差异。
- 训练误差(training error) & 经验误差(empirical error):模型在训练集上的误差。
- 泛化误差(generalization): 新样本或测试集上的 误差
过拟合
过拟合 (overfitting):当学习器把训练样本学得" 太好 "的时候,就会把训练样本自身的一些特点当作所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。
相对应于 欠拟合(underfitting)

-
过拟合:模型学习能力过于强大,把训练样本的“不一般”特性也学会了。
- 过拟合广泛存在,无法彻底避免,只能尝试缓解。
-
欠拟合:模型学习能力底下。
- 基本解决思路:增大模型扩充分支、训练过程增加轮数
-
- 过拟合不可避免:对于机器学习面临的复杂问题(NP),有限的学习算法(P)是无法真的找到最优解的。即 P ≠ N P \mathrm{P} \neq \mathrm{NP} P=NP 在该问题的对应描述。
评估方法
一个包含 m m m 个样例的数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } D=\left\{\left(\boldsymbol{x}_{1}, y_{1}\right),\left(\boldsymbol{x}_{2}, y_{2}\right), \ldots,\right.\left.\left(\boldsymbol{x}_{m}, y_{m}\right)\right\} D={(x1,y1),(x2,y2),…,(xm,ym)}, 既要训练, 又要测试, 怎样才能做到呢?
答案是: 通过对 D D D 进行适当 的处理, 从中产生出训练集 S S S 和测试集 T T T.
(备注:1.数据集或benchmark data 分割好了,实际中未分割要考虑该问题。 2.深度学习中因为数据量巨大,有时并不需要这些方法,只需做简单split(即留出)。)
-
分层采样(stratified sampling):保留类别比例的采样,基本都采用该思路。
-
留出法:最常见的将数据进行split切分,8:1:1 等。
- 划分注意 训练和测试中的 类别不平衡问题 以及 多次重复实验取平均
-
交叉验证(k-fold cross validation):数据集划分为 k k k 个, k − 1 k-1 k−1为训练集合— 1 1 1份为测试集合。多次试验取平均。
- 留一法:测试集只去一个样本。
-
自助法(bootstrapping):主要基于自助采样法(bootstrap sampling),以采样得到的 D ′ D^{\prime} D′为训练集, D \ D ′ D \backslash D^{\prime} D\D′ 用作测试集。
- 采样得到的训练集,样本数也为 m m m
- 自助采样会带来估计偏差(数据分布变了),通常用于小数据量。
调参和最终模型
模型参数和调参(parameter setting)是不同的,调参通常是指学习算法的参数。
- 通常,用于调参的数据调参之后,应该加入训练集一起进行训练。
- 用来进行调参的“测试集”,叫做验证集(validation set & development set)。
性能度量
性能度量(performance measure):除了上述的实验估计方法,还需要有衡量模型的 评价标准
- 性能度量反应 任务需求, 即模型的好坏,不仅取决于算法和数据,还取决于任务需求。
在预测任务中, 给定样例集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } D=\left\{\left(\boldsymbol{x}_{1}, y_{1}\right),\left(\boldsymbol{x}_{2}, y_{2}\right), \ldots,\left(\boldsymbol{x}_{m}, y_{m}\right)\right\} D={(x1,y1),(x2,y2),…,(xm,ym)}, 其中 y i y_{i} yi是示例 x i \boldsymbol{x}_{i} xi 的真实标记. 要评估学习器 f f f 的性能, 就要把学习器预测结果 f ( x ) f(\boldsymbol{x}) f(x)与真实标记 y y y 进行比较.
回归任务最常用的性能度量是:
- “均方误差" (mean squared error):
E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f ; D)=\frac{1}{m} \sum_{i=1}^{m}\left(f\left(\boldsymbol{x}_{i}\right)-y_{i}\right)^{2} E(f;D)=m1i=1∑m(f(xi)−yi)2
- **一般形式:**对于数据分布 D \mathcal{D} D 和概率密度函数 p ( ⋅ ) p(\cdot) p(⋅), 均方误差可描述为
E ( f ; D ) = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x E(f ; \mathcal{D})=\int_{\boldsymbol{x} \sim \mathcal{D}}(f(\boldsymbol{x})-y)^{2} p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} E(f;D)=∫x∼D(f(x)−y)2p(x)dx
错误率和精度
在预测任务中, 给定样例集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } D=\left\{\left(\boldsymbol{x}_{1}, y_{1}\right),\left(\boldsymbol{x}_{2}, y_{2}\right), \ldots,\left(\boldsymbol{x}_{m}, y_{m}\right)\right\} D={(x1,y1),(x2,y2),…,(xm,ym)}, 其中 y i y_{i} yi是示例 x i \boldsymbol{x}_{i} xi 的真实标记. 要评估学习器 f f f 的性能, 就要把学习器预测结果 f ( x ) f(\boldsymbol{x}) f(x)与真实标记 y y y 进行比较。
样例集 D D D :
- 分类错误率定义为
E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) E(f ; D)=\frac{1}{m} \sum_{i=1}^{m} \mathbb{I}\left(f\left(\boldsymbol{x}_{i}\right) \neq y_{i}\right) E(f;D)=m1i=1∑mI(f(xi)=yi)
- 精度则定义为
acc ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) = 1 − E ( f ; D ) . \begin{aligned} \operatorname{acc}(f ; D) &=\frac{1}{m} \sum_{i=1}^{m} \mathbb{I}\left(f\left(\boldsymbol{x}_{i}\right)=y_{i}\right) \\ &=1-E(f ; D) . \end{aligned} acc(f;D)=m1i=1∑mI(f(xi)=yi)=1−E(f;D).
一般形式:
- 错误率:
E ( f ; D ) = ∫ x ∼ D I ( f ( x ) ≠ y ) p ( x ) d x E(f ; \mathcal{D})=\int_{\boldsymbol{x} \sim \mathcal{D}} \mathbb{I}(f(\boldsymbol{x}) \neq y) p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} E(f;D)=∫x∼DI(f(x)=y)p(x)dx
- 精度:
acc ( f ; D ) = ∫ x ∼ D I ( f ( x ) = y ) p ( x ) d x = 1 − E ( f ; D ) \begin{aligned} \operatorname{acc}(f ; \mathcal{D}) &=\int_{\boldsymbol{x} \sim \mathcal{D}} \mathbb{I}(f(\boldsymbol{x})=y) p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} \\ &=1-E(f ; \mathcal{D}) \end{aligned} acc(f;D)=∫x∼DI(f(x)=y)p(x)dx=1−E(f;D)
查准率、查全率与F1
错误率和精度虽常用,但并不能满足所有任务需求。
以二分类为例,其核心为混淆矩阵(confusion matrix)
TP+FP+TN+FN=样例总数
- 真正例(true positive)
- 假正例 (false positive)
- 真反倒(true negative)
- 假反例 (false negative)
真实情况 | 预测结果 | |
---|---|---|
正例 | 反例 | |
正例 | TP | FN |
反例 | FP | TN |
查准率
P
P
P 与查全率
R
R
R 分别定义为
P
=
T
P
T
P
+
F
P
,
R
=
T
P
T
P
+
F
N
\begin{gathered} P=\frac{T P}{T P+F P}, \\ R=\frac{T P}{T P+F N} \end{gathered}
P=TP+FPTP,R=TP+FNTP
-
P 和 R 是一对矛盾的变量
-
例:好瓜尽可能被选出来,多选点(查全率);好瓜的比例高,少选点。(查准率)
P-R曲线
根据学习器的预测结果对样例进行排序,排在前面 的是学习器认为"最可能 "是正例的样本。排在最后的则是学习器认为"最 不可能"是正例的样本。按此顺序逐个把样本作为正例进行预测(其实,就是对逐个样本作为阈值划分点的方法)

- 曲线下的面积
- 平衡点(P=R)BEP
F1
F
1
F 1
F1 是基于查准率与查 全率的调和平均(harmonic mean)定义的:
1
F
1
=
1
2
⋅
(
1
P
+
1
R
)
\frac{1}{F 1}=\frac{1}{2} \cdot\left(\frac{1}{P}+\frac{1}{R}\right)
F11=21⋅(P1+R1)
F
β
F_{\beta}
Fβ 则是加权调和平均:(
β
\beta
β衡量了PR的相对重要性)
1
F
β
=
1
1
+
β
2
⋅
(
1
P
+
β
2
R
)
\frac{1}{F_{\beta}}=\frac{1}{1+\beta^{2}} \cdot\left(\frac{1}{P}+\frac{\beta^{2}}{R}\right)
Fβ1=1+β21⋅(P1+Rβ2)
F
1
:
F 1:
F1:
F
1
=
2
×
P
×
R
P
+
R
=
2
×
T
P
样例总数
+
T
P
−
T
N
.
F 1=\frac{2 \times P \times R}{P+R}=\frac{2 \times T P}{\text { 样例总数 }+T P-T N} .
F1=P+R2×P×R= 样例总数 +TP−TN2×TP.
- 补充:多个混淆矩阵下的度量:macro(分别矩阵计算后平均)-micro(矩阵间平均再混淆计算)