之前较系统化的接触过监督学习,但主要是在实践层面,本次学习的目的就是在理论层面加深理解同时完成对无监督学习、聚类的学习。前面2章感觉对于纯小白有不小难度,在后面篇章学完之后再来回看或者边看边学确实更加适合。本次TASK01完成了搭建起理论框架的目的,具体的公式推导和细节补充会在后续学习中不断完善和更新。
第 1 章 绪论
1.1 基本术语
数据集(data set);示例(instance) / 样本(sample);属性(attribute) / 特征(feature);属性值(attribute value);属性空间(attribute space) / 样本空间(sample space) / 输入空间;特征向量(feature vector);泛化能力(generalization)
令 D = x 1 , x 2 , … … , x m D={x_1,x_2,……,x_m} D=x1,x2,……,xm表示包含 m m m个示例的数据集,每个示例由 d d d个属性描述, d d d称为样本 x i x_i xi的“维数”。
学得模型对应了关于数据的某种潜在规律,因此亦称为“假设”(hypothesis);这种潜在的规律本身,则称为“真相”或“真实”(ground-truth)。有时也将模型称之为“学习器”(learner)。
用 ( x i , y i ) (x_i, y_i) (xi,yi)表示第 i i i个阳历,其中 y i ∈ Y y_i \in Y yi∈Y。 Y Y Y是所有标记的集合,亦称为“标记空间”(label space)或“输出空间”
分类:
- 监督学习(supervised learning)
- 分类 - classification
- 二分类问题 - binary classification(正类和反类)
- 多分类问题 - multi-class classification
- 回归 - regression
- 分类 - classification
- 无监督学习
- 聚类 - clustering
通常假设样本空间中全体样本服从一个未知“分布”(distribution)$\distrubition $,我们获得的每个样本都是独立地从这个分布上采样获得的,即“独立同分布”(independent and identically distributed)。
1.3 假设空间
归纳(induction):特殊到一般的泛化(generalization)
演绎(deduction):一般到特殊的特化(specialization)
“从样本中学习”显然是一个归纳过程,因此亦称为“归纳学习”(inductive learning)
广义的归纳学习:从样例中学习
狭义的归纳学习:从训练数据中学得概念(concept),因此亦称为“概念学习”或“概念形成”
存在一个与训练集一致的“假设集合”,称之为“版本空间”(version space)
1.4 归纳偏好
机器学习算法在学习过程中对某种类型假设的偏好,称为“归纳偏好”(inductive bias)
E
o
t
e
(
L
a
∣
X
,
f
)
=
∑
h
∑
x
∈
X
−
X
P
(
x
)
I
(
h
(
x
)
≠
f
(
x
)
)
P
(
h
∣
X
,
L
a
)
Eote(\mathfrak L_a|X,f)=\sum_h \sum_{x \in \mathfrak X-X} \ P(x) \ \mathbb I \ (h(x) \not= f(x))P(h|X, \mathfrak L_a)
Eote(La∣X,f)=h∑x∈X−X∑ P(x) I (h(x)=f(x))P(h∣X,La)
其中
I
(
⋅
)
\mathbb I (·)
I(⋅)表示只是函数,如果
⋅
·
⋅为真则取1,否则取0.
对所有可能的
f
f
f按均匀分布对误差求和,
∑
f
E
o
t
e
(
L
a
∣
X
,
f
)
=
∑
f
∑
h
∑
x
∈
X
−
X
P
(
x
)
I
(
h
(
x
)
≠
f
(
x
)
)
P
(
h
∣
X
,
L
a
)
=
…
…
\sum_f Eote(\mathfrak L_a|X,f)=\sum_f\sum_h\sum_{x \in \mathfrak X-X} \ P(x) \ \mathbb I \ (h(x) \not= f(x))P(h|X, \mathfrak L_a) \\ =……
f∑Eote(La∣X,f)=f∑h∑x∈X−X∑ P(x) I (h(x)=f(x))P(h∣X,La)=……
得出结论:在所有问题出现的概率相同或者所有问题同等重要的情况下,总误差与学习算法无关——No Free Lunch Theorem(NFL定理)
PS:Wolpoert,1996; Wolpert and Macready 1995
为什么存在多个 f f f?
以下是关于为什么要考虑所有可能的f并按均匀分布对误差求值的原因:
- 模型不确定性:由于真实的f未知,我们只能通过训练数据来估计它。在实际操作中,我们可能会训练出多个不同的模型,每个模型对真实f的估计都有所不同。因此,我们考虑所有可能的f实际上是在考虑模型的不确定性。
- 理论分析:在统计学习理论中,为了分析学习算法的泛化能力,我们常常需要考虑函数空间中所有可能的函数。通过对这些函数进行积分,我们可以得到一些关于算法性能的边界,比如泛化误差界。
- 贝叶斯观点:在贝叶斯统计中,我们假设真实的f是随机的,并且有一个先验分布。在这种情况下,我们对所有可能的f按照先验概率(均匀分布是一种特殊情况)进行积分,来得到预测的后验分布。这样可以得到一个考虑了所有可能性的预测,而不是单一的最可能的预测。
- 风险最小化:在机器学习中,我们通常试图最小化期望风险,期望风险是所有样本上的平均误差的期望值。由于真实分布是未知的,我们通过对所有可能的f求积分来计算这个期望值。
- 均匀分布的假设:在一些情况下,假设对所有可能的f进行均匀分布的求值是一种简化的假设。实际上,我们可能对某些f赋予更高的概率(即非均匀分布),这取决于我们对问题领域的先验知识。
1.5 发展历程
略
1.6 应用现状
数据挖掘:
- 数据库领域为数据挖掘提供数据管理技术
- 机器学习和统计学为数据挖掘提供数据分析技术,统计学主要通过机器学习对数据挖掘发挥影响
补充
合取式(Conjunctive Normal Form,CNF)和析取范式(Disjunctive Normal Form,DNF)是逻辑表达式的两种范式,它们在逻辑电路设计、自动推理、知识表示等领域有着广泛的应用。
合取式(CNF)
合取式是逻辑表达式的标准形式,其中表达式由一系列的合取(AND)操作组成,每个合取操作又由一系列的析取(OR)操作组成。换句话说,一个CNF表达式是由多个子句(clause)通过AND连接而成的,每个子句是由多个文字(literal)通过OR连接而成的。
合取式的形式如下:
(
l
1
,
1
∨
l
1
,
2
∨
…
∨
l
1
,
n
1
)
∧
(
l
2
,
1
∨
l
2
,
2
∨
…
∨
l
2
,
n
2
)
∧
…
∧
(
l
m
,
1
∨
l
m
,
2
∨
…
∨
l
m
,
n
m
)
(l_{1,1} \lor l_{1,2} \lor \ldots \lor l_{1,n_1}) \land (l_{2,1} \lor l_{2,2} \lor \ldots \lor l_{2,n_2}) \land \ldots \land (l_{m,1} \lor l_{m,2} \lor \ldots \lor l_{m,n_m})
(l1,1∨l1,2∨…∨l1,n1)∧(l2,1∨l2,2∨…∨l2,n2)∧…∧(lm,1∨lm,2∨…∨lm,nm)
例子:
$ (x \lor \neg y) \land (z \lor \neg x) \land (\neg z)$
析取范式(DNF)
析取范式是逻辑表达式的另一种标准形式,其中表达式由一系列的析取(OR)操作组成,每个析取操作又由一系列的合取(AND)操作组成。换句话说,一个DNF表达式是由多个项(term)通过OR连接而成的,每个项是由多个文字通过AND连接而成的。
析取范式的形式如下:
(
l
1
,
1
∧
l
1
,
2
∧
…
∧
l
1
,
n
1
)
∨
(
l
2
,
1
∧
l
2
,
2
∧
…
∧
l
2
,
n
2
)
∨
…
∨
(
l
m
,
1
∧
l
m
,
2
∧
…
∧
l
m
,
n
m
)
(l_{1,1} \land l_{1,2} \land \ldots \land l_{1,n_1}) \lor (l_{2,1} \land l_{2,2} \land \ldots \land l_{2,n_2}) \lor \ldots \lor (l_{m,1} \land l_{m,2} \land \ldots \land l_{m,n_m})
(l1,1∧l1,2∧…∧l1,n1)∨(l2,1∧l2,2∧…∧l2,n2)∨…∨(lm,1∧lm,2∧…∧lm,nm)
例子:
$ (x \land y) \lor (\neg x \land z) \lor (\neg y \land \neg z) $
应用
- 合取式(CNF):常用于知识表示、自动推理和布尔可满足性问题(SAT问题)。CNF是解决SAT问题的一种标准形式,因为SAT问题可以表述为:给定一个CNF表达式,是否存在一组变量的赋值使得表达式为真。
- 析取范式(DNF):常用于描述一个命题的所有可能使之为真的情况。DNF可以直接告诉我们哪些变量组合可以使整个表达式为真。
第 2 章 模型评估与选择
2.1 经验误差与过拟合
错误率(error rate):分类错误的样本数占样本总数的比例称为错误率
泛化误差(generalization error):在新样本上的误差
2.2 评估方法
2.2.1 留出法
“留出法”(hold-out)直接将数据集 D D D划分为两个互斥的集合,大约将2/3~4/5用于训练,剩余样本用于测试。
2.2.2 交叉验证法
“交叉验证法”(cross validation)先将数据集 D D D划分为 k k k个大小相似的互斥子集,每次用 k − 1 k-1 k−1个子集的并集作为训练集,余下的作为测试集,从而进行 k k k次训练和测试——“ k k k折交叉验证”(k-fold cross validation)。
k折交叉验证通常要用随机使用不同的划分重复 p p p次,最终的评估结果是这p次k折交叉验证结果的均值。
“留一法”(Leave-One-Out):数据集中包含m个样本,k=m
2.2.3 自助法
“自助法”(bootstrapping):以自助采样法为基础。每次随机从D中挑选一个样本,拷贝到D’,重复m次得到训练集。
根据 lim m − > ∞ ( 1 − 1 m ) m ≈ 1 e \lim_{m-> \infty}(1-\frac{1}{m})^m ≈ \frac{1}{e} limm−>∞(1−m1)m≈e1,大约有36.8%从未出现在采样数据集D’中,这些用于测试,得到的测试结果称为“包外估计”(out-of-bag estimate)。
当初始数据量足够时,留出法和交叉验证法更常用。
2.2.4 调参与最终模型
parameter tuning
2.3 性能度量
“性能度量”(performance measure)
回归任务最常用的性能度量是“均方误差”(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}(f(x_i)-y_i)^2 E(f;D)=m1∑i=1m(f(xi)−yi)2
2.3.1 错误率与精度
分类错误率: 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 (f(x_i) \not= y_i) E(f;D)=m1∑i=1mI(f(xi)=yi)
精度: a c c ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) = 1 − E ( f ; D ) acc(f;D)=\frac{1}{m}\sum_{i=1}^{m} \mathbb I (f(x_i) = y_i)=1-E(f;D) acc(f;D)=m1∑i=1mI(f(xi)=yi)=1−E(f;D)
2.3.2 差错率、查全率和F1
预测正例 | 预测反例 | |
---|---|---|
真实正例 | TP-真正例 | FN-假反例 |
真实反例 | FP-假正例 | TN-真反例 |
查准率 P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP;查全率 P = T P T P + F N P=\frac{TP}{TP+FN} P=TP+FNTP
P-R图:以查全率为横坐标,查准率为纵坐标。如果曲线A能包住曲线B或者曲线下的面积更大,则A更优。
”平衡点“(Break-Event Point,简称BEP),是 查准率=查全率时的取值。
F1度量: F 1 = 2 ∗ P ∗ R P + R = 2 ∗ T P 样例总数 + T P − T N F1=\frac{2*P*R}{P+R}=\frac{2*TP}{样例总数+TP-TN} F1=P+R2∗P∗R=样例总数+TP−TN2∗TP
F1度量的一般形式: F 1 = ( 1 + β 2 ) ∗ P ∗ R ( β 2 ∗ P ) + R F1=\frac{(1+\beta^2)*P*R}{(\beta^2*P)+R} F1=(β2∗P)+R(1+β2)∗P∗R,其中 β \beta β度量了查全率对查准率的相对重要性,>1则查全率有更大的影响。
宏查准率、宏查全率、宏F1:在各混淆矩阵上分别计算出查准率和查全率,再计算平均值。
微查准率、微查全率、微F1:对TP、FP、TN、FN分别取平均值,再计算。
2.3.3 ROC与AUC
ROC曲线(Receiver Operating Characteristic):表征不同人物下的期望泛化性能,和一般情况下泛化性能的好坏。
ROC曲线:纵轴是”真正例率“(True Postive Rate),横轴是”假正例率“(False Postive Rate)。 T P R = T P T P + F N T P R = F P T N + F P TPR=\frac{TP}{TP+FN} \ \ TPR=\frac{FP}{TN+FP} TPR=TP+FNTP TPR=TN+FPFP
略ROC曲线的绘制
AUC(Area Under ROC Curve):ROC曲线下的面积
略
2.3.4 代价敏感错误率与代价函数
赋予”非均等代价“(uneaqual cost),代价敏感的错误率为 E ( f ; D ; c o s t ) = 1 m ( ∑ x i ∈ D + I ( f ( x i ) ≠ y i ) ∗ c o s t 01 + ∑ x i ∈ D − I ( f ( x i ) ≠ y i ) ∗ c o s t 10 ) E(f;D;cost)=\frac{1}{m}(\sum_{x_i \in D^+} \mathbb I (f(x_i) \not= y_i)*cost_{01} +\sum_{x_i \in D^-} \mathbb I (f(x_i) \not= y_i)*cost_{10}) E(f;D;cost)=m1(∑xi∈D+I(f(xi)=yi)∗cost01+∑xi∈D−I(f(xi)=yi)∗cost10)
代价曲线略
2.4 比较检验
2.4.1 假设检验
2.4.2 交叉验证t检验
2.4.3 McNemar检验
2.5 偏差与方差
”偏差-方差分解“(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具