文章目录
课程内容记录
在模型的建立过程中和建立完成之后,需要对模型的性能指标进行评估
在这之中,对于模型的好坏,什么叫好的模型,而什么又叫不好的模型,不能只是在程度上进行说明,最好是使用数值性的标准对模型的性能进行评估,这个时候就需要评价指标对模型的泛化能力进行评估。
一个好的模型,应该是对于未知的内容,具有很好的泛化的能力,对于未知的内容具有一定的自主学习能力,能够很好的提取之前喂入的数据中的存在的规律。
泛化误差可以在自己设置的test集上的到体现,而经验误差可以在train集上的到体现,但是如果对于train而言,如果过度提取训练集中数据的特征的话,可能会导致将一些脏数据或者一些噪声数据的特征也学习进去,导致模型的过拟合。
欠拟合是提取学习数据的特征不充分,导致模型的效果不佳。
过拟合过度提取和学习数据的特征,导致模型的泛化能力不足进而导致模型的性能达不到预期。
一、模型选择
1. 评估方法
在模型选取阶段,通过测试结果对模型
1.1 留出法
在训练之前对模型在不同阶段需要用到的数据进行划分,可选的方式是将数据划分为训练集、验证集和测试集。在这之中,训练集用来学习模型中涉及到的参数,验证集用来评估不同模型之间的性能指标,测试集用来衡量在通过使用验证集对多个模型的进行选择步骤之后的模型在模拟“现实”情况下的性能。
也可以只是将数据划分为训练集和测试集两个部分。测试集用来学习模型中涉及到的参数,测试集用来评判模型的性能。
1.2交叉验证
在样本量比较小的时候,可以使用留一交叉验证的方法,对模型的效果进行评估。
通过交叉验证的方法,可以更为全面的得到模型在数据集上的性能。
1.3 自助法
使用有放回抽样的话,通过统计学概念上的算式可以推算出,大概有36.8%的数据是抽取不到的,那么这部分抽取不到的数据就可以当做是测试集的数据,用来评估模型的泛化能力。
1.4 “调参”与最终模型
在对模型涉及到的参数进行分类的时候,可以划分为超参数和模型参数,其中超参数是需要人手工调节的,而参数是通过为模型喂入数据,从这喂入的数据中学习的到的。
一个模型的好坏,起码包含两个影响因素,一个是喂入模型的数据的数量和质量、另一个是对模型中涉及到的参数的调整和学习完成度。
一个参数调整的好或者不好可以通过“训练集”+“验证集”进行调整,模型的最终泛化效果是使用验证集进行评判的。
2. 性能度量
在通过上一步骤,模型的选取之后,就需要对模型的性能进行度量。
2.1 性能度量指标:错误率vs.精度
可以从两个方面对模型的性能进行评估,从正确率和错误率两个方法进行对模型的效果进行评估。
2.2 性能度量指标:查准率vs.查全率
查准率:在预测为真值的例子中标签确实为真值例子的比例。
查全率:在标记为真值的样本中被预测出来为真值的样本的比例。
2.3 PR图、BEP
通过比较A、B和C之间曲线包含的面积对模型的性能指标进行评估,但是只能从直观上进行判断,没有数值上的比较的结果,如果两个模型之间的性能存在很大差异的时候,以这种方式进行评估,能够一眼看出;但是当不同模型之间,在查准率和查全率之间存在一个权衡的话,就很难直观的体现不同模型之间的差距。
使用BEP指标对模型的性能进行评估,使用一条y=x的直线和模型的PR图相交,得到一个平衡点,使用BEP点对不同模型的性能进行评估。
但是存在有时候查准率和查全率,一高一低,没办法通过权衡这两个指标来判断不同模型之间的性能上的好坏,使用 F 1 F_1 F1指标对其进行衡量。
2.4 F1
2.5 宏xxvs.微xx
分别在宏观和微观两个层面对其进行评估。
2.6 ROC、AUC
用来评估模型性能的指标,AUC值越大代表其性能越好。
当这个评价指标在0.5附近摆动的时候,模型近乎无用,给出的预测结果有一半的可能是错误的结果。
ROC曲线绘制过程,可以使用对应的软件包对其进行绘制。
2.7 非均等代价
即模型犯不同错误导致的影响是不同的。
比如在一个医疗诊断系统中,如果一个没有生病的人被错误的诊断为病人的后果可能不是那么严重,但是如果一个病人,在诊断的时候被错误的诊断为正常人,进而导致错过最佳的治疗时期从而使得病情恶化,甚至丧命,这个两种错误导致的后果就不同,则对应的对代价进行评估的时候,代价也应该是不同的。
可以通过设置不同的代价权重,在数量上来体现两者的差异。
3.比较检验
通过实验结果能从一定程度上论证模型的性能,但是不能从根源上说明,最好从理论上对其进行论证。
3.1 常用的检验方法
3.1.1 二项检验
3.1.2 t检验
3.1.3 交叉验证t检验
3.1.4 McNemar检验
3.1.5 Friedman检验
3.1.6 Friedman检验图
二、误差分析
在机器学习中,误差包含哪些部分,从另一个方面来说,涉及到的误差又包含哪些成分,这些成分又是从何而来的?
4.1 偏差-方差分解
在对模型的训练过程中,存在一个问题,就是如果模型训练不充分,会导致模型在训练集上的表现不佳;但是如果训练太充分了,会导致过拟合的问题,需要找到一个适中的范围。