机器学习:模型评估

拟合

过拟合(Overfitting)

欠拟合(Underfitting)

模型评估方法

留出法(Hold-out)

直接将数据集划分为两个互斥地集合,其中一个集合作为训练集,另一个作为测试集。在使用时,一般要采用若干次随机划分,重复进行实验,评估后取平均值作为结果。

交叉验证法(Cross Validation)

自助法(Bootstrapping)

假定包含mm个样本的数据集DD,每次从DD中随机挑选一个样本,将其拷贝入DD',重复mm次,就得到了包含mm个样本的数据集DD'。显然,DD中的一部分样本会在DD'中多次出现,一部分样本不会在DD'中出现。该方法在数据集较小,难以有效划分训练集、测试集时很有用,但会引入估计偏差。

性能度量

均方误差(Mean squared error)

MSE(f,y)=i=1m[f(xi)yi]2mMSE(f, y) = \dfrac{ \sum\limits_{i=1}^{m} [f(x_i) - y_i]^2 }{m}

回归任务最常用的性能度量方法。

错误率与精度

错误率

E=i=1m[f(xi)yi]mE = \dfrac{ \sum\limits_{i=1}^{m} Ⅱ[f(x_i)≠y_i] }{m}

精度

Acc=i=1m[f(xi)=yi]mAcc = \dfrac{ \sum\limits_{i=1}^{m} Ⅱ[f(x_i)=y_i] }{m}

混淆矩阵

真实情况 预测为正例(Positive) 预测为反例(Negatie)
正例(True) 真正例(TP) 伪反例(FN)
反例(False) 伪正例(FP) 真反例(TN)

准确率

Accuracy=TP+TNm=TP+TNTP+FP+TN+FNAccuracy = \dfrac{TP+TN}{m} = \dfrac{TP+TN}{TP + FP + TN + FN}

特异度

Specificity=TNFalse=TNFP+TNSpecificity = \dfrac{TN}{False} = \dfrac{TN}{FP + TN}

精确率(查准率)

Precision=TPPositive=TPTP+FPPrecision = \dfrac{TP}{Positive} = \dfrac{TP}{TP + FP}

召回率(查全率)

Recall=TPTrue=TPTP+FNRecall = \dfrac{TP}{True} = \dfrac{TP}{TP + FN}

平衡点(BEP,Break-Even Point)

查准率和查全率是一对矛盾的变量,平衡点就是查准率等于查全率时的取值。

F1F_1

F1=1121Precision+121Recall=2PrecisionRecallPrecision+Recall=2TP2TP+FN+FP\begin{array}{r} F_1 \\ \\ \\ \\ \\ \\ \\ \end{array} \begin{array}{l} = \dfrac{1}{ \frac{1}{2} ⋅ \frac{1}{Precision} + \frac{1}{2} ⋅ \frac{1}{Recall} } \\ \\ = \dfrac{2 ⋅ Precision⋅Recall}{Precision + Recall} \\ \\ = \dfrac{2TP}{2TP + FN + FP} \end{array}

F1F1是基于查准率和查全率的调和平均数。

FβF_β

Fβ=11β2+11Precision+β2β2+11Recall=(1+β2)PrecisionRecallβ2Precision+Recall\begin{array}{r} F_β \\ \\ \\ \\ \\ \end{array} \begin{array}{l} = \dfrac{1}{ \frac{1}{β^2+1} ⋅ \frac{1}{Precision} + \frac{β^2}{β^2+1} ⋅ \frac{1}{Recall} } \\ \\ = \dfrac{ (1+β^2) ⋅ Precision ⋅ Recall }{ β^2 ⋅ Precision + Recall } \end{array}

FβF_β是基于查准率和查全率的加权调和平均数,当β=1β=1时,即为F1F_1

ROC

ROC(Receiver Operating Characteristic,受试者工作特征)曲线纵轴为“真正例率(TPR,True Positive Rate)”,横轴是“假正例率(FPR,False Positive Rate)”。

AUC(Area Under Curve)”为ROC曲线所覆盖的区域面积。AUC越大,分类器分类效果越好。

AUC 效果
11 完美分类器
(0.5,1)(0.5,1) 优于随机猜测
0.50.5 等价于随机猜测
(0,0.5)(0,0.5) 差于随机猜测

代价

在非均等代价下ROC曲线不能反映出学习器的期望总体代价。

代价敏感(Cost-Sensitive)错误率

E=xiD+(f(xi)yi)cost01+xiD(f(xi)yi)cost10mE = \dfrac{ \sum\limits_{x_i∈D^+} Ⅱ(f(x_i)≠y_i) cost_{01} + \sum\limits_{x_i∈D^-} Ⅱ(f(x_i)≠y_i) cost_{10} }{m}

代价曲线(Cost Curve)

横轴为“正概率代价”,纵轴为“归一化代价”。

P(+)cost=pcost01pcost01+(1p)cost10P(+){cost} = \dfrac{ p ⋅ cost_{01} }{ p ⋅ cost_{01} + (1-p) ⋅ cost_{10} }

costnorm=FNRpcost01+FPR(1p)cost10pcost01+(1p)cost10cost_{norm} = \dfrac{ FNR ⋅ p ⋅ cost_{01} + FPR ⋅ (1-p) ⋅ cost_{10} }{ p ⋅ cost_{01} + (1-p) ⋅ cost_{10} }

比较检验

我们希望比较的是泛化性能,然而通过实验评估方法我们获得的是测试集上的性能,两者的对比结果未必相同。

比较算法数量 检验名称 说明
2 交叉验证tt检验
2 McNemarMcNemar检验
* FriendmanFriendman检验
* NemenyiNemenyi后续检验

偏差

偏差

biasi=f(xi)yibias_i = f(x_i) - y_i

方差

ε2=i=1mbiasi2mε^2 = \dfrac{ \sum\limits_{i=1}^{m} {bias_i}^2 }{m}

偏差方差窘境(Bias-Variance Dilemma)

一般来说,偏差与方差是有冲突的,假定我们能控制学习算法的训练程度,则在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差逐渐主导了泛化错误率。