学习模型的泛化能力须要进行评估,现将主要的评估方法和性能度量总结以下html
将数据集D划分为互斥的两部分,一个做为训练集S,另外一个做为测试集T,其中T的规模大约为D的1/5到1/3。该法的优势在于足够明了,缺点在于若令S较大,T较小,则使用T进行测试的结果可能不够准确;若是令T较大,S和D的规模会相差较大,用S训练得出的模型可能和用D训练得出的模型差异较大。通常的,每每不会单次使用留出法,而是屡次随机划分S和T,将屡次评估结果的平均值做为最终的评估结果。另外,为保证T和D的分布一致,可能须要分层采样。bootstrap
将数据集D划分为大小类似的k个互斥子集,而后进行k(一般取五、10,20)次评估,每次评估时,使用\(D_i\)子集做为测试集,剩余k-1个子集做为训练集,最终的评估结果为k次评估的平均值。一般该验证法会随机划分屡次子集,最终结果取其平均值。交叉验证法相比留出法的优势是:可以保证全部样本都参与了训练和测试。app
对具备m个样本的数据集D进行有放回随机抽取m次,获得一个新的数据集\(D\prime\),将\(D\prime\)用做训练集,D \(D\prime\)(D中没有被抽到\(D\prime\)中的样本组成的集合)用做测试集。该法的优势在于避免留出法和交叉验证法因为训练集S和样本集D规模不一样引起的误差。显然,\(D\prime\)和D的分布状况不一样,会致使误差,一般数据集较小时使该法有用,数据量足够多时,留出法和交叉验证法更为经常使用。机器学习
用于回归问题的度量方法有:性能
用于分类问题的度量方法有:学习
用以下符号表示测试结果(课程中和书籍中的TNFP表示方式太绕,此处使用很好理解的“正负”的表示方式):测试
准确率为:\(P=\frac{正正}{正正+负正}\),查全率为:\(R=\frac{正正}{正正+正负}\),准确率表示的是预测为正例中真正正例的比例,查全率表示的是全部正例中被预测为正例的比例。准确率和查全率此消彼长,在实际应用中衡量取舍,如电商推荐相似产品看中准确率,找出谁是犯罪分子更看中查全率。一般用F1(准确率和查全率的调和平均数)度量综合准确率和查全率:
\[F1=\frac{1}{2}(\frac{1}{P}+\frac{1}{R})=\frac{2PR}{P+R}= \frac{2*正正}{总样本+正正-负负}\]
可加入参数\(\beta\)调整准确率和查全率的权重:
\[F_\beta=\frac{1}{1+\beta^2}(\frac{1}{P}+\frac{\beta^2}{R}) = \frac{(1+\beta)^2PR}{\beta^2P + R}\]
当\(\beta\)大于1时查全率有更大影响,当\(\beta\)小于1时,准确率有更大影响。spa
在二分类问题中,除了准确率和查全率,还可使用TPR(True Positive Rate)和FPR(False Positive Rate)度量。其中:
\[TPR=\frac{正正}{正正+正负}\]
\[FPR=\frac{负正}{负正+负负}\]
即:TPR表示全部正例被正确预测为正例的比例(也就是查全率),FPR表示负例被错误的预测为正例的比例。不一样于精确率和查全率,精确率和查全率此消彼长,若是想把尽量多的甜西瓜挑出来(提升查全率),就难免会出现把更多的生瓜当甜瓜的状况(精确率降低),而TPR和FPR并非此消彼长,而是同向变化。htm
该概念常应用于医学检测,假设某种疾病的判断标准为:若是检查结果大于某阈值,则认为患病,不然为不患病,TPR表示确诊率,FPR表示误诊率,当医生下结论很是谨慎时,TRP较高,同时也把更多的非患病者诊断为了患病者,即FPR也高了。将测试样本排序,最多是正例的样本放到首位,最不多是正例的样本放到末位,初始阈值设为最大,即全部的样本均预测为反例,此时TPR和FPR都是0,逐步下降阈值会获得多组TPR和FPR,当阈值降到最低,即全部的样本都被预测为正例,此时TPR和FPR都是1,以TPR为纵轴、FPR为横轴绘制的曲线叫作ROC(Receiver Operation Characteristic),大体以下图(实际状况中,因为阈值个数有限,曲线不会以下图这般平滑)所示:
可见,给定一组坐标,TPR较高而FPR较低为是更为理想的结果,能够用ROC曲线下方面积来度量,容易知道:面积越大,结果越是理想,该面积被称为AUC(Area Under ROC Curve)
\[AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_{i+1} + y_i)\]blog
参考: