1. 程式人生 > >最小二乘法的數學

最小二乘法的數學

網上看到的最小二乘法都是互相抄來抄去,一錯一大片,連標點符號都錯的一樣,其實整個推導過程並不是很難的一件事,只需要簡單的一步步按照最小化損失函式就可以得到,對於新手來說這些答案誤導性比較強。最終我們需要得到的線性方程為 y^=β0+β1x^ \hat{y} = \beta_0 + \beta_1 \hat{x} 損失函式採用歐式距離定義, L=i=1n(yiy^i)2 \mathcal{L} = \sum_{i =1}^n (y_i -\hat{y}_i)^2 於是問題變為最優化問題 argminβ0,β1L \mathop{\arg\min}_{\beta_0,\beta_1} \quad \mathcal{L}

於是對β0\beta_0,β1\beta_1求導即為 Lβ0=i=1n(yiβ0β1xi) \frac{\partial \mathcal{L}}{\partial \beta_0} = \sum_{i=1}^n (y_i-\beta_0 -\beta_1x_i) β1\beta_1求導即為 Lβ1=i=1n(y1β0β1xi)(xi) \frac{\partial \mathcal{L}}{\partial \beta_1} = \sum_{i=1}^n(y_1 - \beta_0 - \beta_1 x_i)(-x_i)
β0\beta_0求導式子得到 β0=1ni=1nyi1ni=1nβ1xi=yβ1x \beta_0 =\frac{1}{n} \sum_{i=1}^ny_i - \frac{1}{n} \sum_{i=1}^n \beta_1 x_i =\overline{y} -\beta_1\overline{x} 代入第二部分式子, i=1nxiyiβ1i=1nxi2nβ0x=0 \sum_{i=1}^n x_iy_i -\beta_1\sum_{i=1}^nx_i^2-n\beta_0\overline{x}=0
得到, β1(i=1nxi2n(x)2)=i=1nxiyinxy \beta_1(\sum_{i=1}^nx_i^2-n(\overline{x})^2)=\sum_{i=1}^nx_iy_i-n\overline{x}*\overline{y} 則得到 β1=i=1nxiyinxyi=1nxi2n(x)2 \beta_1 =\frac{\sum_{i=1}^nx_iy_i-n\overline{x}*\overline{y}}{\sum_{i=1}^nx_i^2-n(\overline{x})^2} 或者寫為 β1=ni=1nxiyii=1nxii=1nyini=1nxi2(i=1nx)2 \beta_1 =\frac{n\sum_{i=1}^nx_iy_i-\sum_{i=1}^nx_i\sum_{i=1}^ny_i}{n\sum_{i=1}^nx_i^2-(\sum_{i=1}^n{x})^2} 代入到β0\beta_0則有, β0=yβ1x=i=1nxi2i=1nyii=1nxii=1nxiyini=1nxi2(i=1nxi)2 \beta_0 =\overline{y} - \beta_1\overline{x}=\frac{\sum_{i=1}^nx_i^2\sum_{i=1}^ny_i-\sum_{i=1}^nx_i\sum_{i=1}^nx_iy_i}{n\sum_{i=1}^nx_i^2 - (\sum_{i=1}^nx_i)^2} 這兩個式子即為最小二乘法得到的求解結果,求得β0\beta_0β1\beta_1之後,即可得到迴歸方程: