携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第28天,点击查看活动详情
说明
本系列博客将记录自己学习的课程:NLP实战高手课,链接为:time.geekbang.org/course/intr… 本篇为16节的课程笔记,主要介绍随机性对模型预测的影响。
引例
假设我们要做一个使用身高预测体重的模型,现在我们的数据分布如下图所示,横轴表示身高,纵轴表示体重。我们可能拟合得到的曲线是下面这样的。
曲线只是在最大限度保证训练数据全部“精准”预测,而造成曲线波动很大。假设数据很多,那么拟合出来的结果将如下图所示:
实际上,体重随身高的变化趋势不可能是这么剧烈的。这里,模型“过拟合”到了这些数据上。当进行测试时,测试结果将会惨不忍睹。
可以看到,测试数据样例(图中的三个数据点)全部离预测很远。
随机性是如何改变数据拟合本质的
数据的拟合有两种随机性:
- 噪声->无法消除;
- 函数拟合的随机性->可以提升。
对于第一点,随机性指的是因为我们不能知道有影响的全部变量,所以我们只能假设我们观测到的是一个有噪声的系统。这个将会是很难客服的一点。
对于第二点,上面例子在多个数据点拟合时的表现说明了拟合函数有着很大的过拟合风险,但这个问题可以通过一些模型调优和算法设计来缓解。
随机性对算法工程师意味着什么
上面的讨论中,我们看到:过拟合和欠拟合是对神经网络设计和训练很重要的一点,但不是全部;能否解决问题在很大程度上取决于数据是否有足够信息,因此有必要去引入结构化数据。
同时,设计算法除了考虑数学之外,还需要考虑实际数据的情况
最后,一个最需要注意的点在于训练集和测试集一定要保证分布相同,不能差别过大。
总结
本文主要介绍了数据的分布随机性对最终模型的影响。对于信息不足引起的随机性,我们很难控制(比如就让你用身高预测体重,不给其他信息);但对于函数拟合所带来的随机性,我们则可以通过一些方法设计来尽量避免。