西瓜书+实战+吴恩达机器学习(一)机器学习基础(数据集划分、分类回归评估指标)

如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~

0. 前言

通常,我们将数据集划分为以下几个子数据集:

  1. 训练集:用于训练模型参数的数据集
  2. 开发集:用于调试模型超参数的数据集(相当于平时所说的测试集)
  3. 测试集:只用于测试模型性能的数据集

针对回归的结果,对模型进行评估,通常有:

  1. 均方误差MSE、均方根误差RMSE、平均绝对误差MAE

针对分类的结果,对模型进行评估,通常有以下几种方法:

  1. 错误率、精度Accuracy
  2. 查准率Precision、查全率Recall、F-score(F1-measure)
  3. 混淆矩阵Confusion Matrix、TPR、FPR、TNR、FNR
  4. ROC、AUC

初始作如下定义:
西瓜书+实战+吴恩达机器学习(一)机器学习基础(数据集划分、分类回归评估指标)

  • TP(True Positive):预测结果为正类,实际上就是正类
  • FP(False Positive):预测结果为正类,实际上是反类
  • FN(False negative):预测结果为反类,实际上是正类
  • TN(True negative):预测结果为反类,实际上就是反类

1. 数据集划分方法

在此评估方法中,我们假设测试样本也是从样本真实分布中独立同分布采样的

留出法(hold-out):将数据集划分为两个互斥的子集,一般要采用若干次随机划分然后取平均值,通常取2/32/3~4/54/5作为测试集。

交叉验证法(cross validation):将数据集划分为kk个大小相似的互斥子集,每次选择k1k-1个作为训练集,11个作为测试集,最后取kk组测试结果的平均,一般的取值k=10k=10

自助法(bootstrapping):对数据集DD进行有放回采样,采样mm次,得到数据集DD'作为训练集,通过取极限可得DD中约有36.8%36.8\%的样本未出现在DD'中,所以可将这部分作为测试集,自主法产生的数据改变了初始的数据分布,这会引入估计偏差。

通常,将数据划分为训练集、开发集、测试集,基于开发集上的性能来进行模型选择和调参,基于测试集评估模型方法。

按照以前的数据量划分,可以划分为,60% 20% 20%60\%\ 20\%\ 20\% 或者 70% 30%70\%\ 30\%,诸如此类。在大数据的情况下,例如有1,000,000条数据,可能开发集和测试集仅各10,000数据就足够,98% 1% 1%98\%\ 1\%\ 1\%,诸如此类。

2. 模型性能度量

2.1. 回归评估指标

名称 公式
均方误差MSE(mean squared error) 1mi=1m(f(xi)yi)2\frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2
均方根误差RMSE(root mean squared error) 1mi=1m(f(xi)yi)2\sqrt{\frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2}
平均绝对误差MAE(mean absolute error) 1mi=1mf(xi)yi\frac{1}{m}\sum_{i=1}^m\mid f(x_i)-y_i \mid

2.2. 分类评估指标

名称 公式
错误率 1mi=1mI(f(xi)yi)\frac{1}{m}\sum_{i=1}^m\mathbb{I}(f(x_i)\neq y_i)
精度Accuracy 1mi=1mI(f(xi)=yi)\frac{1}{m}\sum_{i=1}^m\mathbb{I}(f(x_i)=y_i)

Precision可以理解为预测结果为正类中有多少是正类

Recall可以理解为真实结果为正类中有多少被预测成正类

F1-score是综合考虑Precision和Recall的指标

FβF_\beta能表达出对查准率、查全率的不同偏好β>1\beta>1对查全率有更大的影响,β<1\beta<1对查准率有更大的影响。

名称 公式
查准率Precision TPTP+FP\frac{TP}{TP+FP}
查全率Recall TPTP+FN\frac{TP}{TP+FN}
F1-score 2×Precision×RecallPrecision+Recall\frac{2\times Precision\times Recall}{Precision+Recall}
FβF_\beta-score (1+β2)×Precision×Recall(β2×P)+Recall\frac{(1+\beta^2)\times Precision\times Recall}{(\beta^2\times P)+Recall}

TPR可以理解为所有正类中,有多少被预测成正类(正类预测正确)

FPR可以理解为所有反类中,有多少被预测成正类(正类预测错误)

TNR可以理解为所有反类中,有多少被预测成反类(反类预测正确)

FNR可以理解为所有正类中,有多少被预测成反类(反类预测错误)

名称 公式
TPR(True Positive Rate) TPTP+FN\frac{TP}{TP+FN}
FPR(False Positive Rate) FPFP+TN\frac{FP}{FP+TN}
TNR(True Negative Rate) TNFP+TN\frac{TN}{FP+TN}
FNR(False Negative Rate) FNTP+FN\frac{FN}{TP+FN}

ROC受试者工作特征曲线(Receiver Operating Characteristic)以FPR为横坐标,TPR为纵坐标,将学习器的预测结果排序,越前面的样本是正例的可能性越高,并按照这个顺序逐个将前面的样本作为正例进行预测,可得如下曲线(图源:百度百科):
西瓜书+实战+吴恩达机器学习(一)机器学习基础(数据集划分、分类回归评估指标)
AUC(Area Under ROC Curve)定义为ROC曲线下的面积,面积越大,模型性能越好:
AUC=12i=1m1(xi+1xi)(yi+yi+1) AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_i+y_{i+1})

3. 非均等代价

不同类型的错误产生的代价不同,可使用非均等代价(unequal cost)(图源:机器学习):
西瓜书+实战+吴恩达机器学习(一)机器学习基础(数据集划分、分类回归评估指标)
代价敏感错误率定义为:
1m(xiD+I(f(xi)yi)×cost01+xiDI(f(xi)yi)×cost10) \frac{1}{m}(\sum_{x_i \in D^+}\mathbb{I}(f(x_i)\neq y_i)\times cost_{01}+\sum_{x_i \in D^-}\mathbb{I}(f(x_i)\neq y_i)\times cost_{10})

在非均等代价情况下,ROC不能反映学习器的期望总体代价,可以使用代价曲线
costnorm=FNR×p×cost01+FPR×(1p)×cost10p×cost01+(1p)×cost10 cost_{norm}=\frac{FNR\times p\times cost_{01}+FPR\times(1-p)\times cost_{10}}{p\times cost_{01}+(1-p)\times cost_{10}}
其中,pp表示样例为正的数目。ROC曲线上面每一点对应代价平面上的一条线段,所有线段下的面积表示了该条件下的期望总体代价(图源:机器学习):
西瓜书+实战+吴恩达机器学习(一)机器学习基础(数据集划分、分类回归评估指标)


如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~