第5章 如何评估分类效果?

5.1 如何避免模型的过拟合和欠拟合?

面试官:过拟合和欠拟合是什么,怎么产生的,要怎么处理?

程序员大树:
过拟合:训练的模型在训练集上面的表现很好,但是在测试集上面的表现很差,即模型的泛化能力较差。
欠拟合:训练的模型在训练集上面的表现很差,在测试集上面的表现也很差。
 
产生的原因:
过拟合:
1. 最本质原因是:训练的模型太复杂,即模型记住了某些并不通用的特征,而不是学习到了通用的规律;
2. 训练集和测试集不符合同分布的假设;
3. 训练数据中含有较多的噪声
欠拟合:模型发生欠拟合的最本质原因是:训练的模型太简单,最通用的特征模型都没有学习到

解决方案:
过拟合
方案1:清洗数据。即去除掉可能有问题的数据。
方案2:添加正则项(正则项的作用主要是通过参数来控制模型的复杂度,常用的有L1和L2正则项);
方案3:采用“Early Stopping”方法。即所谓的提前停止方法。一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。在数据挖掘中,可以对决策树剪枝,降低树的深度等。
方案4:添加Dropout层。即通过修改网络本身的结构来实现的。(在训练开始时,随机得删除一些(可以设定为一半,也可以为1/3,1/4等)隐藏层神经元,即认为这些神经元不存在,同时保持输入层与输出层神经元的个数不变,这样就当于生成了很多个不同的简单网络。)
 
                                                             Dropout技术
方案5:增加训练集样本的个数。即给予模型提供更多的数据,这些数据中可能会包含更多的可能性,更容易让模型学习到通用的特征表示。
方案6:  使用集成学习方法。采用多个模型集成在一起,来降低单一模型的过拟合风险。
 
欠拟合
方案1:做特征工程,添加更多的特征项。即提供的特征不能表示出那个需要的函数;
方案2:减少正则化参数。即使得模型复杂一些;
方案3:使用更深或者更宽的模型
方案4:使用集成方法。融合几个具有差异的弱模型,使其成为一个强模型;

5.2 如何评估分类器的性能?

面试官:有哪些评估分类器性能的方法?

程序员大树:
    holdout方法。holdout是最简单也是最直接的验证方法,它将样本数据划分成互斥的两个部分,一部分作为训练集,一部分作为验证集,在训练集上训练模型,在验证集上验证模型,包括绘制ROC曲线、计算精确率和召回率等指标来评估模型性能。这种方法正因为它的简单直接,缺点也是很明显的,它不能充分利用数据去训练模型,而且模型的结果严重依赖于最初的训练集和测试集的划分。
     K-Fold交叉验证。K-Fold交叉验证将数据集划分成K个互斥的数据子集,依次遍历这K个子集,每次都把当前的子集作为验证集,其余所有的子集作为训练集,最后把K次评估指标的平均值作为最终的评估指标。K-Fold交叉验证的稳定性和K的取值有很大关系。K值太小实验稳定性不够,K值太大都可能导致建模成本提高,一般K值取10。

    bootstrap方法。也叫自助法,训练样本有放回抽样,即训练记录会放回到原来的记录集中,会被等概率地重新抽取。自助法能对采样估计的准确性(标准误差、置信区间和偏差)进行比较好的估计,它基本上能够对任何采样分布的统计量进行估计。
Bootstrap有两种形式:非参数bootstrap和参数化的bootstrap,但基本思想都是采样。参数化的bootstrap假设总体的分布已知或总体的分布形式已知,可以由样本估计出分布参数,再从参数化的分布中进行再采样。非参数化的bootstrap是从样本中再抽样,而不是从分布函数中进行再抽样。


5.3 有哪些比较分类器的方法?

面试官:在一个给定数据集上,如何比较用哪个分类器效果更好?

程序员大树:
如果仅用准确率衡量分类器,会有误差。 准确率的局限性主要是不同类别的样本比例不均衡,占比大的类别往往会成为影响准确率的最主要因素。比如在小规模检验集上准确率很高,和另一个在大规模数据集上准确率略低的模型比,可能后者更优。
    (1)估计准确度的置信区间。比如通过将分类任务用二项式实验建模来推导置信区间。给定一个包含N个记录的检验集,令X是被模型正确预测的记录数,p是模型的真正准确率。建模,X服从N(0,p)的二项分布,可以推导出acc的置信区间:


(2)检验观察差是否显著。比如考虑模型,在测试集上评估,错误率分别是,目标是检验e_2 的观察差是否统计显著(错误率观察差.
则方差为: 
在置信水平(1-α)%下,实际差的置信区间为:

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-16 12:18
点赞 评论 收藏
分享
06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-18 18:23
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务