如何訓練模型?(1)——最小二乘法

在一個機器學習問題中,當我們決定用一個模型(比如線性回歸模型)去擬合數據之後,下一步就是要去訓練這個模型,所謂的訓練模型,就是設定合適的參數,使得模型更好的擬合訓練集的數據。如今使用sklearn、tensorflow等工具可以方便的訓練模型,但是在使用它們來訓練模型的時候,就像是在進行黑箱操作,我們給一個參數,它去運行,給出結果,我們來看它表現的好壞再決定是否繼續調整參數。更好的理解這一訓練過程究竟是如何實現的,有利於我們尋找合適的訓練方法和參數。

在這篇文章中,我們主要討論最小二乘法去訓練線性回歸模型。即通過最小二乘法推倒出的閉式解 hat{	heta}=left( oldsymbol{X}^Tcdot oldsymbol{X} 
ight) ^{-1}cdot oldsymbol{X}^Tcdot oldsymbol{y} 去擬合數據。最後給出了這種方法的優勢和局限性。

1. 線性回歸模型

線性模型簡單說就是計算各個特徵的加權和再加上一個常數(叫做偏置項,bias term)來作預測,其等式可以表示為:

hat{y}= 	heta _0+	heta _1x_1+	heta _2x_2+cdot cdot cdot +	heta _nx_n

其中  hat{y} 代表預測值,  n 是特徵數目, x_i 代表第  i 個特徵的值,  	heta _j 表示第  j 個模型參數。將其寫成向量形式為:

hat{y}=h_{	heta}left( oldsymbol{x} 
ight) =oldsymbol{	heta }^Tcdot oldsymbol{x}

為了衡量模型性能的好壞,這裡選擇常用的均方根誤差(RMSE)來計算,其表達式為:

MSEleft( oldsymbol{X,}h_{	heta} 
ight) =frac{1}{m}sum_{i=1}^m{left( oldsymbol{	heta }^Tcdot oldsymbol{x}^{left( i 
ight)}-y^{left( i 
ight)} 
ight) ^2}

通過另其一階導數等於零,我們可以求得其取最小值時的解

 hat{	heta}=left( oldsymbol{X}^Tcdot oldsymbol{X} 
ight) ^{-1}cdot oldsymbol{X}^Tcdot oldsymbol{y}

這個結果就是我們所說的閉式解。

如圖,這裡通過運行程序得到了  	heta _0  	heta _1 分別為3.91439191和3.1234778,與設定的4和3比較接近,當給出新的  x_1 ,我們就利用計算得到的  	heta 來進行預測。

從上面的例子中我們可以看出,使用最小二乘法得到的閉式解來計算權值是比較簡潔的,但是這種方法也存在一些局限性,主要表現在以下幾個方面:

① 最小二乘法需要計算 的逆矩陣,有可能它的逆矩陣不存在,這樣就沒有辦法直接用最小二乘法了(但可以使用我們後面將要談到的梯度下降法)。當然,我們可以通過對樣本數據進行整理,去掉冗餘特徵。讓 的行列式不為0,然後繼續使用最小二乘法。

② 當樣本特徵n非常的大的時候,計算 的逆矩陣是一個非常耗時的工作,甚至不可行。此時以梯度下降為代表的迭代法仍然可以使用。那這個n到底多大就不適合最小二乘法呢?如果你沒有很多的分散式大數據計算資源,建議超過10000個特徵就用迭代法吧。或者通過主成分分析降低特徵的維度後再用最小二乘法。

③ 如果擬合函數不是線性的,這時無法使用最小二乘法,需要通過一些技巧轉化為線性才能使用,此時梯度下降仍然可以用。

④ 講一些特殊情況。當樣本量m很少,小於特徵數n的時候,這時擬合方程是欠定的,常用的優化方法都無法去擬合數據。當樣本量m等於特徵說n的時候,用方程組求解就可以了。當m大於n時,擬合方程是超定的,也就是我們常用與最小二乘法的場景了。

在下一篇文章中,將分析訓練模型的另一種方法——梯度下降法,它又可以分為批量梯度下降法(BGD),隨機梯度下降法(SGD)和mini批量梯度下降法(MBGD)。

參考:

[1]Hands On Machine Learning with Scikit Learn and TensorFlow

[2]最小二乘法


推薦閱讀:

1/700 法國海軍莫嘎多爾級驅逐艦模型製作筆記
高達屹立於大地之上!中篇:鋼普拉推薦(HG & RG)
代工高達模型價格通常是怎麼算的?
變形金剛玩具月旦評——2017年10月篇
如何評價戰棋 warmachine&horde?

TAG:機器學習 | 最小二乘法 | 模型 |