一般先通过交叉验证的方法,获取算法的测试数据,然后运用一系列的评估指标来量化算法优劣,如:学习曲线诊断、偏差方差诊断、偏斜误差度量等。
5.2.1 机器算法评估基础
测试集划分方法:
常规方法:
- 将数据集随机分成训练集(70%)和测试集(30%)。
- 算法通过训练集训练后,得到使代价函数 \(J(θ)\) 最小的 \(θ\)参数,获得模型。
- 对测试集运用该模型,计算代价函数误差指标 \(J{test} (θ)\) 或误分类比率指标 \(Test{error}\)。
- 根据计算出的指标值来评估机器学习算法的优劣。
交叉验证集方法:
- 将数据集随机分成训练集(60%)、交叉验证集(20%)和测试集(20%)。
- 算法通过训练集训练后,使代价函数 \(J_{train} (θ)\) 最小的 \(θ\)参数,获得模型。
- 对交叉验证集运用该模型,计算得出交叉验证误差 \(J_{cv} (θ)\),选取代价函数值最小的模型。
- 用选出的模型对测试集计算得出推广误差,即代价函数的 \(J_{test} (θ)\)。
数据泛化与过度拟合:
- 数据泛化:模型对于新的数据或新的场景的预测能力或推广能力。
- 过度拟合:模型能够很好的拟合已有的数据,但对于新的数据出现很难泛化的现象。
5.2.2 学习曲线诊断
分别以训练集误差\(J{train} (θ)\)和交叉验证集误差\(J{cv} (θ)\)为纵坐标,以训练集的数量m为横坐标,绘制成一张图表。</br>
可获得训练集m大小的最优选择,以及是否存在欠拟合或过拟合的情况。欠拟合代表的是偏差(过去)比较大;过拟合代表的是方差(未来)比较大。
曲线类型:
高偏差学习曲线:增加训练集数量基本上对算法的改进没有帮助
- 训练集误差曲线上升比较陡峭,验证集误差下降的比较缓慢。
- 当训练样本数量达到或超过了特定的数值,训练误差和验证误差就趋于接近且不变。
- 且\(J{train} (θ)\)和\(J{cv} (θ)\)的误差都处于较高的误差值上(高偏差的主要判断依据)。
高方差学习曲线:增加训练集数量对算法的改进很有帮助。
- 训练误差相对较小,且随样本数量增加的涨幅比较平缓。
- 训练误差\(J{train} (θ)\)很小,验证误差\(J{cv} (θ)\)很大。
- 随着训练集样本数量增加,训练误差和验证误差这两条学习曲线正在相互靠近。
应用:
5.2.3 偏差和方差诊断
分别以训练集代价函数误差\(J{train} (θ)\)和交叉验证集的代价函数误差\(J{cv} (θ)\)为纵坐标,以算法超级参数的不同取值为横坐标,绘制一张图表。获得是否存在欠拟合或过拟合的情况,解决算法超级参数调优问题。
多项式模型选择:
- 欠拟合:训练集误差\(J{train} (θ)\)数值比较大,且与交叉验证集误差\(J{cv} (θ)\)相近
- 过拟合:训练集误差\(J{train} (θ)\)数值比较小,且交叉验证集误差\(J{cv} (θ)\)远大于训练集误差\(J{train} (θ)\) $$J{cv} (θ)≫J_{train} (θ)$$
正则化\(λ\)参数选择:
- 过拟合:当\(λ\)较小时,训练集误差\(J{train} (θ)\)较小,交叉验证集误差\(J{cv} (θ)\)较大。
- 欠拟合:随着λ 的增大,训练集误差\(J{train} (θ)\)不断增加,而交叉验证集误差\(J{cv} (θ)\)则是先减小后增加。
5.2.4 偏斜类的误差度量
偏斜类指的是训练集中有非常多的同一种类的实例,只有非常少的或没有其它类的实例。在误差分析时,通过误分类比率来度量误差、评判算法效果是没有意义的。以下以人群患癌为例,若实际患癌的比例为0.5%,通过交叉验证集进行误差分析,将算法准确率提高至99.2%或99.5%是无意义的。
混淆矩阵:
根据算法预测值和实际值之间的不同组合得到四种类型:
- 正确肯定:预测为真,实际为真(True Positive—TP)。
- 正确否定:预测为假,实际为假(True Negative—TN)。
- 错误肯定:预测为真,实际为假(False Positive—FP)。
- 错误否定:预测为假,实际为真(False Negative—FN)。
偏斜类误差度量:
- 查准率:正确肯定在肯定中的占比,越高越好(在所有预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比。)
- 查全率:正确肯定在实际值为真中的占比,越高越好(在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比(以上预测病人肿瘤为良性的非机器学习算法,其查全率是0。)
查准率和召回率的权衡:
- 若算法有较高的查准率和较高的查全率,则认为这个算法是一个好的算法。在实际应用中通常需要保证查准率和召回率的相对平衡:若只在非常确信的情况下预测为真,即希望更高的查准率,可使用比0.5 更大的阀值,如0.7,0.9;若希望提高查全率,可使用比0.5 更小的阀值,如0.3。
- 查准率和召回率的权衡:选择最高的阀值