1. 程式人生 > >18.【進階】模型正則化--L1&L2範數正則化

18.【進階】模型正則化--L1&L2範數正則化

#-*- coding:utf-8 -*-

#模型正則化:目的是提高模型在未知測試資料上的泛化力,避免參數過擬合
#常用方法:在原模型優化目標的基礎上,增加對引數的懲罰(penalty)項
#拓展一下L0範數、L1範數、L2範數的概念
#L0範數是指向量中非0的元素的個數,如果我們用L0範數來規則化一個引數矩陣W的話,就是希望W的大部分元素都是0,實現稀疏但是NP-hard。
#L1範數是指向量中各個元素絕對值之和,也有個美稱叫“稀疏規則運算元”(Lasso regularization),通常用來實現稀疏
#L2範數是指向量各元素的平方和然後求平方根。我們讓L2範數的規則項||W||2最小,可以使得W的每個元素都很小,都接近於0,
#但與L1範數不同,它不會讓它等於0,而是接近於0,這裡是有很大的區別的。而越小的引數說明模型越簡單,越簡單的模型則越不容易產生過擬合現象。 #接下來分別以L1範數正則化和L2範數正則化進行討論 #繼續以上一講的資料進行研究(程式碼與上一講相同) import numpy as np X_train = [[6],[8],[10],[14],[18]] y_train = [[7],[9],[13],[17.5],[18]] X_test = [[6],[8],[11],[16]] y_test = [[8],[12],[15],[18]] from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures poly4 = PolynomialFeatures(degree=4
) X_train_poly4 = poly4.fit_transform(X_train) X_test_poly4 = poly4.transform(X_test) #************************************************************************************* #1.L1範數正則化 #目標:讓引數(權重)向量中的許多元素趨向於0,使得大部分特徵失去對優化目標的貢獻 #這種讓有效特徵變得稀疏對L1正則化模型,通常被稱為Lasso模型 from sklearn.linear_model import Lasso #使用預設配置的lasso
lasso_poly4 = Lasso() lasso_poly4.fit(X_train_poly4,y_train) #對Lasso模型在測試樣本上的迴歸功能進行評估 print lasso_poly4.score(X_test_poly4,y_test) #輸出:0.83889268736 #輸出Lasso模型的引數列表 print lasso_poly4.coef_ #[0.00000000e+00 0.00000000e+00 1.17900534e-01 5.42646770e-05 -2.23027128e-04] #小結: #1.預設配置的Lasso模型(L1範數正則化的模型)效能比普通的多項式迴歸模型更好一些; #2.相較於普通的多項式迴歸模型,Lasso模型擬合後對引數列表中,4次與3次特徵的引數均為0.0,使得特徵更加稀疏。 #************************************************************************************* #2.L2範數正則化 #目標:讓引數(權重)向量中的大部分元素 都 變得很小,<壓制了引數之間對差異性> #這種壓制引數之間差異性的L2正則化模型,通常被稱為Ridge模型 from sklearn.linear_model import Ridge ridge_poly4 = Ridge() ridge_poly4.fit(X_train_poly4,y_train) print ridge_poly4.score(X_test_poly4,y_test) #輸出:0.837420175937 #輸出Ridge模型擬合後引數的平方和 print np.sum(ridge_poly4.coef_**2) #0.0154989652036 #小結: #1.預設配置的Ridge模型(L2範數正則化的模型)效能比普通的多項式迴歸模型更好一些; #2.相較於普通的多項式迴歸模型,Ridge模型擬合後引數之間的差異非常小 #最後值得一提的是,不論是L1範數正則化,還是L2範數正則化,懲罰項都有一個調節因子λ,在模型優化中扮演重要的角色,留待後續研究。