西瓜书阅读笔记笔记:第二章 模型评估与选择

1. 经验误差与过拟合

错误率:error rate
精度:accuracy
误差:训练集中的误差叫训练误差或经验误差;新样本上误差叫泛化误差。

我们最终希望得到一个泛化误差小的模型,使得我们可以将模型放心地应用在我们原定应用的领域上。

根据训练集误差来选择?no!只看训练集误差,那么很有可能会发生过拟合。

那么我们应该怎么做呢?——模型选择。
我们不能选择训练集误差小的,而应该选择泛化误差小的。

但是对于新样本,在应用之前,我们是无法度量的。那么如何评估呢?

采用训练集+交叉验证的形式,利用交叉验证集的表现来确定一个泛化误差会最小的模型。

2. 评估方法

确定了训练集+交叉验证集+测试集的模式。
那么如何将数据划分成训练集+交叉验证集呢?

1.留出法(hold-out)

通过分层采样,将数据集划分成互斥的两部分。
缺点:

  1. 单次留出法的结果可能不够稳定,需要多次随机划分、重复实验后取平均值。
  2. 互斥意味只能利用部分数据

2. 交叉验证法(cross validation)与其特例留一法

将数据集划分为彼此互斥的K份子数据集,每次取K-1份训练,取留下的那一份验证。最后取这K次结果的均值。所以交叉验证又称为K折交叉验证。

当验证的数据只有1个时,叫做留一法。
留一法由于训练集损失数据只有一个,所以比较准确。缺点是当数据集较大时,要训练的模型会很多,计算成本较高。

3. 自助法(bootstrapping)

对m个样本组成的数据集进行m次放回采样,并将采样的数据组成训练集。
缺点:改变了原数据集的分布。

总结:数据不足时,自助法;数据足时采用留出法和交叉验证法。
留出法是对数据集一分为二多次,再取多次的结果的平均;
交叉验证法是对数据集一分为K,每次取K-1份数据训练,取K次结果平均。
交叉验证相比留出法的区别在于,留出法每次一分为二,不能保证所有数据都用到;但是交叉验证由于分了K份,每份数据都会被利用到。

4. 调参与最终模型

在确定了训练集和交叉验证集的划分之后,模型也不是一次就OK了。我们要根据交叉验证集的误差来进行调参。调参后的结果,才是我们模型选择的依仗。

要注意的是,在利用训练集选定了模型并调参完毕后,我们应该用训练集+交叉验证集的全量数据再训练一次模型。

3. 性能度量

除了如何划分集合、如何调参外,还有一点需要讨论——我们以什么样的指标来度量模型的表现?

错误率与精度

查准率、查全率与F1

比如,在推荐系统中,我通过模型,预测出了10种商品可能是客户感兴趣的。我希望这10个商品中,客户实际感兴趣的越多越好。也就是x/10越高越好。这个x/10就是查准率。可以直面理解为,我预测为某个标签的数据,实际为这个标签的准确度;

预测”客户感兴趣“且正确/预测”客户感兴趣“的所有商品

这时候的查全率,则是:
预测”客户感兴趣“且正确的商品/实际客户感兴趣的商品。 我对实际客户感兴趣的商品不是很care,我关系我推送给客户的推荐名单中,是不是正确的多。因为推荐的不对,客户会很不高兴;

逃犯系统:
我的目的肯定不是精准地去预测某一个人的嫌疑。而是,真实情况中有嫌疑的,我都要挑出来。
那么这时候我并不关心我的查准率(即我预测了10个人中是逃犯的比例越高越好)。而是关心查全率: 实际中的嫌疑犯有多少被我正确地挑出来了?

ROC与AUC

代价敏感错误率与代价曲线

4. 比较检验

假设检验

交叉验证t检验

McNemar检验

Friedman检验与Nemenyi后续检验

5. 偏差与方差

6. 阅读材料

猜你喜欢

转载自blog.csdn.net/weixin_40930415/article/details/82224782