机器学习西瓜书泛读笔记(二)

原文转自:周志华《机器学习》读书笔记(二)

一. 经验误差与过拟合

错误率:分类错误的样本数,占样本总数的比例。

精度:分类正确的样本数,占样本总数的比例。

显然有,错误率+精度=1 恒成立

误差:学习器的实际预测输出,与样本的真实输出之间的差异。

训练误差/经验误差:学习器在训练集上的误差

泛化误差:学习器在新样本上的误差


显然我们的目标是得到“泛化误差”尽可能小的学习器,也即在新样本上可以表现得尽可能好的学习器。这里涉及两个概念:

过拟合:学习能力“过强”。将训练集本身特性当作所有潜在样本的统一性质,使得泛化性能下降。

欠拟合:学习能力“过弱”。对训练集样本本身特性都未能学好。

例如,对一些散点我们进行拟合。

                                                      

                              (图一:过拟合)                                                                                                                                        (图二:欠拟合)

显然这几个散点,用二次函数去拟合是比较适宜的。图一采用了四次函数,使得模型完全的贴合训练集,使得其泛化性大大降低。

图二才用了线性关系,虽然也不错,但就这个例子中,其学习能力没有是不够的。


说明了“过拟合”和“欠拟合”的概念后,这里我们需要强调的是。实际在机器学习应用中,“过拟合”是机器学习面临的关键障碍。并且,“过拟合是无法彻底避免的”,我们在各类算法中所做的措施,也只能是尽可能去“缓解”过拟合。


同一问题有多种算法,而就算对于同一算法,也有不同的参数配置。在机器学习中,我们把“选择学习方法,选择参数配属”的这种过程,称为“模型选择


二.评估方法

测试集:用来判断学习器对新样本的判别能力的测试样本的集合。并且结果的“测试误差”,也将作为泛化误差的近似。


当我们只有一个数据集,既要训练,又要测试的时候,我们必须对数据集进行一定的处理。从中产生出数据集S和训练集T。以下是常见的几种方法:

1.留出法

将数据集D直接划分为两个互斥的集合,一个集合作为数据集S,另一个作为测试集T。

在对数据集进行划分的时候,要采用“分层采样”

譬如D有500正例,500反例。训练集包含70%样本,则训练集S应含350正例,350反例。测试集T应含150正例,150反例。

注意的是,单次使用留出法,结果往往不稳定可靠。因此,使用留出法时,我们要采用若干次随机划分、重复进行实验评估后取均值作为留出法的评估结果。


2.交叉验证法

交叉验证法,可以看作留出法的“加强版”

我们将数据集D直接划分为k个互斥的集合,每一次,用(k-1)个集合的并集作为数据集S,余下那个作为测试集T。这样,我们可以进行k次训练和测试,最终返回的是,这k个测试结果的均值。

“交叉验证法”通常也被称作“k折交叉验证”。其中最常用的是“10折交叉验证


特别的,如果数据集D中包含m个样本,我们令k=m,此时有了交叉验证法特例中的“一法”。

其优点是:不受随机样本划分方式的影响;  评估结果往往比较准。

缺陷:若数据集大,则计算量无法承受;由NFL定理,纵然这样的巨大计算量,也未必能保证它比其他方法更准确。


3.自助法(bootstrapping)

某数据集D包含m个样本,对这些样本进行m次有放回的抽样,并把每次抽样结果,放到D‘这个新的数据集里。


显然,初始数据集中,约有36.8%的样本未出现在采样数据集D’中。也就是说,D‘相比较于D,样本数量都为m,只是样本中有重复的。

自助法里,我们以D’为训练集,而以从D中m次抽样,都未能抽到的部分为测试集。

相比较于“留出法”和“交叉验证法”, 自助法更适用于数据集较小、难以有效划分训练集、测试集时候使用。
并且由于它能产生不同的训练集,因为对集成学习也有好处。

问题在于,它改变了初始数据集的分布。因此,在初始数据量足够时,这种方法使用较少。

三. 性能度量

错误率:分类错误的样本数,占样本总数的比例。

精度:分类正确的样本数,占样本总数的比例。


在引入下面的概念前,我们先看一个表格。

上面表格中,横坐标“classfication”表示“预测结果”。纵坐标“condition”表示“真实情况”。

因此由图显然可知,总共存在4种可能的情况,分别是:

FN:False Negative,即“假反例”。被判定为负样本,但事实上是正样本。

​FP:False Positive,即“假正例”。被判定为正样本,但事实上是负样本。

​TN:True Negative,即“真反例”。被判定为负样本,事实上也是负样本。

​TP:True Positive,即“真正例”。被判定为正样本,事实上也是正样本。


有了上述的基本概念,下面我们可以给出“查准率”和“查全率”的定义和公式。

查准率:真正例的个数,占我们所认为的正确的总个数的比例。

查全率:真正例的个数,占整个数据集里中的正确的总个数的比例。

即:

P(查准率)= TP/(TP+FP)

R(查全率)=TP/(TP+FN)

例如,在100个西瓜中,我们认定当中的80个是好瓜。而这80个好瓜中,真正的好瓜数是60个。那么此时“查准率”是60/80*100%=75%

又如,在100个西瓜中,有80个是真正的好瓜。在我们认定的好瓜数中,有40个是真正的好瓜。那么此时“查全率”是40/80*100%=50%


显然P与R是相互矛盾的一对量。当其中一个高的时候,另一个一般都会低。而我们实际中往往需要综合考量这两者,取这两者的综合性能更好的。

十几种,我们会作出“P-R图”来帮助分析两者相互关系,并且以“平衡点BEP”(查准率=查全率时的取值)作为度量。

但是BEP还是过于简化了,实际中我们用的更多的是F1和Fp。








(未完待续)

猜你喜欢

转载自blog.csdn.net/moyu916/article/details/88311325