机器学习西瓜书第二章笔记

本文最后更新于:2023年4月7日 下午

第二节;模型评估与选择
1、过拟合(过配):当学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。
   *过拟合最常见导致原因:学习能力过于强大
   *过拟合是无法彻底避免的,我们所能做的只是”缓解”,或者说减小其风险
2、欠拟合(欠配):是指对训练样本的一般性质尚未学好
3、学习能力是否“过于强大“,是由学习算法和数据内涵共同决定
4、产生训练集S和测试集T的方法
   1)、留出法:直接将数据集D划分为两个互斥的集合。即一个作为训练集S,一个作为测试集T。
   *难点在于如何划分两个集合,训练集S过大会导致评估结果不够稳定准确,T过大会导致降低评估结果的保真性(fidelity)。
   2)、交叉验证法:先将数据集D划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,然后每次用k-1个子集的并集作    为训练集,余下的那一个子集作为测试集;这样就可以获得k组训练/测试集,从而可以进行k次训练和测试,最终返回的是这k个测试集结果的均值。
   3)、自助法:以自助采样法(bootstrap sampling)为基础。在给定包含m个样本的数据集D,我们对它进行采样产生数据集D`,每次随机从D中挑选一个样本,将其拷贝放入到D`,然后再将该样本放回D中,使得该样本在下次随机取样中依旧可能被采集到,将这个过程重复m次后,我们就得到了包含m个样本的数据集D`,这就是自助采样的结果。
5、模型的“好坏”是相对的,模型的好坏不仅取决于算法和数据,还取决于任务需求。
   *回归任务最常用的性能度量是:均方误差
6、查准率(准确率)和查全率(召回率)是一对矛盾的度量。一般时候查准率越高(低),查全率往往越低(高)。
   *查准率:P=TP/(TP+FP)
   *查全率:R=TP/(TP+FN)
   1)、若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者。
   2)、平衡点Break-Even Point 简称:BEP):它是“查准率=查全率”时的取值。
    *通常不使用BEP,因为太过简化,一般使用F1度量,F1是基于查准率与查全率的调和平均harmonic mean)定义的。
7、ROC与AUC
   1)、截断点cut point):将样本分为两个部分,前一部分判作正例,后一部分则判作反例。
   2)、我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以他们为横,纵坐标作图,就得到ROC曲线
   3)、ROC全称是“受试者工作特征”(Receiver Operating Characteristic),其纵轴是“真正例率”(True Positive Rate,简称:TPR),横轴是“假正例率”(False Positive Rate,简称:FPR
   4)、与P-R图相似,若一个学习器的ROC曲线被另一个学习器的曲线完全"包住",则可以断言后者的性能优于前者。若两个学习器曲线发生交叉,则一般难以进行判定谁优谁劣,此时若要进行比较,则比较合理的方法就是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。
8、代价敏感错误率与代价曲线
   1)、为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”(unequal cost
   2)、在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线”(cost curve)则可以达到该目的。
9、机器学习性能比较的几个重要因素
   1)、我们希望比较的是泛化性能,然而通过实验评估方法我们获得的是测试集上的性能,两者的对比结果可能未必相同。
   2)、测试集上的性能与测试集本身的选择有很大关系,且不论使用不同大小的测试集会得到不同的结果,即便用相同大小的测试集,所包含测试样例不同,测试结果也会有不同。
   3)、很多机器学习算法本身有一定的随机性,即便用相同的参数设置在同一个测试集上多次运行,其结果也会有不同。
10、统计假设检验hypothesis test)为我们进行学习器性能比较提供了重要依据
   1)二项检验“和“t检验(t-test)”是对于单个学习器泛化性能的假设进行检验
    交叉验证t检验”和“McNemar检验”是对不同学习器的性能进行比较
   2)交叉验证t检验:其思想就是若两个学习器的性能相同,则他们使用相同的训练/测试集得到的测试错误率应相同。具体来说,就是对k折交叉验证产生的k对测试错误率,先对每队结果求差,若两个学习器性能相同,则差值理应为零,因此可以根据这些差值,计算出差值的均值和方差。
   3)、“交叉验证t检验”和“McNemar检验”都是在一个数据集上比较两个算法的性能。而我们在一个数据集上进行多个算法比较则采用基于算法排序的Friedman检验使用Friedman检验来判断这些算法是否性能都相同,若相同,则它们的平均序值应当相同,若“所有算法的性能相同”这个假设被拒绝,则说明算法的性能显著不同,这是就需要进行“后续检验”(post-hoc test)来进一步区分各算法,常用的有Nemenyi后续检验
11、偏差-方差分解bias-variance decomposition)是解释学习算法泛化性能的一种重要工具。
   1)、偏差与方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。
 
 

打赏支持
“如果你觉得我的文章不错,不妨鼓励我继续写作。”

机器学习西瓜书第二章笔记
https://dreamoneyou.github.io/2018/机器学习西瓜书第二章笔记/
作者
九叶草
发布于
2018年12月27日
更新于
2023年4月7日
许可协议