機器學習之路: python線性迴歸 過擬合 L1與L2正則化

來源:互聯網
上載者:User

標籤:sso   比較   proc   nsf   大小   rom   print   迴歸   函數   

git:https://github.com/linyi0604/MachineLearning

正則化:
提高模型在未知資料上的泛化能力
避免參數過擬合
正則化常用的方法:
在目標函數上增加對參數的懲罰項
削減某一參數對結果的影響力度

L1正則化:lasso
線上性迴歸的目標函數後面加上L1範數向量懲罰項。

f = w * x^n + b + k * ||w||1

x為輸入的樣本特徵
w為學習到的每個特徵的參數
n為次數
b為偏置、截距
||w||1 為 特徵參數的L1範數,作為懲罰向量
k 為懲罰的力度

L2範數正則化:ridge
線上性迴歸的目標函數後面加上L2範數向量懲罰項。

f = w * x^n + b + k * ||w||2

x為輸入的樣本特徵
w為學習到的每個特徵的參數
n為次數
b為偏置、截距
||w||2 為 特徵參數的L2範數,作為懲罰向量
k 為懲罰的力度


下面類比 根據蛋糕的直徑大小 預測蛋糕價格
採用了4次線性模型,是一個過擬合的模型
分別使用兩個正則化方法 進行學習和預測


 1 from sklearn.linear_model import LinearRegression, Lasso, Ridge 2 # 匯入多項式特徵產生器 3 from sklearn.preprocessing import PolynomialFeatures 4  5  6 ‘‘‘ 7 正則化: 8     提高模型在未知資料上的泛化能力 9     避免參數過擬合10 正則化常用的方法:11     在目標函數上增加對參數的懲罰項12     削減某一參數對結果的影響力度13 14 L1正則化:lasso15     線上性迴歸的目標函數後面加上L1範數向量懲罰項。16     17     f = w * x^n + b + k * ||w||1 18     19     x為輸入的樣本特徵20     w為學習到的每個特徵的參數21     n為次數22     b為偏置、截距23     ||w||1 為 特徵參數的L1範數,作為懲罰向量24     k 為懲罰的力度25 26 L2範數正則化:ridge27     線上性迴歸的目標函數後面加上L2範數向量懲罰項。28     29     f = w * x^n + b + k * ||w||2 30     31     x為輸入的樣本特徵32     w為學習到的每個特徵的參數33     n為次數34     b為偏置、截距35     ||w||2 為 特徵參數的L2範數,作為懲罰向量36     k 為懲罰的力度37         38         39 下面類比 根據蛋糕的直徑大小 預測蛋糕價格40 採用了4次線性模型,是一個過擬合的模型41 分別使用兩個正則化方法 進行學習和預測42 43 ‘‘‘44 45 # 樣本的訓練資料,特徵和目標值46 x_train = [[6], [8], [10], [14], [18]]47 y_train = [[7], [9], [13], [17.5], [18]]48 # 準備測試資料49 x_test = [[6], [8], [11], [16]]50 y_test = [[8], [12], [15], [18]]51 # 進行四次線性迴歸模型擬合52 poly4 = PolynomialFeatures(degree=4)  # 4次多項式特徵產生器53 x_train_poly4 = poly4.fit_transform(x_train)54 # 建立模型預測55 regressor_poly4 = LinearRegression()56 regressor_poly4.fit(x_train_poly4, y_train)57 x_test_poly4 = poly4.transform(x_test)58 print("四次線性模型預測得分:", regressor_poly4.score(x_test_poly4, y_test))  # 0.809588079574672359 60 # 採用L1範數正則化線性模型進行學習和預測61 lasso_poly4 = Lasso()62 lasso_poly4.fit(x_train_poly4, y_train)63 print("L1正則化的預測得分為:", lasso_poly4.score(x_test_poly4, y_test))  # 0.838892687360438264 65 # 採用L2範數正則化線性模型進行學習和預測66 ridge_poly4 = Ridge()67 ridge_poly4.fit(x_train_poly4, y_train)68 print("L2正則化的預測得分為:", ridge_poly4.score(x_test_poly4, y_test))  # 0.8374201759366456

 

通過比較 經過正則化的模型 泛化能力明顯的更好啦

機器學習之路: python線性迴歸 過擬合 L1與L2正則化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.