模型评估方法

有些自己热爱却因为被迫无奈而放弃的东西,慢慢记录吧。以后想起,我还会知道自己学过这些。

《机器学习》周志华著的这本书是一个很好的学习资料,其实我更喜欢这本书的样子,漂亮而且有种童话故事的感觉。

在上一篇中有讲述到模型历程。https://blog.csdn.net/qq_38354978/article/details/80237689;因此在这里简单描述一下模型的评估和选择。

一:经验误差与过拟合

    1.无论什么时候,我们都希望得到一个泛化误差(在新样本上的误差)小的学习器。但有时候会出现将训练数据训练的太好,很可能已经把训练样本本身的一些特点当作了所有潜在样本都会具有的一般性质。这就成为过拟合,与其相对的还有欠拟合。

    2.导致过拟合最常见的情况是由于学习能力过强大。欠拟合则通常是由于学习能力低下而造成的。过拟合是无法彻底避免的。

    3.欠拟合比较容易克服,在决策树学习中扩展分支、在神经网络学习中增加训练轮数。

二:评估方法

    1.留出法:直接将数据D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。

                (1)需要注意的是:训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。 如果从采样的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为“分层采样”。

                (2)另一个需要注意的是,即便在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集D进行分割。单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法的时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。

                (3)我们希望评估的是用D训练出的模型的性能,但留出法需划分训练/测试集,就会导致一个问题,如果训练集包含绝大多数样本,这样训练出来可能很接近D,但T比较少,这样评估结果就可能不够稳定准确;若T多一些,这样S与D差别更大,这样训练出来的模型可能有更大差别,从而降低了评估结果的保真性。

                (4)结局上一问题没有完美的方案,常见做法是将大约2/3 - 3/4的样本用来训练,剩余样本用来测试。

    2.交叉验证法:先将数据集D划分为K个大小相似的互斥之集,每个之集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到,然后每次用k-1个之集的并集作为训练集,雨下的那个之集作为测试集,这样会得到K组数据。

                (1)交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,通常称为K折价差验证,K常取10.

                (2)若数据集D中有m个样本,若K = m,则得到一个特例:留一法。留一法不受随机样本划分方式的影响。留一法的评估结果往往被认为比较准确,然而,也有缺陷:在数据集比较大时,训练m个模型的计算开销可能难以忍受。

    3.自助法:它直接以自助采样发法为基础。给定m个样本的数据集D,我们对它进行采样产生数据集D`:每次随机从D中挑选一个样本,拷贝放入D`,然后在将样本放回初始数据集D中,使该样本下次还可以被采集到,这个过程重复m次,我们就得到包含m个样本的数据集D`,这就是自助采样的结果。

                (1)自助采集法在数据集较小、难以有效划分训练/测试集时很有用,但是,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。

猜你喜欢

转载自blog.csdn.net/qq_38354978/article/details/80553662