验证曲线是一种通过定位过拟合或欠拟合等诸多问题所在,来帮助提高模型性能的有效工具。验证曲线与学习曲线相似,不过绘制的不是样本大小与训练准确率、测试准确率之间的函数关系,而是准确率与模型参数之间的关系,例如,逻辑斯谛回归模型中的正则化参数C。我们继续看下如何使用scikit-learn来绘制验证曲线:
使用上述代码,我们可得到参数C的验证曲线图像:
与learning_curve函数类似,如果我们使用的是分类算法,则validation_curve函数默认使用分层k折交叉验证来评价模型的性能。在validation_curve函数内,我们可以指定想要验证的参数。在本例中,需要验证的是参数C,即定义在scikit-learn流水线中的逻辑斯谛回归分类器的正则化参数,我们将其记为'clf_C',并通过param_range参数来设定其值的范围。与上一节的学习曲线类似,我们绘制了平均训练准确率、交叉验证准确率及对应的标准差。
虽然不同C值之间准确率的差异非常小,但我们可以看到,如果加大正则化强度(较小的C值),会导致模型轻微的欠拟合;如果增加C的值,这意味着降低正则化的强度,因此模型会趋向于过拟合。在本例中,最优点在C=0.1附近。