在机器学习中除了需要了解各种算法知识(如SVM、神经网络等),也需要了解是如何通过什么方式评估和度量模型的,从而选择最佳的模型。
1. 准备训练/测试集评估
- 如何评估一个模型的性能,当然是用数据来评估。那么用哪些数据评估模型呢?既把数据用作训练,同时又把这部分数据用作测试当然是不合理的,这会导致过高的估计模型的性能。测试数据要尽可能地与训练数据互斥。因此就需要将总量有限的数据划分为训练集和测试集两个互斥的集合,那么如何进行划分呢?
1.1 留出法
- 留出法简单粗暴,直接将数据集划分为两部分,一部分作为训练 S S S,一部分作为测试 T T T,在 S S S上训练模型,然后在 T T T上评估模型的泛化性能。对于一个样本,随机地将其划分其中一个数据集中,一般保持训练集占整个数据集的 2 3 − 4 5 \frac{2}{3}-\frac{4}{5} 32−54,那么测试占整个数据集的 1 5 − 1 3 \frac{1}{5}-\frac{1}{3} 51−31。另外,评估模型的稳定性,一般会多次使用留出法,进行多次训练和测试。
1.2 交叉验证法
- 交叉验证法把数据集 D D D划分为 k k k个互斥的子集( D 1 , D 2 , . . . , D k D_1,D_2,...,D_k D1,D2,...,Dk),则称为 k k k折交叉验证(通常取 k = 10 k=10 k=10)。每次利用 k − 1 k-1 k−1个子集作为训练集,另外一个子集作为测试集,从而完成 k k k次训练和测试,以 k k k次训练和测试的均值作为结果。在 k k k者交叉验证时,数据样本的划分是固定的,有时候为了避免样本划分的不同而引入误差,需要进行多次 k k k者交叉验证,比如实施10次10折交叉验证,那么就需要进行100次模型的训练和测试。
1.3 自助法
-
数据集 D D D包含 m m m个样本,自助法的流程如下:每次随机从 D D D中选择一个样本,复制到 D ′ D^{'} D′中(注意,该样本没有从 D D D拿出),重复执行 m m m次该操作,得到一个包含 m m m个样本的新数据集 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} \mapsto \frac{1}{e} \approx 0.368 m→+∞lim(1−m1)m↦e1≈0.368
- 因此在新的数据集 D ′ D^{'} D′中约有36.8%的样本未出现。
2. 性能度量
- 有了测试集之后,使用什么指标来度量模型的好坏程度呢?不同的任务需求,会使用不同的性能度量指标,在回归和分类任务中,性能度量的指标也完全不一样。
2.1 回归问题的性能度量
- 回归问题的标记 y i y_i yi一般都是实值,不能通过是否相等进行评估。一般是通过衡量预测值 f ( x i ) f(x_i) f(xi)和真实值 y i y_i yi之间的距离。常用的评价指标有均方误差等。
和方误差(sum square error, SSE)
S S E = ∑ i n [ f ( x i ) − y i ] 2 SSE = \sum_{i}^{n} [ f(x_i) - y_i ]^2 SSE=i∑n[f(xi)−yi]2
平均绝对误差(mean absolute error, MAE)
M A E = 1 n ∑ i n ∣ f ( x i ) − y i ∣ MAE = \frac{1}{n} \sum_{i}^{n} \left| f(x_i) - y_i \right| MAE=n1i∑n∣f(xi)−yi∣
均方误差(mean square error, MSE)
M S E = 1 n ∑ i n [ f ( x i ) − y i ] 2 MSE = \frac{1}{n} \sum_{i}^{n} [ f(x_i) - y_i ]^2 MSE=n1i∑n[f(xi)−yi]2
均方根误差(root mean square error, RMSE)
R M S E = M S E = 1 n ∑ i n [ f ( x i ) − y i ] 2 RMSE = \sqrt{MSE} = \sqrt {\frac{1}{n} \sum_{i}^{n} [ f(x_i) - y_i ]^2} RMSE=MSE=n1i∑n[f(xi)−yi]2
平均绝对百分比误差(mean absolute percentage error,MAPE)
M A P E = 1 n ∑ i n ∣ f ( x i ) − y i y i ∣ MAPE = \frac{1}{n} \sum_{i}^{n} \left| \frac{f(x_i) - y_i}{y_i} \right| MAPE=n1i∑n∣∣∣∣yif(xi)−yi∣∣∣∣
平均平方百分比误差(mean square percentage error,MASE)
M S P E = 1 n ∑ i n [ f ( x i ) − y i y i ] 2 MSPE = \frac{1}{n} \sum_{i}^{n} [ \frac{f(x_i) - y_i}{y_i} ]^2 MSPE=n1i∑n[yif(xi)−yi]2
- 引入百分比之后,可以有效避免因为样本的绝对数值引起的评估不恰当问题。比如对于房价的预测,数值一般为几万/平,而对于人身高的预测,一般为1.x米。如果不加上相对百分比的限制,就会导致数值差距非常大,虽然对于问题的求解不影响,但给人的直观感受很不一样。
加权平均绝对百分比误差(weighted MAPE, wMAPE)
直接使用MAPE,可能会碰到两个问题
- 1)如果遇到除数为0的情况,这个指标就没法计算;
- 2)不同样本在数量级上有差别。例如真实值分别是2和20000,预测值分别是12和30000。那么前者的误差是500%,后者的误差是50%
故在销量预测或者其它回归任务上,多用wMAPE来作为衡量指标,更加看重对于大值预测的准确性。
w M A P E = ∑ i n ∣ f ( x i ) − y i ∣ ∑ i n ∣ y i ∣ wMAPE = \frac{\sum_{i}^{n}\left| {f(x_i) - y_i}\right|}{\sum_{i}^{n}\left|y_i\right|} wMAPE=∑in∣yi∣∑in∣f(xi)−yi∣
决定系数 R 2 R^2 R2
M S E = 1 − S S E S S T MSE = 1- \frac{SSE}{SST} MSE=1−SSTSSE
其中SSE表示前面提到的和方误差,而SST则表示原始数据相对均值的波动
S S T = ∑ i n [ y i − y ‾ ] 2 SST = \sum_{i}^{n} [ y_i - \overline{y} ]^2 SST=i∑n[yi−y]2
若 R 2 R^2 R2小于0,则表示拟合的很差,还不如以平均值拟合的效果好。一般 R 2 R^2 R2介于0~1之间,越接近于1,说明拟合效果越好。
2.2 分类问题的性能度量
2.2.1 错误率和准确率
- 错误率和准确率是最常用的分类问题性能度量的指标。
\begin{equation*}
\epsilon = \frac{1}{n} \sum_{i=1}^{n} I(f(x_i) \neq y_i)
\end{equation*}
\begin{equation*}
acc = 1 - \epsilon
\end{equation*}
2.2.2 查准率和查全率
-
虽然错误率和准确率很常用,确实很多场景下使用准确率就够了(比如,统计投篮的命中率等)。但也有很多场景下,使用准确率是不够的(比如,买瓜时,一般只关注自己买到的瓜是否是好瓜)。这时,就需要用到查准和查全率(查准又称为精确率,查全又称为召回率)。
-
要用公式解释查准率和查全率时,首先需要解释混淆矩阵。混淆矩阵表示某个类别被识别为其它类别的数量。对于二分类问题,混淆矩阵如下:
其中,
TP表示正样本被预测为正样本(真正例,true positive)
FN表示正样本被预测为负样本(假负例,false negative)
FP示负样本被预测为正样本(假正例,false positive)
TN表示负样本被预测为负样本(真负例,true negative)
- 查准率和查全率就可以定义如下:
\begin{equation*}
Precision = \frac{TP}{TP + FP } \
Recall = \frac{TP}{TP+FN}
\end{equation*}
-
那对于多分类问题而言呢?混淆矩阵和查准、查全率如何计算呢?
-
混淆矩阵是一致的,查准和查全可以按照二分类来类比,即分为类 A A A和非类 A A A两种。举个例子如下:
. | A | B | C |
---|---|---|---|
A | 4 | 1 | 2 |
B | 2 | 7 | 1 |
C | 10 | 1 | 21 |
- 混淆矩阵如上,对于类A而言, p r e c i s i o n = 4 4 + 2 + 10 precision = \frac{4}{4+2+10} precision=4+2+104, r e c a l l = 4 4 + 1 + 2 recall = \frac{4}{4+1+2} recall=4+1+24。
2.2.3 F 1 F_1 F1和 F β F_\beta Fβ 分数
F 1 F_1 F1和 F β F_\beta Fβ是精确率和召回率的调和平均。有如下公式:
\begin{equation*}
\frac{1}{F_1} = \frac{1}{2} \times \frac{1}{P} + \frac{1}{2} \times \frac{1}{R}
\end{equation*}
\begin{equation*}
\frac{1}{F_\beta} = \frac{1}{1 + \beta^2} \times \frac{1}{P} + \frac{\beta^2}{1 + \beta^2} \times \frac{1}{R}
\end{equation*}
调和平均和算术平均、几何平均相比,更加关注于较小值。
2.2.4 P-R曲线
- P-R曲线的解释可以参见我的博客P-R曲线深入理解。