模型评估与选择

2020-11-02  本文已影响0人  byejya

过拟合:严重影响泛化能力。过拟合即对训练样本的训练效果太好,导致将训练样本自身特点当成样本都具有的特征,导致泛化能力差。

对于泛化能力,需要评估。评估方式:用测试集,将测试误差作为泛化误差的近似,要求最好测试集不在训练集中出现过。但是当我们只有一个包含m个样本的训练集时,如何从中分出一部分做测试集就十分重要了

        从数据集中分出测试集和训练集的方法:留出法、交叉检验法、自助法(包外估计)

                    

                            留出法直接将数据集划分为两个互斥的集合。注意1:训练/测试的划分要保持数据分布的一致性,注意2:有多重分割方式。问题:训练集大,则模型可能准确但评估有误差;测试集大则模型可能不准确。常见解决方式是2/3分割或4/5分割

                              交叉检验法:多次将集合划分为子集,每次留一个作为测试集之一。使用每次的子集-1作为训练集训练多次,但测试集一样,是每次取出的那一个的集合。这样能尽可能少的抽出样本,但注意同上,需要注意有多种划分子集的方式,通常做法:随机使用不同划分方式,做10次折叠,也有5次或者20次的。比较好的做法(在样本量不是非常大的情况下),可以做和样本量一样多次的训练,这样因为每次只抽出一个,测试集的样本量=样本量。但这在样本量很大时,其训练时长是不能接受的。

                            即使控制了抽出的样本量,留出法和交叉检验法仍都需要从训练集中抽出一部分做测试集,使得训练集的样本数量减少。但是自助法可以避免训练集样本量减少的问题。不好之处在于,自助法的数据集不是原本的分布,可能会引入误差。

                            自助法:m个样本的数据集,每次有放回的抽取,执行m次。显然,可以得到一个也是m个样本的集合,成为D',由于是有放回的抽取,D'中必然有一部分重复出现,另一部分是从未出现的,这个从未出现的量是1/3(经数学计算),因此,如果将D'作为训练集,而在D'中从未出现的作为测试集,这样我们就有m个样本做训练集(虽然问题是其中有重复出现并且数据集分布和原始数据集不同,但数量不变,是m个),1/3的样本做测试集。这在数据集小时有用,然而在有主梁数据时,还是使用留出法和交叉检验法更好。

总结:对于只有一个数据集时,书上从中划分测试集和训练集的方法有三种,留出法和交叉检验的好处是数据分布基本不变,缺点是减小了训练集的样本量,适合在有足够初试数据集时只用;而自助法改变了数据分布,但适合数据集小的时候使用,因为不改变训练集的样本量。

就我们的项目而言,数据集适中是,可以考虑交叉验证法中的特例留一法,再大可能需要用交叉验证,再大考虑留出法。应该不考虑自助法。

调参

参数配置不同,学得的模型往往有显著差别。

但尝试所有参数是不现实的,常用方法是设置一个范围和步长。

参数分为算法参数(超参数),往往在十个以内,需要人工设置范围调参的。另一类是模型参数,数目通常很多,通过学学习来产生多个候选模型。

最终模型

模型评估和选择过程中通常选出一部分训练集和验证集,等模型训练结束,参数选择结束后,再用全部数据集训练模型,得到的才是最终模型。

性能度量

对模型的泛化能力进行评估。

        回归任务的常用性能度量:均方误差

        分类任务(二分类和多分类都适合):错误率(分错的/总数),精度(分对的/总数)缺点:都是和总数比,因此在需要追求在检索中的正确率时就无法提现了。

                                                   进阶方式:查全率(P),查准率(R)

                                                   查准率:查到的中,正确的占百分比高。所有认为的正例中的找到的真正正例。就是在找到的认为的正例中,正例的比例。

                                                    查全率:查到的中,正确的数量更多。真正的正例中,找到的真实正例的比例。就是查的有多全。

                                                     通常,查全率高查准率就低,反之也是。只有在简单任务中,两者才都高。

                                                    以查全率和查准率为横纵坐标,可得出P-R曲线,可显示学习器在样本总体上的查全率和查准率,若一条P-R曲线完全“包住”另一条,则此学习器性能好。两线有交叉时一般比较其面积,面积大的好。这一定程度上表征了双高的比例,但是需要更准确的综合考虑两性能。方法:平衡点(BEP)度量--->F1度量

                                                                    平衡点取对角线和P-R的交点,意味取P=R时的取值,但是在对P和R重视程度不同的应用中不十分可取,此时可用F1度量

                                                           ROC AUC曲线:由于学习器采用排序和截断点的方式取认为的正例,排序的好坏就能体现泛化能力的好坏。ROC曲线类似P-R曲线,纵轴是真正例率,横轴是假正例率,在进行学学习器比较时,也类似P-R图,包住或比较面积大小。对应的,面积就是AUC,表示排序损失。

                                                        代价:不同错误代价不同,因此不能对所有错误赋予均等代价,注意,在均等代价下我们希望最小化错误次数,而非均等代价下,希望最小化总体代价。非均等代价代价下ROC曲线不能代表期望总体代价,需要代价曲线才能达到目的。方法是去所有线段的下界。

  代价检验

对学习器的性能进行比较

        假设检验:对单个学习器泛化性能的比较:二项检验,多次留出法,可用t检验

                           对多个学习器性能比较:在一个数据集上比较两个算法:交叉t检验,最好是5*2交叉检验。McNemar检验

                                                                    在多个数据集上对多个算法检验:Friedman Nemenyi后续检验

误差的分类

泛化误差是:偏差 误差 噪声之和

偏差:算法本身拟合能力

方差:数据扰动造成影响

噪声:对任何算法而言,次学习任务的困难下限。

若训练不足,拟合不够强,训练足够,则数据扰动产生误差明显,若训练过度,则过拟合。因此很多学习算法可控制训练程度。

上一篇下一篇

猜你喜欢

热点阅读