Note2:机器学习基本攻略(Machine Learning by Hung-yi Lee)

发布于:2025-06-28 ⋅ 阅读:(22) ⋅ 点赞:(0)

目录

基本思路 

1.训练资料上loss很大 

1.1 model bias

1.2 optimazation(优化不够好)

1.3如何确定是 model bias还是optimazation

解决方法

2.训练资料上loss很小

2.1 Overfitting

解决方案

1.使用更多训练资料

2.限制模型

2.2 Mismatch

3.选出最优模型

常见误区

测试集划分为public和private原因 

解决方法:Cross-Validation(交叉验证)

N-fold Cross Validation 


基本思路 

最终结果不满意时(比如在Kaggle上得分低),按照以下思路改进

首先检查训练资料上的loss

1.训练资料上loss很大 

1.1 model bias

可能是模型偏差导致的,解决方案:重新设计模型,增大模型的弹性,如增加feature

1.2 optimazation(优化不够好)

但不是所有情况都是model bias的问题。参数优化不够好也会引起问题。

1.3如何确定是 model bias还是optimazation

 注意:上图所示不是Overfitting(指训练资料上loss小,而测试资料上loss大)!显然56层的模型弹性比20层的更大,所以是优化的问题。

解决方法

2.训练资料上loss很小

进一步检查测试资料上的loss,如果很小,恭喜你,已经训练成功了。下面是针对测试资料上loss很大的情况

2.1 Overfitting

模型弹性太大,可能出现这个问题,模型过度“记忆”了训练数据的细节(包括噪声和异常值),而非学习其内在规律。

解决方案

1.使用更多训练资料

此方法往往是最有效的。但有时不能找到更多的资料,此时可使用Data Augmentation(数据增强)利用有限样本生成更多资料,比如左右翻转图片、裁剪放大图片,但数据需符合真实场景:不分图片不能翻转

2.限制模型

 使用更少的参数,使用弹性更小模型,如CNN(卷积神经网络)等等。

但是过犹不及,如果限制太大,又会回到model bias的问题。 

2.2 Mismatch

训练资料和测试资料的数据有不同的分布,增加训练数据也无济于事。

3.选出最优模型

常见误区

选取public得分最高的作为结果上传

 

测试集划分为public和private原因 

即使是一个很废物的模型,只要通过一直调参,不断上传,也可能在得到一个很好的结果。将测试集划分为public和private,只有public分数展示给提交者,最终以private的分数为准,可以避免上述情况。

 这是因为很多testing set是全部公开的,没有划分public和private,所以通过不断调参,可以得到好的结果。但现实中往往机器并不能取得超过人类的结果。

解决方法:Cross-Validation(交叉验证)

从training set划出Validation set(验证集),后者不参与模型的调参,用模型在后者上的结果表示训练结果。最后选择模型时,选validation set上表现最好的,尽量不要在意public上的结果,如果又根据public上的结果反复调整,可能出现模型fit在public testing set这种上述提及的情况。

N-fold Cross Validation 

如果划分的验证集数据不好,会影响最终结果,k-Fold Cross-Validation(k折交叉验证)可以解决此问题:每次用不同的数据作为验证集,直至覆盖所有数据,然后取平均值作为结果。


网站公告

今日签到

点亮在社区的每一天
去签到