在机器学习过程中,我们有时候需要建构一个模型来预测所需要的数据,此时就需要我们去设计一个合适的函数,这就是我们接下来要讲的线性模型
1.线性模型
在一开始,我们可能对问题并不了解,此时可以先任意写一个线性函数:
y=wx+b
之后,我们需要观察数据是否具有一定的循环周期,假设我们发现数据现在有一个循环周期是七天,那我们就可以将一整个循环周期内的数据视为一个整体,由此可以得到一个新的公式:
在上述公式中,每一天的数据分别对应不同的x,将x乘以不同的权重w并求和,加上偏置,就可以得到上述公式的形式了,这也就是我们常说的线性模型。当然,我们求和的时候也可以将多个周期的数据设为一个整体,具体还是取决于我们遇到的问题类型。
2.分段线性曲线
在实际问题当中,上面所提到的公式往往不能满足我们的实际需要,这是因为y与x之间的关系往往是复杂的,在这种情况下,我们可以通过将多个Hard Sigmoid函数与常数相加得到一个分段线性曲线,如图所示:
(图来自DataWhale相应文本截选)
但有的时候,我们所期望的图线往往可能是一条光滑曲线,此时又该怎么做呢?我们可以将多个分段性曲线相加,就可以得到连续曲线,理论上讲,只要选取的分段曲线足够多,就可以得到光滑的曲线若是x与y的关系相当复杂,对应的函数公式的形式为:
此时,如果 x1 的值,趋近于无穷大的时候,e−(b+wx1) 这一项就会消失,当 x1 非常大的时候,这一条就会收敛在高度为 c 的地方。如果 x1 负的非常大的时候,分母的地方就会非常大,y的值就会趋近于 0。所以可以用这样子的一个函数逼近光滑的曲线函数,并且,如果我们尝试改变w,则对应图像的斜率发生改变,如果改变b,对应图像发生左右偏移,若是改变c,对应图像的高度发生改变。这样我们的曲线就具有了一定的灵活性。
这就是为什么我们,可以用 Sigmoid 函数逼近 Hard Sigmoid 函数。
1.3模型变形
为了使我们的模型更具有灵活性,我们会将函数写作如下形式:
HardSigmoid 可以看作是两个修正线性单元(Rectified Linear Unit,ReLU)的加总,而ReLu函数会出现斜坡,即转折点,在转折点处的位置往往是从0和b+wx中选取较大者输出。
此外,需要注意的是,每2个ReLu函数可以合成一个HardSigmoid 函数,因此表示一个 Hard 的 Sigmoid 不是只有一种做法。在机器学习里面,Sigmoid 或 ReLU 称为激活函数(activation function)。
此外,在实际场景当中,我们所创建的模型在训练数据和测试数据上的结果可能是不一致的,这种情况称为过拟合。出现这种情况的原因可能是因为数据不足,训练不充分,或者是特征选择不恰当,选取的特征无关导致影响了训练过程,也可能因为数据复杂度太高,导致模型过于敏感。常见的解决方法有:将多个模型组合起来进行集成学习,或者减少模型复杂度来降低过拟合风险,或者尝试交叉验证,将数据分为测试集和验证集等