版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhq9695/article/details/87353198
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~
0. 前言
通常,我们将数据集划分为以下几个子数据集:
- 训练集:用于训练模型参数的数据集
- 开发集:用于调试模型超参数的数据集(相当于平时所说的测试集)
- 测试集:只用于测试模型性能的数据集
针对回归的结果,对模型进行评估,通常有:
- 均方误差MSE、均方根误差RMSE、平均绝对误差MAE
针对分类的结果,对模型进行评估,通常有以下几种方法:
- 错误率、精度Accuracy
- 查准率Precision、查全率Recall、F-score(F1-measure)
- 混淆矩阵Confusion Matrix、TPR、FPR、TNR、FNR
- ROC、AUC
初始作如下定义:
- TP(True Positive):预测结果为正类,实际上就是正类
- FP(False Positive):预测结果为正类,实际上是反类
- FN(False negative):预测结果为反类,实际上是正类
- TN(True negative):预测结果为反类,实际上就是反类
1. 数据集划分方法
在此评估方法中,我们假设测试样本也是从样本真实分布中独立同分布采样的。
留出法(hold-out):将数据集划分为两个互斥的子集,一般要采用若干次随机划分然后取平均值,通常取
2/3~
4/5作为测试集。
交叉验证法(cross validation):将数据集划分为
k个大小相似的互斥子集,每次选择
k−1个作为训练集,
1个作为测试集,最后取
k组测试结果的平均,一般的取值
k=10。
自助法(bootstrapping):对数据集
D进行有放回采样,采样
m次,得到数据集
D′作为训练集,通过取极限可得
D中约有
36.8%的样本未出现在
D′中,所以可将这部分作为测试集,自主法产生的数据改变了初始的数据分布,这会引入估计偏差。
通常,将数据划分为训练集、开发集、测试集,基于开发集上的性能来进行模型选择和调参,基于测试集评估模型方法。
按照以前的数据量划分,可以划分为,
60% 20% 20% 或者
70% 30%,诸如此类。在大数据的情况下,例如有1,000,000条数据,可能开发集和测试集仅各10,000数据就足够,
98% 1% 1%,诸如此类。
2. 模型性能度量
2.1. 回归评估指标
名称 |
公式 |
均方误差MSE(mean squared error) |
m1i=1∑m(f(xi)−yi)2 |
均方根误差RMSE(root mean squared error) |
m1i=1∑m(f(xi)−yi)2
|
平均绝对误差MAE(mean absolute error) |
m1i=1∑m∣f(xi)−yi∣ |
2.2. 分类评估指标
名称 |
公式 |
错误率 |
m1i=1∑mI(f(xi)̸=yi) |
精度Accuracy |
m1i=1∑mI(f(xi)=yi) |
Precision可以理解为预测结果为正类中有多少是正类。
Recall可以理解为真实结果为正类中有多少被预测成正类。
F1-score是综合考虑Precision和Recall的指标。
Fβ能表达出对查准率、查全率的不同偏好,
β>1对查全率有更大的影响,
β<1对查准率有更大的影响。
名称 |
公式 |
查准率Precision |
TP+FPTP |
查全率Recall |
TP+FNTP |
F1-score |
Precision+Recall2×Precision×Recall |
Fβ-score |
(β2×P)+Recall(1+β2)×Precision×Recall |
TPR可以理解为所有正类中,有多少被预测成正类(正类预测正确)。
FPR可以理解为所有反类中,有多少被预测成正类(正类预测错误)。
TNR可以理解为所有反类中,有多少被预测成反类(反类预测正确)。
FNR可以理解为所有正类中,有多少被预测成反类(反类预测错误)。
名称 |
公式 |
TPR(True Positive Rate) |
TP+FNTP |
FPR(False Positive Rate) |
FP+TNFP |
TNR(True Negative Rate) |
FP+TNTN |
FNR(False Negative Rate) |
TP+FNFN |
ROC受试者工作特征曲线(Receiver Operating Characteristic)以FPR为横坐标,TPR为纵坐标,将学习器的预测结果排序,越前面的样本是正例的可能性越高,并按照这个顺序逐个将前面的样本作为正例进行预测,可得如下曲线(图源:百度百科):
AUC(Area Under ROC Curve)定义为ROC曲线下的面积,面积越大,模型性能越好:
AUC=21i=1∑m−1(xi+1−xi)(yi+yi+1)
3. 非均等代价
不同类型的错误产生的代价不同,可使用非均等代价(unequal cost)(图源:机器学习):
代价敏感错误率定义为:
m1(xi∈D+∑I(f(xi)̸=yi)×cost01+xi∈D−∑I(f(xi)̸=yi)×cost10)
在非均等代价情况下,ROC不能反映学习器的期望总体代价,可以使用代价曲线:
costnorm=p×cost01+(1−p)×cost10FNR×p×cost01+FPR×(1−p)×cost10
其中,
p表示样例为正的数目。ROC曲线上面每一点对应代价平面上的一条线段,所有线段下的面积表示了该条件下的期望总体代价(图源:机器学习):
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~