1. 评估方法
由于实际训练中无法直接获得泛化误差,而训练误差又由于过拟合现象的存在而不适合作为标准。因此在周志华的机器学习课本中写到以下几种评估方法。
1.1 留出法
简而言之就是将数据集划分为训练集(70%)和测试集(30%),但是要注意以下几点 :
训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据的划分过程引入额外的偏差而对最终结果产生影响(在广告预测中,假设样本数据的用户分别有中国人、美国人、朝鲜人、德国人,而划分数据集时将中国人和美国人的数据作为训练集,朝鲜人和德国人的数据作为测试集,这种做法将会引入额外的偏差。正确的做法是在每个国家中抽取百分之70作为训练集,剩下的作为测试集)
分类任务中要保持样本的类别比例相似。
使用留出法时,一般要使用若干次随机划分,每次产生一个训练/测试集用于实验评估,100次后就得到100个结果,而留出法返回的则是这100个结果的平均。
另外值得一提的是,可以根据你的样本量来划分训练集和测试集。假设有1000000样本量,那么你可以将99%的样本划分为训练集,1%的样本做为测试集,因为10000个样本做为测试集已经足够。
1.2 交叉验证法
交叉验证法是将数据集 划分为 个大小相似的互斥子集。每个子集都尽可能保持数据分布的一致性(可以分层采样)。然后,每次用 个子集的并集作为训练集,余下的那个子集作为测试集;这样就可以获得 组训练/测试集,从而可进行 次训练和测试,最终返回的是这 个测试结果的均值。 最常用的取值是10,此时称为10折交叉验证。与留出法相似,为减小因样本划分不同而引入的差别, 折交叉验证通常要随机使用不同的划分重复 次,最终的评估结果过是这 次 折交叉验证结果的均值。
2. 性能度量
对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量。
2.1 错误率与精度
错误率是分类错误的样本数占样本总数的比例。见式1.1
精度则定义为分类正确的样本数占样本总数的比例。见式1.2
更一般的,对于数据分布 和概率密度函数 ,错误率和精度可分别描述如下式所示
2.2 查准率、查全率与F1
错误率和精度虽常用,但并不能满足所有任务需求。如用训练好的模型对西瓜进行判别,显然错误率衡量了有多少比例的瓜被判别错误,但若我们关心“所有好瓜中有多少比例被挑了出来‘那么错误率就不够用了。这时需要使用其他的性能度量,“查准率”与”查全率”更为适用于此类需求的性能度量。对于二分类问题,分类结果的“混淆矩阵”如下表所示
查准率
与查全率
分别定义为
查准率即表示为真正例占预测为正例数的比例,同样,查全率表示为真正例占所有实际正例数的比例。查准率和查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。若比较两个学习器的优劣即可比较 曲线,若一个学习器的 曲线被另一个学习器的曲线完全“包住”则可断言后者的性能优于前者。但这个值不太容易估算,因此设计了一些综合考虑查准率、查全率的性能度量。
“平衡点”(“简称BEP”)就是这样一个度量,它是“查准率=查全率”时的取值,但BEP还是过于简化,更常用的是F1度量:
2.3 ROC与AUC
全称是“受试者工作特征”曲线。
曲线与
曲线使用查准率、查全率为纵、横轴不同,
曲线的纵轴是“真正例率”(
)横轴是“假正例率”(
),两者的定义分别为
进行学习器的比较时,与 图相似,若一个学习器的 曲线被另一个学习器的曲线完全“包住”则可断言后者的性能优于前者。若两个学习器的 曲线发生交叉,则难以一般地断言两者孰优孰劣;此时一定要进行比较,则较为合理的判据是比较 曲线下的面积,即 。