机器学习入门系列(1) - 快速了解机器学习
绪论
引言
机器学习正是这样一门学科,它致力于研究如何通过计算的手段,利用经验来玫善系统自身的性能。在计算机系统中,“经验"通常以"数据"形式存在,因此机器学习所研究的主要内容,是关于在计算机上从数据中产生"模型"的算法,即"学习算法” (learning algorithm)。有了学习算法,我们把经验数据提供给它,它就能基于这些数据产生模型,在面对新的情况时模型会给我们提供相应的判断
基本术语
- 数据准备相关:数据集(训练集、测试集、验证集)、样本、特征(属性)、标签等
- 学习过程相关:学习、训练等
- 模型评估相关:预测、泛化能力、过拟合/欠拟合、混淆矩阵等
- 问题分类相关
- 有监督学习:分类问题(二分类、多分类)、回归问题等
- 无监督学习:聚类问题等
- 半监督学习
模型评估与选择
训练误差与过拟合
学习器在训练集上的误差称为"训练误差" (training error)或"经验误差" (empirical error) ,在新样本上的误差称为"泛化误差" (generalization error). 显然,我们希望得到泛化误差小的学习器。然而,我们事先并不知道新
样本是什么样,实际能做的是努力使经验误差最小化
当学习器把训练样本学得"太好"了的时候,很可能巳经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。这种现象在机器学习中称为"过拟合" (overfitting). 与"过拟合"相对的是"欠拟合" (underfitting) ,这是指对训练样本的一般性质尚未学好
评估方法
- 留出法 (hold-out):直接将数据集
D
D
D划分为两个互斥的集合,其中一个集合作为训练集
S
S
S,另一个作为测试集
T
T
T, 即
D
=
S
∪
T
,
S
∩
T
=
∅
D=S\cup T, S\cap T=\emptyset
D=S∪T,S∩T=∅. 在
S
S
S上训练出模型后,用
T
T
T来评估其测试误差,作为对泛化误差的估计
- 需注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免困数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似
- 单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果
- 交叉验证法(cross validation):先将数据集
D
D
D划分为
k
k
k个大小相似的互斥子集, 即
D
=
D
1
∪
D
2
∪
⋯
∪
D
k
,
D
i
∩
D
j
=
∅
(
i
≠
j
)
D = D_1\cup D_2\cup\cdots\cup D_k, D_i\cap D_j = \emptyset (i\neq j)
D=D1∪D2∪⋯∪Dk,Di∩Dj=∅(i=j). 每个子集
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折交叉验证法- 与留出法相似,将数据集 D D D划分为 k k k个子集同样存在多种划分方式,为减小因样本划分不同而引入的差别, 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,则得到了交叉验证法的一个特例:留一法(Leave-One-Out)
- 缺点:计算量大,数据量较大时,对算力要求较高
- 自助法(bootstrapping):给定包含
m
m
m个样本的数据集
D
D
D,我们对它进行有放回抽样
m
m
m次产生数据集
D
′
D'
D′. 显然,
D
D
D中有一部分样本会在
D
′
D'
D′中多次出现,而另一部分样本不出现。可以做一个简单的估计,样本在
m
m
m次有放回采样中始终不被采到的概率是
(
1
−
1
/
m
)
m
≈
m
→
∞
e
−
1
≈
0.368
(1-1/m)^m\overset{m\rightarrow\infty}{\approx} e^{-1}\approx 0.368
(1−1/m)m≈m→∞e−1≈0.368. 即通过自助来样,初始数据集
D
D
D中约有36.8% 的样本未出现在采样数据集
D
′
D'
D′中。于是我们可将
D
′
D'
D′用作训练集,
D
\
D
′
D\backslash D'
D\D′用作测试集,这样实际评估的模型与
期望评估的模型都使用 m m m个训练样本,而我们仍有数据总量约1/3 的、没在训练集中出现的样本用于测试.这样的测试结果,亦称"包/袋外估计" (out-of-bag estimate),对应的误差称为包/袋外误差(Out Of Bag Error)- 自助法在数据集较小、难以有效划分训练/测试集时很有用,此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处
- 自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此在初始数据量足够时,留出法和交叉验证法更常用一些
调参与最终模型
在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参
性能度量
-
回归任务最常用的性能度量是"均方误差"
-
分类任务中常用的性能度量
-
错误率与精度(正确率)
- 正负样本不均衡情况下,错误率与精度(正确率)可能并不是好的评估方法,比如90%正类,10%负类,现在模型是所有都判断为正类,正确率90%,但不能说明这是一个好的模型
-
查准率(precision), 即查出来是正类的样例中确实是正类的比例, P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
查全率(recall), 即真实是正类的样例中被查出来是正类的比例, R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
- 查准率和查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低,而查全率高时,查准率往往偏低,通常只有在一些简单任务中才可能使查全率和查准率都很高
- P-R图(因为查准率和查全率是一对矛盾的度量,所以具有反向关系)比较方法
- 平衡点: P = R P=R P=R
- F 1 F_1 F1得分: F 1 = 2 1 / R + 1 / P = 2 T P T P + F P + T P + F N F_1=\frac{2}{1/R+1/P}=\frac{2TP}{TP+FP+TP+FN} F1=1/R+1/P2=TP+FP+TP+FN2TP
- F β F_\beta Fβ得分: F β = 1 + β 2 β 2 / R + 1 / P = ( 1 + β 2 ) T P β 2 ( T P + F N ) + T P + F P F_\beta=\frac{1+\beta^2}{\beta^2/R+1/P}=\frac{(1+\beta^2)TP}{\beta^2(TP+FN)+TP+FP} Fβ=β2/R+1/P1+β2=β2(TP+FN)+TP+FP(1+β2)TP, β = 1 \beta=1 β=1时退化为 F 1 F_1 F1得分,其中 β > 0 \beta>0 β>0度量了查全率 R R R对查准率 P P P的相对重要性, β > 1 \beta > 1 β>1时查全率 R R R有更大影响, β < 1 \beta < 1 β<1时查准率 P P P有更大影响
-
ROC曲线与AUC
-
真正例率 T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP
-
假正例率 F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP
-
ROC曲线:横轴FPR,纵轴TPR,(0,1)理想点
-
AUC:两种等价定义,第一种是ROC曲线下的面积,第二种是对任给的一对正负样本正类样本预测值大于(等于)负类样本预测值的概率,AUC越大说明性能越好,分类器能更好的分开正负样本
AUC具体的两种等价定义推导如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kmorX0Ek-1617816560145)(imgs/auc.png)]
-
-
偏差与方差
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hhp3gs4A-1617816560147)(imgs/bias_var.png)]
偏差方差存在tradeoff,偏差降到很低,可能方差会比较大,此时可能过拟合,方差太小,偏差很大,此时可能欠拟合
常用模型
- 线性模型(广义线性模型):逻辑斯蒂回归模型、softmax回归等
- 树相关模型与集成学习:决策树、随机森林(bagging)、GBDT(boosting)等
- 支撑向量机SVM
- 聚类:原型聚类(K-Means)、密度聚类(DBSCAN)、层次聚类等
- 降维与度量学习:KNN、低维嵌入、PCA主成分分析等
- 贝叶斯分类:贝叶斯决策、极大似然估计、朴素贝叶斯分类器、EM算法等
- 深度学习:神经网络等(了解)
- 强化学习(了解)
参考书目
- 《机器学习》周志华
- 《统计学习方法》李航