之前认真看了一遍《机器学习》,最近想快速过第二遍,并记录下重要内容。
回看之前自己写的东西,好像自己一直倾向于只记录干货,这样的结果就是写出的东西很噎人....嗯...不敢回看...之前组会汇报时,老板也有提过,对一些概念/公式的来龙去脉并没有很清晰的展现出来,今后要注意这一方面。站在读者/听众的角度考虑,哪些知识是大家已知的,哪些是大家很模糊需要阐释清楚的,不要急着向外扔干货,要有铺垫/交待。
Ok..今天总结一下《机器学习》的第二章
机器学习实际上是通过一定量的已观测数据学习一个模型,使得该模型可有效判决新样本(有监督学习中的分类和回归任务,无监督学习中的聚类任务)。我们希望学得泛化误差尽可能小的模型,但由于新样本是未知的,只能做到使经验误差(训练误差)尽可能小。
一、过拟合/欠拟合
1)定义:
过拟合:训练过充分,将训练样本自身的一些特点当作所有样本都具有的一般性质,往往泛化性能较差;
欠拟合:训练不充分,训练样本的一般性质尚未学好;
2)原因及解决方案:
学习能力过于强大会容易导致过拟合;学习能力低下易导致欠拟合。
过拟合的解决方案:减小模型复杂度,如引入正则项
欠拟合的解决方案:增加模型复杂度,如决策树学习中扩展分支、神经网络学习中增加训练轮数
需注意的是,由于欠拟合可容易避免,避免过拟合却很难,因此过拟合往往是机器学习中的关键障碍。
二、评估方法
既然无法获取泛化误差,我们可以从训练样本中分离出一部分样本作为测试样本,并将模型对测试样本的评估结果(测试误差)作为泛化误差的近似。分离方法主要有以下三种:
1)留出法(Hold-out)
留出法采用分层抽样的方式直接将数据集划分为两个互斥的集合。其中,分层抽样是指保留类别比例的采样方式,用分层抽样可尽可能保持数据分布的一致性,从而避免由数据划分方式不同引入的偏差。
此外,由于单次留出法得到的结果往往不够可靠,可采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
2)交叉验证法(Cross Validation)
交叉验证法先将数据集划为k个大小相似的互斥子集,每次选取其中一个子集做测试集,将其余k-1个子集合并做训练集,共进行k次测试和训练,返回k次测试结果的均值。每个子集由分层采样得到。
与留出法类似,为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,对p次k折结果取平均。
若数据集中包含m个样本,则k=m时,得到留一法(leave one out)。
3)自助法(Bootstrap)
自助法即通过有放回的抽样得到训练集,将未被选取过的样本作为测试集。
自助法使用于数据集较小,难以有效划分训练/测试集的情况;但自助法产生的训练集改变了初始数据集的分布,会引入估计偏差。
小结:数据量足够时,常用留出法和交叉验证法。数据量不足时,采用自助法。
三、性能度量
1)回归任务:均方误差
2) 分类任务:错误率、精度、查准率、查全率、F1、ROC、AUC、代价敏感错误率与代价曲线
四、比较检验
统计假设检验为我们进行学习器性能比较提供了重要依据。
1)假设检验:先假设学习器泛化错误率满足某种分布,再判断该假设是否成立(若成立则接受,否则拒绝)
2)交叉验证t检验
3)McNemar检验、Friedman检验、Nemenyi后续检验
五、偏差与方差
基于均方误差的回归任务可推导出:泛化误差 = 偏差 + 方差 + 噪声;
偏差:期望输出与真实标记的差别,偏差刻画了学习算法本身的拟合能力
方差:期望输出与实际输出的差别,方差刻画了数据扰动造成的影响
噪声:实际输出与真实标记的差别,噪声刻画了学习问题本身的难度
欠拟合:偏差较大、方差较小
过拟合:方差较大、偏差较小
内容参照:《机器学习》周志华