🍉「西瓜书」一元线性回归公式推导
本文对应西瓜书上的第53,54页,第三章的线性回归中从3.3到3.8的公式只考虑了一个元素的情况,在这里我就称它为“一元线性回归”。
即数据集 $ D={(x_{i},y_{i})}_{i=1}^{m}$
这个数据集$D$有$m$组数据,$(x_{1}, y_{1}),(x_{2},y_{2}),(x_{3},y_{3})…(x_{m},y_{m})$ 。$x_{i}$是自变量,也就是我们的输入值。$y_{i}$是我们的实际结果。
我们要找一个函数去模拟$y_{i}$,既然是线性回归而且只有一个未知数。那么自然就想到了用一元一次方程$y=kx+b$去模拟实际值,于是就有了$f(x_{i}) = wx_{i} + b $,接下就用这个函数去预测$y_{i}$的值。
函数预测的结果与实际的结果肯定是不可能完全相等的,但是又不能相差太大不然就没有意义了。所以呢,预测值(函数值)可以看作是近似实际值的。
\[f(x_{i}) = wx_{i} + b\\ \simeq y_{i}\]现在我们要算出未知数$w,b$ 就可以得到具体的$f(x_{i})$函数了,所以本文最核心的思想就在这里了。书上说的是均方差最小化,又叫平方损失,这个方法又称“最小二乘法”。说得那么复杂实际上就是把预测值和实际值作差再进行平方得到一个结果,结果值越小那么说明预测的越准确,这个就是我们要找的预测函数了嘛。根据上面的定义我们可以得到,$loss = (f(x_{i})-y_{i})^{2}$,在数据集$D$中我们有$m$组元素,把他们全部加起来,就得到一个新的等式了。
\[total~loss = \sum_{i=1}^{m} (f(x_{i})-y_{i})^{2}\]接下来我们不断地调整未知数$w,b$使得等式(total loss)得到一个最小值,也就引入了arg min记号。大概的意思是,arg表示变元也就是说$w,b$是可变的,min取等式的最小值。$w^{\star},b^{\star}$表示能使得等式取得最小值的解。如果写成这个样子会不会比较好理解,$(w^{\star},b^{\star})=\arg\min_{(w,b)}~total~loss$
\[\begin{align} (w^{\star},b^{\star}) &= \arg\min_{(w, b)}\sum_{i=1}^{m}(~f(x_{i}) - y_{i})^{2}\\ &=\arg\min_{(w, b)} \sum_{i=1}^{m}(y_{i} - wx_{i} - b)^{2}. \end{align}\]等式我们有了,最终的目的就是要把 $w^{\star},b^{\star}$ 算出来。我们再来回顾一下这个等式,$loss = (f(x_{i})-y_{i})^{2}$ ,现在我们进行换元,令 $x = f(x_{i})-y_{i},y = loss$ ,然后我们得到一个一元二次函数 $y = x^2$ ,它的图像是U型的抛物线。导数为零的点处取得最小值是吧。(我们不考虑这么复杂就把这个函数看成是可微的)现在我们要对$y$求偏导,因为我们的$x$是包含两个未知数。求偏导也不难就是把另外的未知数当作常数,然后把要求偏导的参数按正常的求导就行了。如果想深入了解偏导的同学可以先去看下同济版高等数学下册多元微分学基础的内容。
使用链式求导法则,先$y$对$x$进行求导,再$x$对未知数$w$求导,把未知数$b$当作常数处理即可。
\[\begin{align} y'_{w} &= y'_{x}\cdot x_{w}^{'}\\ &= (x^{2})^{'} \cdot x_{w}^{'}\\ &=2x\cdot x_{w}^{'}\\ &=2(f(x_{i})-y_{i}) \cdot (f(x_{i}-y_{i}))_{w}^{'}\\ &=2(wx_{i}+b-y_{i})\cdot(wx_{i}+b-y_{i})_{w}^{'}\\ &=2(wx_{i}+b-y_{i})\cdot x_{i}\\ &=2[wx_{i}^{2}+(b-y_{i})\cdot x_{i}] \end{align}\]另外 $y_{w}^{‘}$ 可以写成 $\frac{\partial y}{\partial w} $ ,所以上式又可以写成
\[\frac{\partial y}{\partial w} = \frac{\partial y}{\partial x}\cdot\frac{\partial x}{\partial w}\]经过整理就可以得到书上的3.5式子啦!
\[\begin{align} \frac{\partial y}{\partial w} &=2[wx_{i}^{2}+(b-y_{i})\cdot x_{i}] \end{align}\]同理,对$b$求偏导,把$w$当作常数处理:
\[\begin{align} y'_{b} &= y'_{x}\cdot x_{b}^{'}\\ &= (x^{2})^{'} \cdot x_{b}^{'}\\ &= 2x\cdot x_{b}^{'}\\ &=2(f(x_{i})-y_{i})\cdot (f(x_{i})-y_{i})_{b}^{'}\\ &=2(wx_{i}+b-y_{i})\cdot (wx_{i}+b-y_{i})_{b}^{'}\\ &=2(wx_{i}+b-y_{i}) \end{align}\]