上一篇我们已经找到了一个Model,那么这个Model是不是最优的呢?
模型回顾

将Model应用到训练集上的Loss是0.48K,运用到测试集上的Loss是0.58K,那么,是不是还可以做得更好呢?
通过观察下图实际数据和预测数据的对比图:

我们发现预测数据总是稍微领先于实际数据,这也很好解释,模型显示,预测数据几乎就是用前一天的实际数据加上0.1K。
另外,我们发现数据似乎以一周为一个周期:每逢周五周六,观看人数处于最低值,每逢周一周二,观看人数处于最高值。
很自然的,我们考虑将前7天,前28天,前56天考虑进来,通过上面的步骤,可以发现训练集上的Loss逐渐变小,测试集上的Loss虽然变小了,但是不是特别明显。

模型调优
通过上面的过程,我们发现,线性模型似乎走到了它的极限,这说明我们的Model存在Model bias, 需要调整模型的形式来进行进一步的优化。

通过观察上图的红色曲线,很容易发现,我们用一条曲线不能得到良好的拟合,但是,可以用下面一系列的反Z型曲线的组合来表示由分段曲线组成的红色曲线。

那么,对于任何一条曲线,我们都可以在其上取若干点,用折线来近似估计它们。只要点取得足够密,那么折线将会越接近原来的曲线。

那么,对于单条的反Z型曲线,我们可以用sigmoid函数来进行拟合

sigmoid函数的特性如下:

- 不同的w会改变曲线的坡度,w越大坡度越陡峭
- 不同的b会改变曲线在x方向的位移,b越大曲线越往向右移
- 不同的c会改变曲线在y方向的高度,c越大曲线越高
那么,根据上面的分析,对于最初我们实际数据画出的曲线,我们可以采用若干个sigmoid函数来进行拟合:

这样,最初的Model: y=b+wx就可以进化为带sigmoid的形式,同样的,最初的多个feature的Model也可以进化为类似的带sigmoid的形式。这里多个feature的一般形式到sigmoid的形式的转变不是那么直观:需要将若干个x的累加当作一个整体看待,如有更好的理解方法吗,请评论:)

举例
如果feature个数为3, sigmoid函数的个数为3,那么,蓝色框内就可以改写为如下:

写成矩阵的形式:

进一步的,将r进行sigmoid函数求值处理:

进一步的,再将b和c一块考虑,可以得到最后的形式:

本文探讨了一个初步模型的表现,并对其进行调优。通过对模型偏差的分析,引入了sigmoid函数以改进线性模型,同时讨论了如何使用ReLU函数提升模型性能。此外,还介绍了如何通过增加Layer进一步优化模型。
最低0.47元/天 解锁文章
8万+

被折叠的 条评论
为什么被折叠?



