模型评估是模型开发过程的不可或缺的一部分。它有助于发现表达数据的最佳模型和所选模型将来工作的性能如何。在数据挖掘中,使用训练集中的数据评估模型性能是不可接受的,因为这易于生成过于乐观和过拟合的模型。数据挖掘中有两种方法评估模型,验证(Hold-Out)和交叉验证(Cross-Validation)。为了避免过拟合,这两种方法都使用(模型没有遇到过的)测试集来评估模型性能。
验证(Hold-Out)
使用这种方法时,通常大的数据集会被随机分成三个子集:
- 训练集:用于构建预测模型。
- 验证集:用于评估训练阶段所得模型的性能。它为模型参数优化和选择最优模型提供了测试平台。不是所有模型算法都需要验证机。
- 测试集或之前未遇到的样本用于评估模型未来可能的性能。如果模型与训练集拟合的好于测试集,有可能是过拟合所致。
交叉验证(Cross-Validation)
当仅有有限数量的数据时,为了对模型性能进行无偏估计,我们可以使用k折交叉验证(k-fold cross-validation)。 使用这种方法时,数据被分成k份数目相等的子集。我们构建k次模型,每次留一个子集做测试集,其他用作训练集。如果k等于样本大小,这也被称之为留一验证(leave-one-out)。
分类模型评估
混淆矩阵(Confusion Matrix)
混淆矩阵显示了分类模型相对数据的真实输出(目标值)的正确预测和不正确预测数目。矩阵为NxN,其中N为目标值(类)数目。这类模型的性能通常使用矩阵中的数据评估。下表为两个类别(阳性和阴性)的2x2混淆矩阵。
混淆矩阵 | 目标 | | |||
阳性 | 阴性 | ||||
模型 | 阳性 | TP | FP | 阳性预测值 | TP/(TP+FP) |
阴性 | FN | TN | 阴性预测值 | TN/(FN+TN) | |
| 灵敏度 | 特异度 | 准确度 | ||
TP/(TP+FN) | TN/(FP+TN) |
术语:
- 阳性 (P, positive)
- 阴性 (N, Negative)
- 真阳性 (TP, true positive):正确的肯定。又称:命中 (hit)
- 真阴性 (TN, true negative):正确的否定。又称:正确拒绝 (correct rejection)
- 伪阳性 (FP, false positive):错误的肯定,又称:假警报 (false alarm)、第二型错误
- 伪阴性 (FN, false negative):错误的否定,又称:未命中(miss)、第一型错误
- 灵敏度(sensitivity)或真阳性率(TPR, true positive rate):
又称:召回率(recall)、命中率 (hit rate)
在阳性值中实际被预测正确所占的比例。
TPR = TP / P = TP / (TP+FN) - 伪阳性率(FPR, false positive rate):
又称:错误命中率,假警报率 (false alarm rate)
FPR = FP / N = FP / (FP + TN) = 1-SPC - 特异度 (SPC, Specificity)或真阴性率(TNR, true negative rate):
在阴性值中实现被预测正确所占的比例。
SPC = TN / N = TN / (FP+TN) = 1-FPR - 假发现率 (FDR, false discovery rate):
FDR = FP / (FP + TP) = 1-TPR - 准确度 (ACC, accuracy):
预测正确的数占样本数的比例。
ACC = (TP + TN) / (P + N) - 阳性预测值 (PPV, positive predictive value)或精度 (precision):
阳性预测值被预测正确的比例。
PPV = TP / (TP + FP) - 阴性预测值 (NPV, negative predictive value):
阴性预测值被预测正确的比例。
NPV = TN / (TN + FN) - F1评分:
精度和灵敏度的调和平均数。
F1 = 2 precision * recall / (precision+recall) = 2TP/(2TP+FP+FN) - Matthews相关系数 (MCC),即 Phi相关系数:
(TP*TN - FP*FN)/ sqrt{(TP+FP)(TP+FN)(TN+FP)(TN+FN)}
示例:
混淆矩阵 | 目标 | | |||
阳性 | 阴性 | ||||
模型 | 阳性 | 70 | 20 | 阳性预测值 | 0.78 |
阴性 | 30 | 80 | 阴性预测值 | 0.73 | |
| 灵敏度 | 特异度 | 准确度 | ||
0.70 | 0.80 |
增益(Gain)和提升(Lift)图
增益和提升是分类模型有效性指标,由通过模型获得的结果和没有模型获得的结果之间的比率计算而成。增益图和提升图使用与评估分类模型性能的可视化工具。然而,与混淆矩阵评估的是整个总体上的模型性能不同,增益图和提升图评估的是总体一部分上的模型性能。
增益图
增益图实际上描述的是整体覆盖率(精度)指标。
按照模型预测出的概率从高到低排列,将每一个百分位数内的覆盖率指标标注在图形区域内,就形成了非累积的增益图。如果对每一个百分位及其之前的覆盖率求和,并将值标注在图形区域内,则形成累积的增益图。
- 显然,累积图通常能够更好的表现模型性能,而非累积图则更有利于指出模型中可能存在问题的地方。
- 采用训练集绘制的增益图一般都很不错,虽然没什么意义。用验证集绘制的收益图则未必。
示例:
提升图
提升图实际上是把各个百分位点上的提升度予以描述,同样也分累积的和非累积的。提升图显示与联系随机顾客样本相比我们有可能获得多少阳性响应。例如,通过预测模型仅联系10%的顾客,可以获得不使用模型的三倍响应。
K-S(柯尔莫诺夫-斯米尔诺夫,Kolmogorov-Smirnov)图
K-S图衡量分类模型的性能。更准确的说,K-S阳性和阴性分布之间分离度指标。如果评分将总体分成两组,一组全是阳性,一组全是阴性,则K-S为100。如果模型无法区分阳性和阴性,模型选择的效果类似从总体中随机抽取,K-S将为0。对大多数分类模型,K-S在0到100之间,值越高表示模型分离阳性和阴性的效果越好。
示例:
下例显示分类模型结果。模型对每个阳性(目标)和阴性(非目标)输出赋予0到1000之间的评分。
接收者操作特征曲线(ROC)图
ROC图与增益图或提升图类似,它们都提供了比较分类模型的一种途径。ROC图在X轴显示伪阳性率(真值为0、目标值为1的概率,即1-特异度),Y轴为真阳性率(即灵敏度)。理想情况下,曲线快速爬向左上,表示模型准确预测数据。红色斜对角线表示随机模型。
曲线下面积(AUC,Area Under the Curve)
ROC曲线下面积经常用作衡量分类模型质量的指标。随机分类的AUC为0.5,而完美分类的AUC等于1。在实践中,大多数分类模型的AUC在0.5和1之间。
举个例子来说,AUC为0.8表示从目标值为1的组内随机抽取的案例有80%的可能比目标值为0的组内随机抽取的案例评分大。当分类器无法区分两组,区域等于0.5 (ROC曲线与斜线一致)。当两组完美分离,例如没有重叠的分布,ROC曲线将直接到达左上角纵坐标1的位置.
基尼系数
判定方法:基尼系数应大于60%,就算好模型。
Gini = 2*AUC - 1
回归模型评估
当创建一些不同的回归模型后,有大量的标准可被评估和比较。
均方根误差(Root Mean Squared Error,RMSE)
RMSE是一个衡量回归模型误差率的常用公式。 然而,它仅能比较误差是相同单位的模型。
相对平方误差(Relative Squared Error,RSE)
与RMSE不同,RSE可以比较误差是不同单位的模型。
平均绝对误差(Mean Absolute Error,MAE)
MAE与原始数据单位相同, 它仅能比较误差是相同单位的模型。量级近似与RMSE,但是误差值相对小一些。
相对绝对误差(Relative Absolute Error,RAE)
与RSE不同,RAE可以比较误差是不同单位的模型。
决定系数 (Coefficient of Determination)
决定系数 (R2)回归模型汇总了回归模型的解释度,由平方和术语计算而得。
R2描述了回归模型所解释的因变量方差在总方差中的比例。R2很大,即自变量和因变量之间存在线性关系,如果回归模型是“完美的”,SSE为零,则R2为1。R2小,则自变量和因变量之间存在线性关系的证据不令人信服。如果回归模型完全失败,SSE等于SST,没有方差可被回归解释,则R2为零。
标准化残差图(Standardized Residuals Plot)
标准化残差图是一个对在标准化尺度上显示残差分散图有帮助的可视化工具。标准化残差图与普通残差图之间没有实质不同,唯一区别是在Y轴的标准化可以更容易检测到潜在的异常值。