系列文章目录
本系列文章将总结《西瓜书》+《南瓜书》学习过程中的内容
参考资料:
1.《机器学习》 周志华
2.《机器学习公式详解》 谢文睿 秦州
3.【吃瓜教程】《机器学习公式详解》(南瓜书)与西瓜书公式推导直播合集
目前已完成部分:
一、机器学习简介
1.基本术语
- 模型:泛指从数据中学的结果,对应了关于数据的某种潜在的规律,也成为“假设”
- 学习算法:在计算机上从“数据”中产生“模型”的算法
- 机器学习:研究关于“学习算法”的学问
- 数据集相关:
- 记录:关于一个事件或对象的描述,称为 “示例” 或者 “样本”
- 数据集:记录的集合
- 属性/特征:事件或对象在某方面的表现或性质的事项
- 属性值:属性上的取值
- 属性空间/样本空间/输入空间:属性张成的空间,n个属性张成一个n维空间
- 每个示例都能在属性空间中找到自己的坐标位置
- 空间中每个点对应一个坐标向量
- 因此每个示例称为一个 “特征向量”
- 数据集的表示:
- D = { x 1 , x 2 , … , x m } D = \left\{x_{1},x_{2},\ldots,x_{m}\right\} D={x1,x2,…,xm},表示包含 m m m 个示例的数据集
- 如果每个示例由
d
d
d 个属性描述,则每个示例表示为:
x
i
=
(
x
i
1
;
x
i
2
;
…
;
x
i
d
)
x_{i}=(x_{i1};x_{i2};\ldots;x_{id})
xi=(xi1;xi2;…;xid),是
d
d
d 维样本空间
X
\mathcal{X}
X 中的一个向量
- x i j x_{ij} xij 是示例 x i x_{i} xi 在第 j j j 个属性上的取值
- d d d 称为样本 x i x_{i} xi 的维数
- 训练过程中使用的数据称为训练数据,每个样本称为一个训练样本,训练样本组成的集合称为训练集
- 标记:训练样本的“结果”信息
- 样例:拥有了标记信息的示例
- 一般地,用 ( x i , y i ) (x_{i},y_{i}) (xi,yi)表示第 i i i 个样例
- y i ∈ Y y_{i}\in \mathcal{Y} yi∈Y 是示例 x i x_{i} xi的标记
- Y {\mathcal{Y}} Y是所有标记的集合,称为标记空间或输出空间
- 分类:预测的是离散值
- 二分类:只涉及两个类别的任务
- 一个类为正类
- 另一个类为反类
- 多分类:涉及多个类别的任务
- 二分类:只涉及两个类别的任务
- 回归:预测的是连续值
- 聚类:将训练集中的示例分为若干组
- 测试:学得模型后,使用其进行预测的过程
- 根据训练数据是否拥有标记信息,学习任务可大致划分为两大类
- 监督学习
- 分类
- 回归
- 无监督学习
- 聚类
- 监督学习
- 泛化能力:学的模型适用于新样本的能力
- 机器学习的目标是使学得模型能很好地适用于“新样本”,而不是仅仅在训练样本上工作得很好
2.假设空间
- 假设空间:所有假设组成的空间
- 假设的表示一旦确定,假设空间及其规模大小就确定了
- 考虑假设空间规模的时候要考虑极端情况,例如 ∅ \emptyset ∅
- 学习的过程就是在假设空间中进行搜索,找到与训练集匹配的假设,将训练集中的每个示例正确判断的假设
- 在有限样本训练集的学习过程中,训练集可能会对应多个与其一致的假设,形成一个假设集合,称为版本空间
二、模型评估与选择
1.经验误差与过拟合
- 错误率:分类错误的样本数/样本总数
- 精度:1-错误率,常写为百分比形式
- 误差:实际预测输出与样本真实输出之间的差异
- 训练误差/经验误差:训练集上的误差
- 泛化误差:新样本上的误差
- 学习过程期望:从训练样本中尽可能学出适用于所有潜在样本的普遍规律,能在新样本上表现好的学习器
- 过拟合:
- 泛化性能下降
- 把训练样本自身的一些特点当作所有潜在样本都会具有的一般性质,例如训练样本的树叶都有锯齿,则学习器误以为树叶必须有锯齿,不能对没有锯齿的新树叶做出正确判断
- 最常见导致因素:学习能力过于强大,把训练样本不太一般的特性都学到了
- 是机器学习面临的关键障碍
- 无法彻底避免,只能缓解或减少其风险
- 欠拟合:
- 训练样本的一般性质尚未学好,还是以判断是否为树叶为例,在学习过程中认为只要绿色的都是树叶,将所有绿色新样本都认定为树叶
- 导致因素:学习能力低下
- 较容易克服,例如在决策树学习中扩展分支、在神经网络学习中增加训练轮数等
2.评估方法
- 使用测试集测试学习器对新样本的判别能力,以测试集上的测试误差作为泛化误差的近似,作为模型评估与选择的标准
- 测试集的选择:
- 假设测试样本是从样本真实分布中独立同分布采样而得
- 测试集应该尽可能与训练集互斥,测试样本尽量不在训练集中出现
- 对包含
m
m
m 个样例的数据集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
m
,
y
m
)
}
D = \left\{(x_{1},y_{1}),(x_{2},y_{2}),\ldots,(x_{m},y_{m})\right\}
D={(x1,y1),(x2,y2),…,(xm,ym)} ,如何产生训练集S和测试集T,有几种常见做法
- 留出法
- 直接将数据集 D D D划分为两个互斥的集合,一个作为训练集,另一个作为测试集
- 划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外偏差影响最终结果
- 例如,分类任务中至少要保持样本的类别比例相似
- 单次使用留出法得到的估计结果往往不够稳定可靠,一般要采用若干次随即划分、重复进行实验评估后取平均值作为留出法的评估结果
- 常见做法:将大约2/3~4/5的样本用于训练,剩余样本用于测试
- 交叉验证法——
k
k
k折交叉验证
-
将数据集划分为 k k k个大小相似的互斥子集
-
每个子集 D i D_{i} Di尽可能保持数据分布的一致性,从 D D D中通过分层采样得到
-
每次用 k − 1 k-1 k−1个子集的并集作为训练集,余下的那个子集作为测试集
-
得到 k k k组训练/测试集,进行 k k k次训练和测试
-
最终返回 k k k个测试结果的均值
-
评估结果的稳定性和保真性很大程度上取决于 k k k的取值
-
k
k
k最常用的取值为10
- 参照西瓜书绘制的“10折交叉验证示意图”如下所示
- 参照西瓜书绘制的“10折交叉验证示意图”如下所示
-
k
k
k最常用的取值为10
-
其他常用的 k k k值有5、20等
-
- 与留出法类似,为减少因样本划分不同而引入的差别,
k
k
k折交叉验证通常要随机使用不同的划分重复
p
p
p次
- 最终评估结果是这 p p p次 k k k折交叉验证结果的均值
- 例如常见的有10次10折交叉验证
- 交叉验证发的特例——留一法:
- 假定数据集 D D D中包含 m m m个样本,若令 k = m k=m k=m,则为留一法
- 留一法不受随机样本划分方式的影响
- 留一法的训练集只比初始数据集少一个样本,绝大多数情况下,留一法的评估结果比较准确
- 缺陷:数据集较大时,训练m个模型的计算开销太大,计算复杂度太高
- 自助法
- 留出法和交叉验证法都导致训练集比数据集小,会引入因训练样本规模不通过的估计偏差
- 自助法以自助采样法为基础:
- 给定包含
m
m
m个样本的数据集
D
D
D,对其采样产生数据集
D
′
D^{'}
D′:
- 每次随机从 D D D中挑选一个样本,将其拷贝放入 D ′ D^{'} D′
- 将该样本放回初始数据集 D D D,使得该样本下次采样时仍有可能被采到
- 上述过程重复 m m m次后,得到包含m个样本的 D ′ D^{'} D′
-
D
D
D中有一部分样本会在
D
′
D^{'}
D′中多次出现,而另一部分样本不出现
- 样本在
m
m
m次采样中始终不被采到的概率是
(
1
−
1
m
)
m
(1-\frac{1}{m})^m
(1−m1)m,取极限得到
lim m → ∞ ( 1 − 1 m ) m = 1 e ≈ 0.368 \lim_{m \to \infty} (1-\frac{1}{m})^m=\frac{1}{e}\approx0.368 m→∞lim(1−m1)m=e1≈0.368 - 即通过自助采样,有36.8%的样本未出现在采样数据集 D ′ D^{'} D′中
- 样本在
m
m
m次采样中始终不被采到的概率是
(
1
−
1
m
)
m
(1-\frac{1}{m})^m
(1−m1)m,取极限得到
- 将
D
′
D^{'}
D′用作训练集,
D
\
D
′
D\backslash D^{'}
D\D′用作测试集
- 实际评估模型与期望评估模型都使用 m m m个训练样本
- 有数据总量约1/3的、没在训练集中出现的样本用于测试
- 测试结果,称为“包外估计”
- 给定包含
m
m
m个样本的数据集
D
D
D,对其采样产生数据集
D
′
D^{'}
D′:
- 自助法在数据集较小、难以有效划分训练/测试集时很有用
- 自助法能从初始数据集中产生多个不同的训练集,对集成学习等方法有很大的好处
- 缺点:产生的数据集改变了初始数据集的分布,会引入估计偏差
- 调参与最终模型
- 对每种参数配置都训练出模型,然后把对应最好模型的参数作为结果
- 常用做法:每个参数选定一个范围和变化步长
- 虽然选定的参数值往往不是最佳值,但是计算开销和性能估计之间的折中结果
- 留出法
- 给定包含 m m m个样本的数据集 D D D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,只是用一部分数据训练模型。当学习算法和参数配置选定之后,应该用数据集 D D D重新训练模型,这才是最终提交给用户的模型
- 测试数据:学得模型在实际使用中遇到的数据
- 验证集:模型评估与选择过程中用于评估测试的数据集
3.性能度量
- 模型的好坏是相对的,在对比不同模型的能力时,使用不同性能度量往往导致不同的评判结果
- 什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求
- 回归任务最常用的性能度量是均方误差
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)=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 ) E(f;D)=\int_{x\sim\mathcal{D}}(f(x)-y)^2p(x) E(f;D)=∫x∼D(f(x)−y)2p(x)
- 更一般地,对于数据分布
D
\mathcal{D}
D和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅),均方误差可描述为:
- 分类任务常用地性能度量
- 错误率与精度
- 查准率、查全率与F1
-
分类结果混淆矩阵
-
查准率/准确率:
P = T P T P + F P P = \frac{TP}{TP+FP} P=TP+FPTP -
查全率/召回率:
R = T P T P + F N R = \frac{TP}{TP+FN} R=TP+FNTP -
查准率和查全率是相互矛盾地度量,一般来说,一个高,另一个则低。通常只有一些简单任务重,才可能两者都很高
-
P-R曲线:以查准率为纵轴、查全率为横轴做的图
- 一个学习器A的P-R曲线完全被另一个学习器B的曲线包住,则B的性能优于A
- 若曲线发生交叉则难判断谁的性能更好
-
平衡点(BEP):查准率=查全率时的取值
-
F1度量:
F 1 = 2 × P × R P + R = 2 × T P 样例总数 + T P − T N F1 = \frac{2 \times P \times R}{P+R}=\frac{2\times TP}{样例总数+TP-TN} F1=P+R2×P×R=样例总数+TP−TN2×TP
-