《機器學習實戰(基於scikit-learn和TensorFlow)》第四章內容的學習心得

本章主要講訓練模型的方法。git

 

線性迴歸模型算法

  • 閉式方程:直接計算最適合訓練集的模型參數
  • 梯度降低:逐漸調整模型參數直到訓練集上的成本函數調至最低,最終趨同與第一種方法計算出的參數

首先,給出線性迴歸模型的預測公式網絡

image

將上述公式向量化函數

7]{S)_L0K53W9(_J8BSH$1S

當公式存在後,咱們因爲須要最優參數,所以須要成本函數。線性迴歸模型通常的成本函數是RMSE或者MSE,這裏用MSE性能

image

而後,開始求優。學習

一、使用標準方程(閉式解或者叫公式解)測試

image

這個變化是根據線性代數中的矩陣求逆以及相關運算求出的一個公式,要注意,這裏的X是一個全數據的矩陣,行爲特徵數,列爲訓練集數量。優化

經過上述理論,給出代碼進行求解:spa

image

代碼中首先隨機生成數據集並添加噪聲,而後經過閉式解求出參數集,而後進行預測。.net

繪製結果

image

注意,使用標準方程時,通常來講特徵數量越多矩陣求逆運算越複雜,計算複雜度越高,更加不容易求解,可是好處是當求出來後,預測很快。

二、梯度降低

具體來講,就是迭代調整參數,使得成本函數最小化。

首先,使用一個隨機的θ值,而後逐步讓θ變化,使得更加靠近咱們的目標,直到算法收斂到一個最小值。

image

在這個方法中,θ值的取值很關鍵,由於它表明步長,過大可能算法不能收斂,致使發散,太小,會致使算法收斂速度變慢。

imageimage

梯度降低在非凸函數中,可能會收斂到一個局部最優值,而在凸函數中會收斂到全局最優。

image

梯度降低速度與參數的大小也有關係

image

 

梯度降低須要計算公式的梯度,咱們固然須要計算成本函數關於參數θ的偏導數

image

這裏有三個變種,分別是

  • 批量梯度降低
  • 隨機梯度降低
  • 小批量梯度降低

批量梯度降低

批量梯度降低最關鍵的是一次計算使用所有的訓練函數進行,採用線性代數中的矩陣計算實現。

image

每個的θ都是經過所有的訓練函數計算出來。最後生成參數的梯度向量。

梯度降低的更新公式:

image

代碼:

image

能夠發現,預測結果與以前的標準方程基本一致。

這裏注意:能夠經過網格搜索肯定學習率θ,限制迭代次數。

 

隨機梯度降低

隨機梯度降低的關鍵是隨機二字,在操做的時候,隨機選取一個訓練集上的數據,根據以前的梯度公式給出相應的偏導數,而後用該偏導數去更新所有的參數θ。隨機梯度降低的最大的優點在於計算很是迅速,每次更新都是基於單個實例。

固然,有利就有弊,隨機梯度降低的成本函數的圖像是不斷上上下下的,它的降低不規則,但整體趨勢必定是降低的。但即便達到了最小值,依舊還會不斷的反彈,永遠不會中止。

隨機梯度降低還有一個比較好的優點在於它比批量梯度降低更加的能找到全局最優值,由於它的不規則性,它比批量梯度降低更加可以跳出局部最小值,但永遠定位不到最小值。

通常採起的策略是模擬退火,意思是剛開始步長能夠設置的稍大,而後將步長愈來愈小,讓算法接近全局最小值。

imageimage

image

這裏的SGDRegressor類中,默認的優化的成本函數是平方偏差。

 

小批量梯度降低

是批量梯度降低的簡化形式,主要是經過小批量的訓練集數據進行參數更新,這樣作的好處是可以在矩陣運算的硬件優化中得到顯著的性能提高。固然,小批量梯度降低在同等的條件下,能比隨機梯度降低更加接近最小值。

 

三者比較

image

image

 

多項式迴歸模型

這種模型是在線性模型的基礎上,爲每一個特徵的冪次方做爲一個新特徵添加,而後在這個拓展的訓練集上訓練。

image

image

image

image

咱們能夠發現,模型的預測效果比線性要好。

這裏注意:特徵的數量越多,組合的特徵就越多,就會存在爆炸的狀況,所以在操做PolynomialFeatures(degree=d)這個類時,必定注意控制計算的大小!

 

學習曲線

咱們訓練集訓練出的模型,最佳的性能是擁有對其餘測試集數據的泛化能力,所以要求咱們的模型要擬合訓練集上的數據要充足且不能過擬合。

image

經過圖像可以發現,數據在線性迴歸中沒有很好的擬合數據,是欠擬合,在高階(300)多項式中被過擬合,在2次迴歸中是較好擬合,所以把握迴歸的度是一個關鍵。

咱們能夠觀察學習曲線,即畫出模型在訓練集上的表現,同時畫出以訓練集規模爲自變量的訓練集的圖像曲線。

image  image

注意:若是模型再怎麼訓練都不能很好的擬合數據,說明模型自己能力較弱,沒法適應當前任務,須要更換複雜度更高的模型去處理。

在學習曲線中,若是訓練集的結果比驗證集好,說明模型仍是存在過擬合的現象,咱們最終想看到的是兩條曲線的重合或者幾乎重合,能作的方法有提供更多的訓練數據。

 

方差、誤差與不可約偏差

誤差:泛化偏差的這部分偏差是因爲錯誤的假設決定的。例如實際是一個二次模型,你卻假設了一個線性模型。一個高誤差的模型最容易出現欠擬合。
方差:這部分偏差是因爲模型對訓練數據的微小變化較爲敏感,一個多自由度的模型更容易有高的方差(例如一個高階多項式模型) ,所以會致使模型過擬合。
不可約偏差:這部分偏差是因爲數據自己的噪聲決定的。下降這部分偏差的惟一方法就是進行數據清洗(例如:修復數據源,修復壞的傳感器,識別和剔除異常
值) 。

 

解決過擬合問題——正則化

咱們要懂得一個規則,就是模型擁有越少的自由度,就越難擬合數據,過擬合的狀況發生的機率就會越少。

四個正則化方式:

  • 嶺迴歸
  • 套索迴歸
  • 彈性網絡
  • 早期中止法

一、嶺迴歸

方法就是在損失函數的尾部直接加上一個正則化項:image

image

超參數α控制着懲罰的輕重,太小則正則化的約束能力變弱,過大則約束力太強,模型失去意義。

注意:使用嶺迴歸前,對數據進行放縮(可使用 StandardScaler ) 是很是重要的,算法對於輸入特徵的數值尺度(scale) 很是敏感。

image

image

image

image

二、套索迴歸

與嶺迴歸很類似,但這裏使用的正則項是l1範數。

image

image

這個正則化有個好處,在於它傾向於將不重要的特徵權重設置爲0。

還要注意的是,因爲某些θ值設置爲0,所以在該處是不容許求偏導的,須要子梯度向量image

image

三、彈性網絡

image

超參數r是控制彈性的標準,r=1就是套索迴歸,r=0就是嶺迴歸。

 

四、早期中止法

方法即爲觀察預測偏差降低到最低點時,中止訓練,並將該時候的訓練模型做爲最佳模型使用。

注意:隨機梯度降低或小批量梯度降低中,因爲不是平滑曲線,所以須要偏差曲線高於最小值一段時間後再回滾到最小值對應的最佳模型上。

image

 

邏輯迴歸模型

Logistic 迴歸(也稱爲 Logit 迴歸) 一般用於估計一個實例屬於某個特定類別的機率

image

image是sigmoid函數。

image

其單個樣本的損失函數爲:

image

image

這裏須要用梯度降低的方式將參數肯定,並無公式解。image

下面代碼給出對於某類型花的邏輯迴歸分類器

image

image

 

 

softmax迴歸模型

思路:當給定一個實例 時,Softmax 迴歸模型首先計算 類的分數 ,而後將分數應用在 Softmax 函數(也稱爲歸一化指數) 上,估計出每類的機率。

image

image

image

它的成本函數表示爲

image

image

經過計算每一個類別的梯度向量,使用梯度降低找到合適的θ。

用softmax進行分類花種類的劃分:

image

對於softmax最後個人理解就是一個歸一化操做,尋找一個得分最高的類別做爲預測類別。

相關文章
相關標籤/搜索