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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhq9695/article/details/87353198

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

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 / 3 2/3 ~ 4 / 5 4/5 作为测试集。

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

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

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

按照以前的数据量划分,可以划分为, 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) 1 m i = 1 m ( f ( x i ) y i ) 2 \frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2
均方根误差RMSE(root mean squared error) 1 m i = 1 m ( f ( x i ) y i ) 2 \sqrt{\frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2}
平均绝对误差MAE(mean absolute error) 1 m i = 1 m f ( x i ) y i \frac{1}{m}\sum_{i=1}^m\mid f(x_i)-y_i \mid

2.2. 分类评估指标

名称 公式
错误率 1 m i = 1 m I ( f ( x i ) y i ) \frac{1}{m}\sum_{i=1}^m\mathbb{I}(f(x_i)\neq y_i)
精度Accuracy 1 m i = 1 m I ( f ( x i ) = y i ) \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 T P T P + F P \frac{TP}{TP+FP}
查全率Recall T P T P + F N \frac{TP}{TP+FN}
F1-score 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l \frac{2\times Precision\times Recall}{Precision+Recall}
F β F_\beta -score ( 1 + β 2 ) × P r e c i s i o n × R e c a l l ( β 2 × P ) + R e c a l l \frac{(1+\beta^2)\times Precision\times Recall}{(\beta^2\times P)+Recall}

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

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

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

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

名称 公式
TPR(True Positive Rate) T P T P + F N \frac{TP}{TP+FN}
FPR(False Positive Rate) F P F P + T N \frac{FP}{FP+TN}
TNR(True Negative Rate) T N F P + T N \frac{TN}{FP+TN}
FNR(False Negative Rate) F N T P + F N \frac{FN}{TP+FN}

ROC受试者工作特征曲线(Receiver Operating Characteristic)以FPR为横坐标,TPR为纵坐标,将学习器的预测结果排序,越前面的样本是正例的可能性越高,并按照这个顺序逐个将前面的样本作为正例进行预测,可得如下曲线(图源:百度百科):

AUC(Area Under ROC Curve)定义为ROC曲线下的面积,面积越大,模型性能越好:
A U C = 1 2 i = 1 m 1 ( x i + 1 x i ) ( y i + y i + 1 ) AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_i+y_{i+1})

3. 非均等代价

不同类型的错误产生的代价不同,可使用非均等代价(unequal cost)(图源:机器学习):

代价敏感错误率定义为:
1 m ( x i D + I ( f ( x i ) y i ) × c o s t 01 + x i D I ( f ( x i ) y i ) × c o s t 10 ) \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不能反映学习器的期望总体代价,可以使用代价曲线
c o s t n o r m = F N R × p × c o s t 01 + F P R × ( 1 p ) × c o s t 10 p × c o s t 01 + ( 1 p ) × c o s t 10 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}}
其中, p p 表示样例为正的数目。ROC曲线上面每一点对应代价平面上的一条线段,所有线段下的面积表示了该条件下的期望总体代价(图源:机器学习):


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

猜你喜欢

转载自blog.csdn.net/zhq9695/article/details/87353198