在機器學習的過程中要防止因為引數過多或模型過於複雜導致的過擬合,減少過擬合的乙個方法時對模型正則化,降低模型訓練的自由度,例如降低多項式的階數。
在執行正則化之前,須對資料進行縮放(standardscaler…)。
嶺回歸ridge regression的方法是在訓練模型的成本函式1
中新增乙個等於a/2 * σθ^22
的正則項,這使得在模型的訓練過程中不僅僅需要擬合資料,也需要將權重保持在較小的範圍內。
正則項中,超引數 a代表對於模型正則化的程度,a = 0,模型就是線性模型,a很大的時候,所有權重接近於0,模型是一條穿過資料平均值的水平線。
成本函式: j(θ) = mse(θ) + (a / 2) * σ θ^2
# 使用sklearn執行閉式嶺回歸
from sklearn.linear_model import ridge
ridge_reg = ridge(alpha=
1, solver=
"cholesky"
)# 使用隨機梯度下降實現嶺回歸
from sklearn.linear_model import sgdregressor
sgd_reg = sgdregressor(penalty =
"l2"
)# penalty 指使用正則化的型別,設為l2代表在成本函式中新增 權重向量的l2範數的平方的一半 ,即嶺回歸。
最小絕對收斂和選擇運算元回歸,簡稱套索回歸。
類似於嶺回歸,套索回歸在成本函式中新增權重向量的l1範數,即a σθ2。
lasso回歸的特點是傾向於消除掉最不重要的特徵的權重,即會自動執行特徵選擇並輸出乙個稀疏模型。當特徵數量超過訓練例項數量,又或是幾個特徵強相關的時候,lasso回歸的表現可能不穩定。
成本函式: j(θ) = mse(θ) + a * σ θ
# 使用sklearn執行閉式套索回歸
from sklearn.linear_model import lasso
ridge_reg = ridge(alpha=
0.1)
# 使用隨機梯度下降實現套索回歸
from sklearn.linear_model import sgdregressor
sgd_reg = sgdregressor(penalty =
"l1"
)# penalty 指使用正則化的型別,設為l1代表在成本函式中新增 權重向量的l1範數 ,即套索回歸。
彈性網路新增的正則項是嶺回歸和套索回歸正則項的混合。
成本函式: j(θ) = mse(θ) + r * a * σ |θ| + (1-r) * (a / 2) * σ θ^2 3
# 使用sklearn執行閉式套索回歸
from sklearn.linear_model import elasticnet
elastic_net = elasticnet(alpha=
0.1, l1_ratio =
0.5)
在正常情況下,應該避免使用純線性回歸,嶺回歸是個不錯的選擇,但如果實際用的特徵較少,則應該使用lasso回歸或彈性網路,用於減少特徵數量。
訓練模型的成本函式與測試時的成本函式不同,此正則項不該新增在測試的成本函式中。 ↩︎
偏置項θ 0不參與正則化求和。 ↩︎↩︎
r用於控制混合比例。 ↩︎
機器學習中防止過擬合方法
在進行資料探勘或者機器學習模型建立的時候,因為在統計學習中,假設資料滿足獨立同分布,即當前已產生的資料可以對未來的資料進行推測與模擬,因此都是使用歷史資料建立模型,即使用已經產生的資料去訓練,然後使用該模型去擬合未來的資料。但是一般獨立同分布的假設往往不成立,即資料的分布可能會發生變化 distri...
機器學習篇 防止過擬合
不同演算法中防止過擬合的trick總結 過擬合直觀表現是訓練集上效果好,在測試集上效果差,即模型泛化能力弱,即模型偏差小,方差大 防止過擬合即訓練時減少訓練集部分樣本對模型的貢獻度,即降低部分樣本的權重,可以從兩個方面考慮,一是訓練時直接忽略某些樣本 實現行抽樣 二是降低權重w 實現列抽樣 1 正則...
防止過擬合方法
在訓練資料不夠多時,或者overtraining時,常常會導致overfitting 過擬合 其直觀的表現如下圖所示,隨著訓練過程,網路在training data上的error漸漸減小,但是在驗證集上的error卻反而漸漸增大 因為訓練出來的網路過擬合了訓練集,對訓練集外的資料卻不work。為了防...