文章目录
基本术语
名词 | 解释 |
---|---|
属性空间/样本空间/输入空间 | 属性张成的空间 |
特征向量/示例/样本 | 属性空间中的一个点 |
假设 | 模型 |
假设空间 | 模型集 |
真相 | 数据潜在规律本身 |
样例 | 拥有标记信息的样本 |
标记空间/输出空间 | 标记的集合 |
泛化能力 | 模型适用于新样本的能力 |
基本过程
1.表示:将数据对象进行特征化表示;
2.训练:学习规律/模型;
3.测试:用新的数据集对模型进行测试。
模型的评估与选择
经验误差与过拟合
误差:学习器的实际预测输出与样本的真实输出之间的差异。
训练误差/经验误差:学习器在训练集上的误差。
测试误差:学习器在测试集上的误差。
泛化误差:学习器在除训练集以外的样本上的误差。
以上所指的是误差期望。
欠拟合:训练误差大,泛化误差大。
解决方案:1.决策树:拓展分枝;2.神经网络:增加训练轮数。
过拟合:训练误差小,泛化误差大。
解决方案:1.优化目标加正则项;2.提前停止。
三个关键问题:
- 如何获得测试结果?——评估方法;
- 如何评估性能优劣?——性能度量;
- 如何判断实质差别?——比较检验。
评估方法
使用测试集来测试学习器对新样本的判别能力,用测试误差来近似泛化误差。
补充说明:
- 现实任务中,还额外考虑时间开销、存储开销、可解释性等方面。
- 通常假设测试样本是从样本真实分布中独立同分布采样得到的,应尽可能与训练集互斥。
也可用于验证集划分。
留出法
直接将测试集划分为两个互斥的集合。
注:
1.数据集的划分应尽可能保持数据分布的一致性,避免因数据划分引入额外的偏差而对最终结果产生影响;
保留类别比例的采样方式称为分层采样。
2.若干次随机划分,重复实验,取平均值。
3.训练集测试集之比一般为2:1~4:1。
k折交叉验证法
将数据集分层采样划分为k个大小相似的互斥子集,每次用k-1个子集作为训练集,剩余的子集作为测试集,最终返回k个测试结果的均值。
将数据集划分为k个子集存在多种多样的方式,为了减小因样本划分不同,引入的偏差,我们进行p次实验,因此,最终的结果是p次k折交叉验证结果的均值。
留一法
k折交叉法的k=m时(m为样本容量),我们得到留一法。
特点:
1.不受随机样本划分方式的影响;
2.结果往往比较准确;
3.数据集大时,计算开销难以忍受。
自主采样法
见集成学习——串行式集成学习法——自主采样法。
对数据集D又放回采样m次,得到训练集D‘,用D/D’作为测试集。
说明:
- 自主采样在数据集小、难以有效划分训练/测试集时很有用。
- 由于改变了数据集分布,可能引入估计偏差,当数据量足够时,留出法和交叉验证法更常用。
- 集成学习中,常用自助采样法。
- 实际模型和预计模型都使用了m个训练样本。
- 约有0.368个样本不会出现在训练集中。
调参与最终模型
算法的参数:人工设定,称为超参数;
模型的参数:学习确定。
参数选择的好不好对最终性能有关键的影响。
为什么要调整参数?不能交给计算机运算吗?
参数的选择是在实数域上,可选对象众多,开销过大。
因此,我们需要给予一个范围以及步长。
这是在精度与开销折衷的选择。
过程
1.从训练数据中划分训练集与验证集,用以评估性能,选择模型,调整超参数。
2.选出最优模型,用训练数据重新训练最终模型。
注意:测试集是不以任何形式参与模型的选择与训练的。倘若不需要调整超参数,验证集等同于测试集。验证集的作用与测试集是极其类似的。
性能度量
评估泛化性能。
使用不同的性能度量方法会导致不同的评判结果。
什么样的模型是好的,不仅取决于模型和参数,还取决于任务需求。
不同的任务需求对应了不同的性能度量方式。
回归任务
经常采用均方误差。
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
分类任务
错误率
分错样本占样本总数的比例。
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
≠
y
i
)
E(f;D)=\frac{1}{m}\sum_{i=1}^mI(f(x_i)\not=y_i)
E(f;D)=m1i=1∑mI(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}^mI(f(x_i)=y_i)=1-E(f;D) acc(f;D)=m1i=1∑mI(f(xi)=yi)=1−E(f;D)
混淆矩阵
真实情况 | 预测为正例 | 预测为反例 |
---|---|---|
正例 | TP | FN |
反例 | FP | TN |
True Positive;False Negative;
False Positive;True Negative;
精度衡量的是模型的预测准确程度。
查准率和查全率则进一步细化了这一标准。
更偏向于研究某一具体类别的预测程度,探究模型对这一类别的特征识别能力的高低。
查准率
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
Precision = \frac{TP}{TP+FP}
Precision=TP+FPTP
判定为正例的样本中,有多少实际为真。
预测正例是否都是准确的。
查准率的分母是基于预测结果。
查全率
R
e
c
a
l
l
=
T
P
T
P
+
F
N
Recall = \frac{TP}{TP+FN}
Recall=TP+FNTP
实际为正例的样本中,有多少被识别出来。
所有正例是否被全查出来。
查全率的分母是基于真实结果。
P-R曲线
对预测结果从高到低进行排序。
把逐个样本作为正例进行预测,可以得到Precision-Recall曲线。
一般而言,面积越大,性能越好。
平衡点(BEP,Break Even Point)上是“查准率=查全率”时的取值,用于度量P-R曲线有交叉的分类器性能高低。
F-score
比BEP更常用。以上两个标准都是对查准率和查全率综合考量的评价指标。
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
本质上是调和平均数:
1.对数据取倒数;
2.算术平均这些倒数;
3.将结果取倒数。
若对查准率/查全率有不同的偏好,我们采用
F
β
F_\beta
Fβ。这是P和R的加权调和平均。
1
F
β
=
1
1
+
β
2
(
1
P
+
β
2
R
)
\frac{1}{F_\beta}=\frac{1}{1+\beta^2}(\frac{1}{P}+\frac{\beta^2}{R})
Fβ1=1+β21(P1+Rβ2)
于是
β
>
1
\beta\gt1
β>1侧重于查全率;
β
<
1
\beta\lt1
β<1侧重于查准率;
β
=
1
\beta=1
β=1就是F1。
关于F1的意义与调和平均数有关,这值得进一步研究。
之所以采用调和平均数的原因在于,好的算法中P和R的得分都要求很高,不能一个好一个坏。而调和平均数具有放大差异的作用,差异过大的话,其得分会很低。
AUC & ROC曲线
ROC是TPR-FPR曲线。
TPR(True Precision Rate):正例中识别准确的比例。即Precision。
FPR(False Precision Rate):反例中识别准确的比例。
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
我们比较的是AUC,即ROC覆盖的面积。
性能评估须知
1.测试性能并不等于泛化性能;
2.测试性能随着测试集的变化而变化;
3.机器学习算法本身就带有一定的随机性。
综上考量,直接选去相应的评估方法在相应的度量下比大小的方法不可取。
可以采用假设检验的方法进一步衡量性能优劣。
偏差方差分解
在用不同的训练集训练后,得到了几个不同的模型,对他们的性能进行泛化误差分析。
方差:反映了不同数据集产生的影响;
偏差:反映了算法本身的拟合能力;
噪声:反映了学习任务本身的难度。
我们在评估性能时,需要针对不同的训练集进行多次指标计算,根据均值判定该模型的总体情况。这也是我们偏差方差分解的依据。