1. 程式人生 > 其它 >機器學習黑客系列:模型比較與選擇

機器學習黑客系列:模型比較與選擇

訓練機器學習並生成模型以供將來預測的科學被廣泛使用。為了更好地解決我們的問題,我們引入了不會太複雜的程式碼,更高階的學習演算法和統計方法。

模型的比較和選擇在我關於“機器學習101和線性迴歸”的論文中廣泛討論,我們嘗試使用機器學習來解決的問題可以主要分為兩種型別:監督機器學習與無監督機器學習。監督學習從標記的資料中學習,例如,房屋特徵的資料,其中還包括房價,房價預測。換句話說,監督機器學習學習標記的資料點,並預計未來的標記資料點。

論文地址:https://codingstartups.com/practical-machine-learning-ridge-regression-vs-lasso/

而無監督學習則從無標記的資料中學習,不能預測未來資料點的標籤。它通常用於資料的維度縮減,資料的聚類等等。

在這篇文章中,我們將討論有監督的學習相關問題,模型和方法。這需要你熟悉一些機器學習方法,如線性迴歸,嶺迴歸和Lasso並且知道如何使用這些方法來訓練模型。

這個系列被稱為“機器學習黑客”,目的是強調開發人員就算不是資料科學家也可以訓練模型和使用機器學習,並充分利用它。雖然有大量的工具和庫可以在10行程式碼下訓練機器學習模型,但作為一個數據黑客你需要熟悉的不僅僅是培訓模型。你需要知道如何評估,比較和選擇最適合你的特定資料集。

通常,在使用給定資料集的機器學習問題時,我們嘗試不同的模型和技術來解決優化問題,並適應最精確的模型,既不會過度使用也不能降低成本。

在處理現實世界的問題時,我們的資料集中通常有幾十個特徵。其中一些可能是描述性的,有些可能會重疊,有些甚至增加的噪音強過給我們的資料訊號。

使用之前關於我們所從事的行業的知識來選擇特性是也很好的,但有時我們需要一個分析工具,更好地選擇我們的特性,並比較使用不同演算法訓練的模型。

我的目標是為你介紹最常用的技術和標準比較你訓練的模型,以便為你的問題選擇最準確的模型。

具體來說,我們將看到如何在使用相同演算法訓練的不同模型之間進行選擇。假設我們有一個數據集,每個資料點的一個特徵,我們想要使用線性迴歸擬合。我們的目標是根據8個不同的假設,選擇最佳的擬合模型的多項式次數。

實際問題與資料集

我們被要求根據面積預測房價。提供給我們的資料集包含紐約1200個房屋的面積和價格。當先前的知識幾乎沒有給我們關於模型替代選擇的假設時,我們嘗試使用線性迴歸來配置一個預測未來房價的模型:

Ŷ1 = β0+β1X
Ŷ2 = β0+β1X+β1X2
Ŷ3 = β0+β1X+β2X2+β3X3
Ŷ4 = β0+β1X+β2X2+β3X3+β4X4
Ŷ5 = β0+β1X+β2X2+β3X3+β4X4+β5X5
Ŷ6 = β0+β1X+β2X2+β3X3+β4X4+β5X5+β6X6
Ŷ7 = β0+β1X+β2X2+β3X3+β4X4+β5X5+β6X6+β7X7
Ŷ8 = β0+β1X+β2X2+β3X3+β4X4+β5X5+β6X6+β7X7+β8X8

其中X表示房屋面積。

考慮到8種模型替代選擇,我們被要求使用一些標準來比較模型,並選擇最適合我們的資料集來預測未來房價的多項式次數。

如我之前的文章所述,複雜的模型容易過擬合。因此,我們在選擇我們的模型時要小心,這樣它將為我們提供對當前資料集和未來資料點的良好預測。

什麼是訓練與測試分離,以及我們為什麼需要它

在處理現實的機器學習問題時,我們的資料集的大小有限。使用相對較小的資料集,我們要訓練我們的模型以及評估它的準確性。這就需要用到訓練與測試分離。

訓練與測試分離是一種將我們的資料集分為兩組的方法,一組用於訓練模型的訓練組,一組用於測試模型的測試組。我們通常不會將它們平均分離,因為訓練模型通常需要儘可能多的資料點。

訓練與測試分離的常見分離比例是70/30或80/20。

如何比較模型

評估訓練機器學習模型的最基本指標是MSE。MSE代表均方誤差,由誤差平方的平均值求出。換句話說,MSE是預測值和實際值之間的差值,所以我們希望在訓練模型時將其最小化:

MSE=Σ(ŶŶ)2 / n

其中n是資料點的數量。

應謹慎使用MSE。因為MSE可以在訓練資料點或測試資料點上計算。使用MSE的去評估模型的正確方法是使用我們的訓練資料訓練我們的模型,然後使用我們的測試資料集計算MSE 。

如果沒有對我們的資料進行訓練與測試分離,我們將被迫在同一資料集上訓練模型和計算MSE。這種情況會引起過擬合。那麼為什麼會這樣呢?

假設沒有對我們的資料進行訓練與測試分離,訓練了8個模型(如上所述),並計算了每個模型的MSEtrain。哪個型號將為我們提供最低的MSEtrain?最有可能的是模型8,因為它是最複雜的一個,不是學習資料而是過擬合數據。

因為我們使用完全相同的資料集來訓練和測試模型,MSEtrain將會下降,於是我們使用更復雜的更大程度擬合訓練資料的模型(不要忘了我們嘗試解決的優化問題是讓預測和實際的誤差最小化)。

所以我們瞭解到,在我們分離資料集之後,我們會更好地使用MSE來測試它。但是有更先進的標準替代常用的單純使用MSE的標準評估我們的模型(基於MSE)。

我們可以使用哪些標準

在瞭解為什麼我們需要將資料分離訓練和測試,以及MSE的含義後,我們將介紹3個主要標準用於比較我們8種不同模型。這些標準讓你瞭解如何處理過擬以及合如何為資料集選擇最好的模型。

1:Mallows’s Cp

Cp是1973年Mallows提出的一種統計方法用於計算期望的偏差。假設我們有一個非常小的資料集,以至於將其分成訓練和測試沒有意義,我們就可以使用Cp,以便使用在訓練資料集上計算的MSEtrain來估計MSEtest。

Cp標準或MSEtest的估計由下式給出:

Cp= MSEtrain+2σ2P/ n

其中σ2是基於完整模型(8號模型)的誤差方差,P是預測值的數量。

為了使用Mallows’s Cp來比較我們的模型,我們需要在完整資料集上訓練每個模型,為每個訓練模型計算Mallows’s Cp估計量,並選擇具有最低Cp結果的模型。

我們可以看到,MSEtrain隨著多項式次數的增加(更復雜的模型)而減少時,我們不能指出該選擇哪個模型,MSEtest和Mallows的Cp標準都將選擇模型3為基於資料集的最佳模型。

注意:Mallows’s Cp沒有被開發成評估沒有使用線性迴歸訓練的模型。因此,你不得將其與使用其他機器學習演算法訓練的模型一起使用。

2:BIC

我們已經提到,當擬合模型時,新增引數並使模型更加複雜可能導致過擬合。BIC是試圖通過為模型中的引數數量引入懲罰項來解決此問題的統計標準。

BIC(Bayesian Information Criterion)即貝葉斯資訊準則,假設提出的模型中存在正確的模型,我們的目標是選擇它。

數學公式非常類似於Mallows’s Cp,如下:

BIC= MSEtrain+ log(n)σ2P/ n

具有最低BIC的模型是首選。

MSEtrain的值先不看,所有其他的標準都選擇模型3最佳擬合數據。

注意:當我們不確定建議模型中是否存在正確模型時,BIC可能以出人意料的方式表現。因此,在實際應用中,我們應該謹慎使用。

3:交叉驗證

處理機器學習問題需要很好地理解交叉驗證(CV)。在機器學習中交叉驗證以很多不同的方式被應用,即所有有關比較或選擇引數和模型。

交叉驗證基於訓練與測試分離方法的延伸。它的優點是,它任意分割資料集多次,並且每次在一個稍微不同的資料集上對訓練模型的進行測試。

通過這樣做,我們確定我們不會基於異常值或不正確表示訊號的資料來評估模型的錯誤。接著我們為這個基於多個訓練與測試分離的模型每個分離的評估平均這個MSEtest:

CV(n)=ΣMSEi,test/ n

優先選擇CV(n)最低的模型。這裡有一個關鍵點要理解 – 在比較使用交叉驗證的模型時會有一個巢狀迭代 – 對於每個模型,我們隨機分割資料集,計算MSEi,測試然後將它們平均為CV指標。因此,我們提出了每個模型的CV指標,在此基礎上我們選擇了首選模型。

交叉驗證分割有兩個主要實現:

1.LOO交叉驗證(Leave one out cross validation)

2.K折交叉驗證(最受歡迎)

LOO交叉驗證,並且每次迭代從訓練集中取出一個不包含在訓練集的資料點,用於測試模型的效能。

K折交叉驗證獲得K引數作為輸入,將資料集分為K個部分,對每個部分進行迭代,每次迭代都將第k個部分排除在訓練之外,並將其作為測試集使用。

選擇K引數是摺疊次數有時可能是棘手的,因為它影響了我們的資料的偏差—方差權衡。一般選擇5或10(取決於資料集的大小)。

交叉驗證是機器學習和統計中使用的一個極好的工具。在下圖中,我們可以看到不同的指標如何估計模型的誤差。

與Cp或BIC不同的是交叉驗證在大多數機器學習演算法中執行良好,並且不需要假設有一個正確的模型。

我也鼓勵你檢視Lasso方法。Lasso具有內建的正則化機制,可以從我們的模型中消除多餘的特徵,這是我們在比較不同型號時經常需要實現的功能。