機器學習(補充)——模型判斷、交叉驗證


這裏對一些零碎的知識點進行補充,由於內容比較少,不再做詳細的介紹。

模型判斷

MSE=1mi=1m(yiyi^)2 MSE = \frac{1}{m} \sum_{i=1}^m (y_i - \hat{y_i})^2
RMSE=MSE=1mi=1m(yiyi^)2 RMSE = \sqrt{MSE}= \sqrt{\frac{1}{m} \sum_{i=1}^m (y_i - \hat{y_i})^2}
R2=1RSSTSS=1i=1m(yiyi^)2i=1m(yiyˉ)2        yˉ=1mi=1myi R^2 = 1 - \frac{RSS}{TSS} = 1 - \frac{\sum_{i=1}^m (y_i - \hat{y_i})^2}{\sum_{i=1}^m (y_i - \bar{y})^2} \,\,\,\,\,\,\,\, \bar{y} = \frac{1}{m} \sum_{i=1}^m y_i
MSE:誤差平方和,越趨近於0表示模型越擬合訓練數據。
RMSE:MSE的平方根,作用同MSE
:取值範圍(負無窮,1],值越大表示模型越擬合訓練數據;最優解是1,即預測值等於真實值;當模型預測爲隨機值的時候,有可能爲負;若預測值恆爲樣本期望,R²爲0
分類模型中經常用到準確率,但迴歸沒有,所以經常用R²當作準確率。爲1也就是100%時,是最優的。api中就是lr.scorce
TSS:總平方和TSS(Total Sum of Squares),表示樣本之間的差異情況,是真實方差的m倍
RSS:殘差平方和RSS(Residual Sum of Squares),表示預測值和樣本值之間的差異情況,是MSE的m倍

機器學習調參——交叉驗證

這裏介紹一種常用的模型選擇方法是交叉驗證 (cross validation) 。

如果給定的樣本數據充足,進行模型選擇的一種簡單方法是隨機地將數據集切分成三部分,分別爲訓練集( training set )、驗證集 (validation set) 和測試集 (test set) 。訓練集用來訓練模型,驗證集用於模型的選擇,而測試集用於最終對學習方法的評估。在學習到的不同複雜度的模型中,選擇對驗證集有最小預測誤差的模型。由於驗證集有足夠多的數據,用它對模型進行選擇也是有效的。

但是,在許多實際應用中數據是不充足的。爲了選擇好的模型,可以採用交叉驗證方法。交叉驗證的基本想法是重複地使用數據;把給定的數據進行切分,將切分的數據集組合爲訓練集與測試集,在此基礎上反覆地進行訓練、測試以及模型選擇。

在實際工作中,對於各種算法模型(線性迴歸)來講,我們需要獲取θ、λ、p的值;θ的求解其實就是算法模型的求解,一般不需要開發人員參與(算法已經實現),主要需要求解的是λ和p的值,這個過程就叫做調參(超參)
交叉驗證:將訓練數據分爲多份,其中一份進行數據驗證並獲取最優的超參:λ和p;比如:十折交叉驗證、五折交叉驗證(scikit-learn中默認)等
在這裏插入圖片描述

1.簡單交叉驗證
簡單交叉驗證方法是:首先隨機地將已給數據分爲兩部分,一部分作爲訓練集,另一部分作爲測試集(例如, 70% 的數據爲訓練集, 30% 的數據爲測試集);然後用訓練集在各種條件下(例如,不同的參數個數)訓練模型,從而得到不同的模型;在測試集上評價各個模型的測試誤差,選出測試誤差最小的模型。

2. S 折交叉驗證
應用最多的是 S 折交叉驗證( S -fold cross validation ),方法如下:首先隨機地將已給數據切分爲 S 個互不相交的大小相同的子集;然後利用 S - 1 個子集的數據訓練模型,利用餘下的子集測試模型;將這一過程對可能的 S 種選擇重複進行;最後選出 S 次評測中平均測試誤差最小的模型。

3.留一交叉驗證
S 折交叉驗證的特殊情形是 S = N,稱爲留一交叉驗證( leave-one-out crossvalidation ),往往在數據缺乏的情況下使用.這裏, N 是給定數據集的容量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章