Hello,各位小伙伴们。我们今天来聊聊有关于深度学习第二篇——线性模型的具体内容分析。在上篇笔记中,我们简单介绍了一下机器学习的有关内容,我在文末提到了有关于线性模型的概念,今天,我将具体介绍一下线性模型这一讲的内容。
上一篇笔记中,我用后台的数据(2017-2021年的数据)拟合出了一个数据模型。我们通过对比和分析可以发现,机器拟合出的模型子啊已知数据上的误差L是480;在未知数据上的误差L’是580。于是我们得出一个结论,机器模型在训练数据上的误差是比较小的,在没训练过的数据上误差是比较大的。
现在我们来看一下真实的数据和机器拟合的数据之间的差别,我们用红线代表真实观看数据,用蓝色代表预测观看数据,可以得到以下的数据图:
相信大家可以发现,蓝色的线与红色的线十分相近,几乎就是红色的线往后平移一天。这其实是由于我们的预测模型是 y=0.97x+100, 而x的单位是1000次导致的。我们把x的1000拿出来,让x=1000*b,那前一天的数据就是1000b,而隔天的数据则是0.97*(b+1)*1000,所以看起来就像平移了一天一样。
我们再仔细观察这幅图,我们可以发现这个图是周期性的,每隔7天就会有两天的观看数据特别低,分别是周五和周六。我们之前的模型是以每天的观看数据进行预测的,无法预测到更后面的数据,所以我们需要对现有的模型进行修改。
根据它的周期性,我们将它的模型调整为:
这里的 j 指的是我们的特征值,也就是第几天,wj 指的是第 j 天的不同权重,xj指的是第 j天的观看数量。现在,我们再次进行预测,我们发现前7天模型进行预测的损失L’’是380,而只考虑一天进行预测的损失L是480,。显然,我们调整过的模型更为准确。
我们再次用28天和56天的数据进行调试,28天模型在训练数据上的损失是330,在未训练数据上的损失是460;56天模型在训练数据上的损失是320,在未训练数据上的损失是460。看来已经到极限了。
分段线性曲线
在线性模型中,y=wx+b,w是权重,b是偏置。我们可以用线性模型画出许多蓝色的线,但却无法表达出红色的线,那现在我们应该怎么办呢?
为了让函数不用分段,可以用任意x表示,在这里,我们选择用多个相近的蓝色线条进行组合,得到红色线条,如下图:
我们可以用0+1+2+3得到完整的红线。所以红线,即分段线性曲线,可以认为是一个常数+一堆蓝色函数组合而成的模型。分段线性曲线越复杂,转折点越多,所需要的蓝色曲线也越多。
肯能有小伙伴会问,如果不是线性曲线,是曲线该怎么办?同理,我们可以在曲线上取一些点,将它们连起来,得到新的分段线性曲线;这些点取的越接近,函数就越逼近原先的曲线。我们继续用一个常数和若干不同的蓝线来表示这个函数就可以了。
好了,现在让我们来一起认识一下这些蓝色的线,它们叫做Hard Sigmoid。它们的解析式不容易表达,但没关系我们可以用Sigmoid函数表达式来逼近它:
Sigmoid的函数表达式为: