想提高預測精度?7步教你微調機器學習模型
全文共1760字,預計學習時長3分鐘
微調機器學習預測模型是提高預測結果準確性的關鍵環節。本文將詳細介紹以下幾個方面:
1.使用評分指標檢索模型性能的估計值
2.查找和診斷機器學習演算法的常見問題
3.微調機器學習模型的參數
第1步:了解什麼是調整機器學習模型
有時,我們不得不探索如何用模型參數來提高機器學習模型的預測精度。微調機器學習模型是一門黑色藝術(一種魔法)。這項任務也可能非常艱巨。本文將介紹一些微調機器學習模型的方法,幫助我們在較短的時間內獲得更準確的結果。
調整機器學習模型就像旋轉電視開關和旋鈕,轉到你獲得更清晰的信號為止。
· X 列 - 訓練自變數數據,也稱為特徵
· X測試 - 自變數測試數據
· Y 列 - 因變數訓練數據
· Y 測試 - 因變數測試數據
例如,如果你根據溫度和濕度預測瀑布的體積,則水的體積表示為y(因變數),溫度和濕度表示為x(自變數或特徵)。X的訓練數據稱為X訓練,你可以用它來訓練模型。
超參數是可以作為模型arguments對象輸入的模型參數。
第2步:介紹基礎知識
在微調預測模型之前,必須要對機器學習有個基本了解。
與微調模型參數相比,改進輸入到模型中的數據通常更容易。如果想提高預測模型的準確性,請先增加特徵集中的數據量。
如果你輸入劣質的數據,那麼該模型產生的結果也就不太準確。
第3步:找到你的分數標準(評分指標)
最重要的先決條件是確定將用於評估預測模型準確性的分數指標(評分指標)。它可以是R平方,調整後的R平方,混淆矩陣,F1,召回率,方差等。
第4步:獲得準確的預測分數
準備好訓練集、豐富訓練集功能(特徵)、縮放數據、分解特徵集、確定評分指標並在訓練數據上訓練模型,這些都做好之後再去測試模型在未知數據上的準確性。未知的數據稱為「測試數據」。
你可以使用交叉驗證來評估模型對未知的數據的處理。這是模型的泛化錯誤。
兩種常見的交叉驗證方法
1.Holdout 交叉驗證
在同一數據集上訓練你的模型並對其準確性進行評分並非明智的機器學習方法,應該在一個未知的測試集上使用不同的模型參數值測試模型。
將數據集分為三個部分是一種很好的方法:
· 訓練集
· 驗證集
· 測試集
在訓練集上訓練模型(60%的數據),然後在驗證集上執行模型選擇(調整參數)(20%的數據),一旦準備就緒,再在測試集上測試模型(20%數據)。
根據機器學習模型的需求和數據的可用性,確定訓練、驗證和測試數據集的比例。
2.K折交叉驗證
K折交叉驗證是一種優於holdout交叉驗證的機制。它的工作方式是將數據分為k個摺疊(部分)。K-1摺疊用於訓練模型,最後一個摺疊用於測試模型。
重複該機制k次。此外,每次可以使用多個性能指標來評估和評分模型的性能。然後得出性能指標的平均值。等級比例保存在StratifiedKFold中。
選擇8–12 K摺疊
from sklearn.cross_validation import cross_val_score
scores = cross_val_score(estimator=pipe_lr, X=X_train, y=Y_train, cv=12, n_jobs=)
mean_scores = scores.mean()
n_jobs參數控制用於運行交叉驗證的中央處理器(CPU)數量。
第5步:使用驗證曲線診斷最佳參數值
一旦建立了準確的預測分數,找出模型所需的所有參數。然後使用驗證曲線來探索它們的值如何能夠提高預測模型的準確性。
在調整參數之前,我們需要診斷並找出模型是否存在欠擬合或過擬合的問題。
具有大量參數的模型往往過擬合。利用驗證曲線可以解決機器學習中的過擬合和欠擬合問題。
驗證曲線用於傳遞模型參數的一系列值。它一次改變一個模型參數的值,然後可以將精度值繪製到模型參數值上,以評估模型的精度。
例如,如果模型採用名為「樹數」的參數,那麼你可以通過傳遞10個不同的參數值來測試模型。你可以使用驗證曲線得出每個參數值的準確性,以評估最終數據的準確性。最後,選取準確度最高的分數,並在可接受的次數內給出你所需的結果。
Sci-kit learn提供驗證曲線模塊:
from sklearn.learning_curve import validation_curve
number_of_trees= [1,2,3,4,5,6,7,99,1000]
train_scores, test_scores = validation_curve(estimator=, … X=X_train,y=Y_train, param_range=number_of_trees, …)
第6步:使用網格搜索來優化超參數組合
一旦檢索到單個模型參數的最佳值,就可以使用網格搜索來獲得模型的超參數值的組合,這樣就能獲得最高的精度。
網格搜索可以評估參數值的所有可能組合。
網格搜索是十分詳盡的,並能強大地評估最準確的值。因此,它是一項計算密集型任務。
使用sci-kit learn的GridSearchCV執行網格搜索
from sklearn.grid_search import GridSearchCV
第7步:持續調整參數以進一步提高精度
這裡的關鍵是,如有一直有新數據,就要一直增強訓練集。
請在模型以前沒有遇到過的更豐富的測試數據上測試你的預測模型(請用那些新數據來測試的預測模型)。
始終確保為此步驟選擇了正確的模型和參數值。
重要的是,一旦數據可用,就儘可能提供更多的數據,並連續測試模型的準確性,以便進一步優化性能和提高準確性。
留言 點贊 發個朋友圈
我們一起分享AI學習與發展的乾貨
TAG:讀芯術 |