【Datawhale7月打卡】李宏毅机器学习Task3笔记
P5:误差从哪里来
Error的来源
从上节课测试集数据来看,Average和Error 随着模型复杂增加呈指数上升趋势。更复杂的模型并不能给测试集带来更好的效果,而这些 Error 的主要有两个来源,分别是 bias 和 variance 。
注:
Error = Bias + Variance
Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。
在一个实际系统中,Bias与Variance往往是不能兼得的。如果要降低模型的Bias,就一定程度上会提高模型的Variance,反之亦然。
估测
假设真实的模型为 f^,通过收集 Pokemon精灵 的数据,然后通过 step1~step3 训练得到我们的理想模型f*,f*其实是 f^的一个预估。

这个过程就像打靶, 就是我们的靶心, 就是我们投掷的结果。如上图所示, 与 之间蓝色部分的差距就是偏差和方差导致的。
方差与偏差与欠、过拟合的关系
一般来说,简单的模型会有一个较大的偏差和较小的方差,复杂的模型偏差较小方差较大。这也引申出欠拟合和过拟合的概念。
- 欠拟合:模型不能适配训练样本,有一个很大的偏差(模型不适配训练样本太简单——偏差大——欠拟合)
- 过拟合:模型很好适配训练样本,但在测试集上表现很糟,有一个很大的方差(模型过度适配训练样本太复杂——方差大——过拟合。
在一个实际系统中,Bias与Variance往往是不能兼得的。如果要降低模型的Bias,就一定程度上会提高模型的Variance,反之亦然,如下图所示:
分析

如果模型没有很好的训练训练集,就是偏差过大,也就是欠拟合 如果模型很好的训练训练集,即再训练集上得到很小的错误,但在测试集上得到大的错误,这意味着模型可能是方差比较大,就是过拟合。 对于欠拟合和过拟合,是用不同的方式来处理的
偏差大-欠拟合
此时应该重新设计模型。因为之前的函数集里面可能根本没有包含。可以:
将更多的函数加进去,比如考虑高度重量,或者HP值等等。 或者考虑更多次幂、更复杂的模型。 如果此时强行再收集更多的data去训练,这是没有什么帮助的,因为设计的函数集本身就不好,再找更多的训练集也不会更好。
方差大-过拟合
简单粗暴的方法:更多的数据
模型选择
在偏差和方差之间就需要一个权衡 想选择的模型,可以平衡偏差和方差产生的错误,使得总错误最小
交叉验证

图中public的测试集是已有的,private是没有的,不知道的。交叉验证 就是将训练集再分为两部分,一部分作为训练集,一部分作为验证集。用训练集训练模型,然后再验证集上比较,确实出最好的模型之后(比如模型3),再用全部的训练集训练模型3,然后再用public的测试集进行测试,此时一般得到的错误都是大一些的。不过此时会比较想再回去调一下参数,调整模型,让在public的测试集上更好,但不太推荐这样。(心里难受啊,大学数模的时候就回去调,来回痛苦折腾)
上述方法可能会担心将训练集拆分的时候分的效果比较差,可以用下面的方法。
N折交叉验证
将训练集分成N份,比如分成3份。

在三份中训练结果Average错误是模型1最好,再用全部训练集训练模型1。
6-梯度下降
什么是梯度下降法?
梯度下降方法基于以下的观察:如果实值函数
在点
处可微且有定义,那么函数
在
点沿着梯度相反的方向
下降最多。
在回归问题的第三步中,需要解决下面的最优化问题:
- :lossfunction(损失函数)
- :parameters(参数)

然后分别计算初始点处,两个参数对 的偏微分,然后 减掉 乘上偏微分的值,得到一组新的参数。同理反复进行这样的计算。黄色部分为简洁的写法, 即为梯度。

上图举例将梯度下降法的计算过程进行可视化。
Tip1:调整学习速率
Tip2:随机梯度下降法
Tip3:特征缩放
通过以上三个步骤,即可对梯度下降有一个初步认识。
- 点赞
- 收藏
- 关注作者
评论(0)