本章主要講訓練模型的方法。
線性回歸模型
- 閉式方程:直接計算最適合訓練集的模型參數
- 梯度下降:逐漸調整模型參數直到訓練集上的成本函數調至最低,最終趨同與第一種方法計算出的參數
首先,給出線性回歸模型的預測公式
將上述公式向量化
當公式存在后,我們由於需要最優參數,因此需要成本函數。線性回歸模型一般的成本函數是RMSE或者MSE,這里用MSE
然后,開始求優。
1、使用標准方程(閉式解或者叫公式解)
這個變化是根據線性代數中的矩陣求逆以及相關運算求出的一個公式,要注意,這里的X是一個全數據的矩陣,行為特征數,列為訓練集數量。
通過上述理論,給出代碼進行求解:
代碼中首先隨機生成數據集並添加噪聲,然后通過閉式解求出參數集,然后進行預測。
繪制結果
注意,使用標准方程時,一般來說特征數量越多矩陣求逆運算越復雜,計算復雜度越高,更加不容易求解,但是好處是當求出來后,預測很快。
2、梯度下降
具體來說,就是迭代調整參數,使得成本函數最小化。
首先,使用一個隨機的θ值,然后逐步讓θ變化,使得更加靠近我們的目標,直到算法收斂到一個最小值。
在這個方法中,θ值的取值很關鍵,因為它代表步長,過大可能算法不能收斂,導致發散,過小,會導致算法收斂速度變慢。
梯度下降在非凸函數中,可能會收斂到一個局部最優值,而在凸函數中會收斂到全局最優。
梯度下降速度與參數的大小也有關系
梯度下降需要計算公式的梯度,我們當然需要計算成本函數關於參數θ的偏導數
這里有三個變種,分別是
- 批量梯度下降
- 隨機梯度下降
- 小批量梯度下降
批量梯度下降
批量梯度下降最關鍵的是一次計算使用全部的訓練函數進行,采用線性代數中的矩陣計算實現。
每一個的θ都是通過全部的訓練函數計算出來。最后生成參數的梯度向量。
梯度下降的更新公式:
代碼:
可以發現,預測結果與之前的標准方程基本一致。
這里注意:可以通過網格搜索確定學習率θ,限制迭代次數。
隨機梯度下降
隨機梯度下降的關鍵是隨機二字,在操作的時候,隨機選取一個訓練集上的數據,根據之前的梯度公式給出相應的偏導數,然后用該偏導數去更新全部的參數θ。隨機梯度下降的最大的優勢在於計算非常迅速,每次更新都是基於單個實例。
當然,有利就有弊,隨機梯度下降的成本函數的圖像是不斷上上下下的,它的下降不規則,但總體趨勢一定是下降的。但即使達到了最小值,依舊還會不斷的反彈,永遠不會停止。
隨機梯度下降還有一個比較好的優勢在於它比批量梯度下降更加的能找到全局最優值,因為它的不規則性,它比批量梯度下降更加能夠跳出局部最小值,但永遠定位不到最小值。
一般采取的策略是模擬退火,意思是剛開始步長可以設置的稍大,然后將步長越來越小,讓算法接近全局最小值。
這里的SGDRegressor類中,默認的優化的成本函數是平方誤差。
小批量梯度下降
是批量梯度下降的簡化形式,主要是通過小批量的訓練集數據進行參數更新,這樣做的好處是能夠在矩陣運算的硬件優化中獲得顯著的性能提升。當然,小批量梯度下降在同等的條件下,能比隨機梯度下降更加接近最小值。
三者比較
多項式回歸模型
這種模型是在線性模型的基礎上,為每個特征的冪次方作為一個新特征添加,然后在這個拓展的訓練集上訓練。
我們可以發現,模型的預測效果比線性要好。
這里注意:特征的數量越多,組合的特征就越多,就會存在爆炸的情況,因此在操作PolynomialFeatures(degree=d)這個類時,一定注意控制計算的大小!
學習曲線
我們訓練集訓練出的模型,最佳的性能是擁有對其他測試集數據的泛化能力,因此要求我們的模型要擬合訓練集上的數據要充足且不能過擬合。
通過圖像能夠發現,數據在線性回歸中沒有很好的擬合數據,是欠擬合,在高階(300)多項式中被過擬合,在2次回歸中是較好擬合,因此把握回歸的度是一個關鍵。
我們可以觀察學習曲線,即畫出模型在訓練集上的表現,同時畫出以訓練集規模為自變量的訓練集的圖像曲線。
注意:如果模型再怎么訓練都不能很好的擬合數據,說明模型本身能力較弱,無法適應當前任務,需要更換復雜度更高的模型去處理。
在學習曲線中,如果訓練集的結果比驗證集好,說明模型還是存在過擬合的現象,我們最終想看到的是兩條曲線的重合或者幾乎重合,能做的方法有提供更多的訓練數據。
方差、偏差與不可約誤差
偏差:泛化誤差的這部分誤差是由於錯誤的假設決定的。例如實際是一個二次模型,你卻假設了一個線性模型。一個高偏差的模型最容易出現欠擬合。
方差:這部分誤差是由於模型對訓練數據的微小變化較為敏感,一個多自由度的模型更容易有高的方差(例如一個高階多項式模型) ,因此會導致模型過擬合。
不可約誤差:這部分誤差是由於數據本身的噪聲決定的。降低這部分誤差的唯一方法就是進行數據清洗(例如:修復數據源,修復壞的傳感器,識別和剔除異常
值) 。
解決過擬合問題——正則化
我們要懂得一個規則,就是模型擁有越少的自由度,就越難擬合數據,過擬合的情況發生的概率就會越少。
四個正則化方式:
- 嶺回歸
- 套索回歸
- 彈性網絡
- 早期停止法
1、嶺回歸
超參數α控制着懲罰的輕重,過小則正則化的約束能力變弱,過大則約束力太強,模型失去意義。
注意:使用嶺回歸前,對數據進行放縮(可以使用 StandardScaler ) 是非常重要的,算法對於輸入特征的數值尺度(scale) 非常敏感。
2、套索回歸
與嶺回歸很相似,但這里使用的正則項是l1范數。
這個正則化有個好處,在於它傾向於將不重要的特征權重設置為0。
還要注意的是,由於某些θ值設置為0,因此在該處是不允許求偏導的,需要子梯度向量
3、彈性網絡
超參數r是控制彈性的標准,r=1就是套索回歸,r=0就是嶺回歸。
4、早期停止法
方法即為觀察預測誤差下降到最低點時,停止訓練,並將該時候的訓練模型作為最佳模型使用。
注意:隨機梯度下降或小批量梯度下降中,由於不是平滑曲線,因此需要誤差曲線高於最小值一段時間后再回滾到最小值對應的最佳模型上。
邏輯回歸模型
Logistic 回歸(也稱為 Logit 回歸) 通常用於估計一個實例屬於某個特定類別的概率 。
其單個樣本的損失函數為:
下面代碼給出對於某類型花的邏輯回歸分類器
softmax回歸模型
思路:當給定一個實例 時,Softmax 回歸模型首先計算 類的分數 ,然后將分數應用在 Softmax 函數(也稱為歸一化指數) 上,估計出每類的概率。
它的成本函數表示為
通過計算每個類別的梯度向量,使用梯度下降找到合適的θ。
用softmax進行分類花種類的划分:
對於softmax最后我的理解就是一個歸一化操作,尋找一個得分最高的類別作為預測類別。