機器學習演算法梳理(一):線性迴歸
機器學習演算法梳理(一):線性迴歸
一、基本概念
-
監督學習與無監督學習
監督學習(supervised learning):從有標記的訓練資料中推匯出預測函式。有標記的訓練資料是指每個訓練例項都包括輸入和期望的輸出。即給定資料,預測標籤。分類和迴歸是監督學習的兩大重要問題。
非監督學習(unsupervised learning):從無標記的訓練資料中推斷結論。最典型的無監督學習就是聚類分析,它可以在探索性資料分析階段用於發現隱藏的模式或者對資料進行分組。即給定資料,尋找隱藏的結構。
-
泛化能力
監督學習的目的是找到一個輸入輸出對映(模型),使得這個模型不僅對訓練資料有很好的擬合能力,對於未知資料,它也有很好的預測能力。這種對未知資料的預測能力就是泛化能力(generalization ability) -
過擬合和欠擬合
在模型的擬閤中,會發生過擬合(overfitting)和欠擬合(underfitting)的情況。
如果一味追求提高對訓練資料的預測能力,所選模型的複雜度則往往會比真模型要高,產生過擬合的現象,以致於對訓練資料預測得很好,但對未知資料預測很差。過擬合的解決方法:
1、增大訓練資料量
2、增加正則化項,正則化項一般是模型複雜度的單調遞增函式,模型越複雜,正則化值就越大
3、dropout方法,在神經網路中較常用欠擬合則是模型沒有很好地捕捉到資料特徵,不能較好的擬合數據。
欠擬合的解讀辦法
1、新增其他特徵項
2、新增多項式特徵
3、減少正則化引數模型的Error = Bias(偏差) + Variance(方差 ),Error反映的是整個模型的準確度,Bias反映的是模型在樣本上的輸出與真實值之間的誤差,即模型本身的精準度,Variance反映的是模型每一次輸出結果與模型輸出期望之間的誤差,即模型的穩定性。
-
交叉驗證
在進行模型選擇時,一般隨機將原始資料(dataset)進行分組,一般分為三部分,訓練集(training set),驗證集(validation set)和測試集(test set),訓練集用來訓練模型,驗證集用於魔心的選擇,而測試集用於最終對學習方法的評估。
但是,如果樣本資料不充足,則可以採用交叉驗證方法,基本想法是重複使用資料;把給定的資料進行切分,再組合為訓練集和測試集,在此基礎上反覆訓練,測試以及模型選擇。1) 簡單交叉驗證(Hold-Out Method)
將原始資料分為兩組,一組是訓練集,一組是驗證集,利用訓練集來訓練分類器,然後利用驗證集驗證模型。進行多次劃分,用均值來表示效能。
優點:簡單,只需要將原始資料隨機的分成兩組就行了。
缺點:
(1)沒有達到交叉的效果。
(2)隨機分組,驗證集分類的準確率與原始資料分組的關係很大。
(3)有些資料可能從未做過訓練或測試資料;而有些資料不止一次選為訓練或測試資料。2) K折交叉驗證(K-fold Cross Validation)
將原始資料均分成K組,每個子集資料分別做一次驗證集,其餘的K-1組子集資料作為訓練集,這樣會得到K個模型,用這K個模型最終驗證集的分類準確率的平均數作為此K-CV分類器下的效能指標。K的取值一般是大於等於2,只有在原始資料集合資料量小的時候才會取2
優點:有效的避免過擬合和欠擬合3)留一交叉驗證(Leave-one-out Cross Validation)
K折交叉驗證的特殊情況是K=N,N為給定資料集的容量,這時稱為留一交叉驗證,往往在資料缺乏的情況下使用。
優點:
(1)每輪中幾乎所有的樣本都可以用於訓練模型,因此能夠使訓練的模型最接近樣本真實分佈,評估的結果很可靠。
(2)實驗的過程中沒有隨機因素。
缺點: 如果樣本量很大,那麼需要建立的模型的數量也很大,計算成本高。
二、線性迴歸原理
在統計學中,線性迴歸(Linear Regression)是利用稱為線性迴歸方程的最小平方函式對一個或多個自變數和因變數之間關係進行建模的一種迴歸分析。這種函式是一個或多個稱為迴歸係數的模型引數的線性組合(自變數都是一次方)。只有一個自變數的情況稱為簡單迴歸,大於一個自變數情況的叫做多元迴歸。簡而言之,線性迴歸的目標是用預測結果儘可能地擬合目標label。
定義線性迴歸函式(linear regression)為:
用 來預測 ,此時 為輸入資料的特徵矩陣, 為對應資料的label
三、線性迴歸的損失函式
線性迴歸模型使用的是一種稱為平方損失(又稱為 L2 損失)的損失函式
線性迴歸優化的目標——圖中線段距離(平方)的平均值,也就是最小化到分割面的距離和。
損失函式一般定義為
四、優化方法
定義了損失函式以後,求解損失函式最小值的過程,我們叫優化。常用的演算法如下:
梯度下降法 Gradient Descent
梯度下降演算法是一種求區域性最優解的方法,梯度下降法基於的思想為:要找到某函式的極小值,則沿著該函式的梯度方向尋找。若函式為凸函式且約束為凸集,則找到的極小值點則為最小值點。
梯度下降基本演算法為:
- 首先用隨機值填充 (這被稱為隨機初始化),或者讓 為一個全零向量
- 逐漸改進 的值,每次步進一步(步長α),每一步都試圖降低代價函式,直到演算法收斂到最小。
梯度減少的方向,則是用損失函式
對
求偏導:
只有一個訓練資料時:
因為梯度下降法通常分為三種形式,整體批次梯度下降法,隨機梯度下降法和批量梯度下降法.
- 批量梯度下降法(Batch Gradient Descent)
批量梯度下降法,是梯度下降法最常用的形式,具體做法也就是在更新引數時使用所有的樣本來進行更新。 - 隨機梯度下降法(Stochastic Gradient Descent)
隨機梯度下降法,其實和批量梯度下降法原理類似,區別在與求梯度時沒有用所有的樣本的資料,而是僅僅選取一個樣本來求梯度。
隨機梯度下降法,和批量梯度下降法是兩個極端,一個採用所有資料來梯度下降,一個用一個樣本來梯度下降。自然各自的優缺點都非常突出。對於訓練速度來說,隨機梯度下降法由於每次僅僅採用一個樣本來迭代,訓練速度很快,而批量梯度下降法在樣本量很大的時候,訓練速度不能讓人滿意。對於準確度來說,隨機梯度下降法用於僅僅用一個樣本決定梯度方向,導致解很有可能不是最優。對於收斂速度來說,由於隨機梯度下降法一次迭代一個樣本,導致迭代方向變化很大,不能很快的收斂到區域性最優解。 - 小批量梯度下降法(Mini-batch Gradient Descent)
小批量梯度下降法是批量梯度下降法和隨機梯度下降法的折衷,也就是對於 m 個樣本,我們採用 x 個樣子來迭代, 1<x<m 。一般可以取 x=16,32,64… ,當然根據樣本的資料,可以調整這個 x 的值。
正規方程 Normal Equations
求解線性迴歸最常用的兩個方法是:梯度下降法和最小二乘法,由於最小二乘法是基於正規方程的,所以也被稱為正規方程法。特徵方程得到的是解析解,無需迭代,也沒有設定學習速率的繁瑣,需要特徵歸一化,但是求解正規方程需要求矩陣的逆,然而不是所有的矩陣都可逆,而且有些可逆矩陣的求逆極其耗費時間,所以特徵方程法看似簡單,其實使用場景並不多。只有當特徵值比較小的時候,可以考慮使用特徵方程法。
記住公式:
牛頓法
從幾何上說,牛頓法就是用一個二次曲面去擬合你當前所處位置的局部曲面,而梯度下降法是用一個平面去擬合當前的局部曲面,通常情況下,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優下降路徑。
五、線性迴歸的評估指標
解釋方差(Explained variance score):
絕對平均誤差(Mean absolute error):
均方誤差(Mean squared error):
決定係數(
score):