線性模型(二)正則化的回歸

2021-02-21 機器學習軟體工程方法
正則化的回歸

正則化的回歸是在普通回歸經驗風險中加入正則項構成的回歸,如式(9-10)所示:

正則化原理

最常見的正則化方法是使用Lp正則化項,即Lp範數,其數學表達式為式(9-11):

圖9-4描述了二維情況下Lp範數的幾何圖形:

機器學習中最常見的是使用L1和L2正則化,即圖9-4中的兩條實線表示的曲線,一個曲線尖銳,一個則很圓滑。

回歸參數求解時就是對𝛽進行上述的範數計算並受到正則範圍限制。

最小𝛽周圍不斷擴展的等高線與上述幾何圖形相切的點,即為𝛽的滿足限制條件的取值,L1的限制下該等高線會和Y軸相切得到X軸上係數為0的𝛽,而與L2得到的是非零的兩個𝛽

Lasso和Ridge回歸

L1的回歸稱為Lasso(套索)回歸,L2的回歸稱為Ridge(嶺)回歸

Lasso回歸由於具有產生係數為0的特性(係數為0的特徵表示未被選中),使得它具有特徵選擇的效果。

Ridge回歸則具有壓縮(Shrink)係數的特性,能有效避免過擬合。

兩種正則的線性組合稱為ElasticNet(彈性網絡)回歸

Sklearn中的正則化的回歸實現較為全面。

普通:Lasso、Ridge 、ElasticNet、RidgeClassifier;帶交叉驗證:LassoCV、RidgeCV、ElasticNetCV、RidgeClassifierCV。

Statsmodels中也支持部分正則化的方法,請參考:

regression.linear_model.GLS.fit_regularized

正則化效果演示數據準備

使用三角函數cos模擬了48個點,同時構造了這些不同冪的值:

np.random.seed(42)
x = np.array([i * np.pi / 180 for i in range(-180, 60, 5)])

# 加入了分布正態的噪聲
y = np.cos(x) + np.random.normal(0, 0.15, len(x))
data = pd.DataFrame(np.column_stack([x, y]), columns=['x', 'y'])

pow_max = 13

# 構造不同冪的x
for i in range(2, pow_max):  
    colname = 'x_%d' % i  
    data[colname] = data['x']**i

普通線性回歸

使用普通線性回歸模型擬合上述的點,

from sklearn.linear_model import LinearRegression

繪製指定冪的4個圖形並記錄所有冪的擬合情況:

係數情況:

Lasso回歸

from sklearn.linear_model import Lasso

使用不同的正則懲罰力度進行擬合,效果如下:

係數情況:

圖9-9的第一列,隨著alpha的增加RSS不斷增加,模型複雜度降低,回歸係數為0的個數不斷增加,係數矩陣逐漸稀疏,當alpha為0.1時的擬合曲線已經變成了平行於x軸的直線,即所有的回歸係數都為0

Ridge回歸

使用不同的正則懲罰力度進行擬合,效果如下:

係數情況:

從圖9-11可以看出:

隨著alpha的增大,係數越來越小,逐漸趨向於0;

RSS增加,模型複雜度降低的同時逐漸從過擬合到欠擬合。

當alpha為1e-15時,該曲線和普通線性回歸中最後一個圖基本一致,表示沒有正則化的效果,而當alpha為0.001時,對模型過擬合進行了良好的矯正,但是當alpha為50時,所有回歸係數幾乎都為0,導致擬合的曲線接近一條直線,出現欠擬合。

需要注意的是:此時係數接近0,但並不為0,這是與Lasso差異最顯著的地方。

本文摘編自《機器學習:軟體工程方法與實現》,經出版方授權發布。

相關焦點

  • 線性回歸的正則化 ——嶺回歸與LASSO回歸
    本文作者:王   歌文字編輯:孫曉玲在《基於廣義線性模型的機器學習算法——線性回歸》中我們介紹了如何使用線性回歸算法來擬合學習器
  • 二.線性回歸(二)
    2.APIsklearn.linear_model.SGDRegressor(loss="squared_loss", fit_intercept=True, learning_rate ='invscaling', eta0=0.01) 支持不同的loss函數和正則化懲罰項來擬合線性回歸模型參數 loss
  • [PRML]線性回歸模型--線性基函數模型
    這通常稱為線性回歸(linear regression)。,這個暗示了模型的限制。『tanh』函數的線性組合。在監督學習中如回歸和分類,我們不是尋找輸入變量的分布模型。通過限制模型的有效複雜度,正則化使得複雜模型可以在有限大小的數據集上進行訓練,而不會出現嚴重的過擬合。
  • 廣義線性模型與邏輯回歸
    分類問題是機器學習中常見的一種方法,本文將以二分類為切入點,引出邏輯回歸模型。
  • 線性模型(三)邏輯回歸
    上述的表達式f可以按照指數的形式改寫成式(9-13)參考表9-1第二行,從廣義線性模型的定義來看,邏輯回歸實際上是連結函數為 的廣義線性模型,並假設因變量服從二項分布。:稱為機率(Odds)。至此,經過連結函數轉化後的原值域為正、負無窮該變換稱為logit變換,經過logit變換後可以順利地使用線性回歸模型擬合觀察值的對數機率。
  • 各種線性回歸
    一.sklearn中的各種線性回歸1,普通線性回歸
  • [PRML]回歸模型--貝葉斯線性回歸
    本文包含以下內容:1 簡介在討論線性回歸模型的最大似然的參數設置中,我們已經看到由基函數的數量控制的有效模型的複雜性需要根據數據集的大小控制。獨立的持有(hold-out)數據可以用來確定模型的複雜性,但是這可能在計算上是昂貴的,並且會浪費有價值的數據。因此我們轉向線性回歸的貝葉斯處理,這將避免最大似然的過擬合問題,也將導致僅使用訓練數據自動確定模型複雜度的方法。
  • 線性模型(一)普通線性回歸到廣義線性模型
    同時提醒讀者避免只從字面理解「線性」帶來誤會,即線性模型只能解決線性問題。本章將線性模型定位和表述為在數學表達式上具有線性的表示方式的數學模型,包含普通線性回歸模型和廣義線性模型(線性支持向量機本章不進行講述)。
  • 通過正則化擴展回歸庫
    這個GitHub存儲庫包含你自己運行分析所需的一切:https://github.com/PaulHiemstra/lasso_tsfresh_article/blob/master/lasso_tsfresh_article.ipynb介紹對於許多數據科學家來說,最基本的模型是多元線性回歸。
  • 吳恩達《Machine Learning》精煉筆記 3:回歸問題和正則化
    主要講解的內容包含:邏輯回歸代價函數線性回歸和邏輯回歸的比較正則化問題分類問題引入一個新的模型:邏輯回歸,該模型的輸出變量範圍始終在0和1之間。邏輯回歸模型的假設是:線性模型中代價函數是模型誤差的平方和 :
  • 廣義線性模型學習
    貝葉斯回歸貝葉斯回歸可以用於在預估階段的參數正則化: 正則化參數的選擇不是通過人為的選擇,而是通過手動調節數據值來實現。上述過程可以通過引入 無信息先驗 於模型中的超參數來完成。 在 嶺回歸 中使用的  正則項相當於在  為高斯先驗條件下,且此先驗的精確度為  求最大後驗估計。在這裡,我們沒有手工調參數 lambda ,而是讓他作為一個變量,通過數據中估計得到。
  • 線性回歸進階——嶺回歸和lasso回歸
    說起線性回歸大家肯定都不陌生,我們經常用這種手段來揭示一組變量間的相關性,一般情況下,我們用線性函數來對數據做出擬合,通過殘差來計算差異度
  • 線性回歸(Linear Regression)原理小結
    模型函數2. 損失函數3. 學習算法4. 線性回歸推廣5. 加正則化項的線性回歸6. 線性回歸模型綜合評價7. 參考1.線性回歸推廣4.1 多項式回歸    以一個只有兩個特徵的p次方多項式回歸的模型為例進行說明:,然後令 ,這樣我們就得到了下式:此時,一個二元的多項式回歸,轉化為了一個五元的線性回歸,然後便可以使用線性回歸的方法來完成算法。
  • python回歸分析總結--回歸模型及調優
    4、python的APIstatsmodels.formula.api.OLS():普通最小二乘模型擬合- - 常用scipy.stats.linregress(): 線性擬合scipy.optimize.curve_fit():回歸函數擬合5、python機器學習線性模型API正規方程法計算sklearn.linear_model.LinearRegressiont
  • 機器學習開放課程(四)線性分類與線性回歸
    這次我們將呈現最重要的主題——線性模型。如果你準備好了數據,打算開始訓練模型,那麼你最有可能首先嘗試線性回歸或邏輯回歸(具體取決於你的任務是回歸還是分類)。本文包括線性模型的理論和實踐(在實際任務中的使用)。此外,你將參加一項Kaggle競賽,解決一個基於瀏覽歷史識別用戶的問題。
  • sklearn學習(二):邏輯回歸
    從線性回歸到邏輯回歸        我們知道,線性回歸的模型是求出輸出特徵向量Y和輸入樣本矩陣X之間的線性關係係數θ,滿足Y=Xθ。此時我們的Y是連續的,所以是回歸模型。如果我們想要Y是離散的話,怎麼辦呢?一個可以想到的辦法是,我們對於這個Y再做一次函數轉換,變為g(Y)。
  • 機器學習中的正則化到底是什麼意思?
    L1正則化和L2正則化可以看做是損失函數的懲罰項。所謂『懲罰』是指對損失函數中的某些參數做一些限制。對於線性回歸模型,使用L1正則化的模型建叫做Lasso回歸,使用L2正則化的模型叫做Ridge回歸(嶺回歸)。下圖是Python中Lasso回歸的損失函數,式中加號後面一項α||w||1即為L1正則化項。
  • 8種用Python實現線性回歸的方法
    拋開涉及大量數統的模型分析和檢驗不說,你真的就能熟練應用線性回歸了麼?未必!「寶刀不老」的線性回歸時至今日,深度學習早已成為數據科學的新寵。即便往前推10年,SVM、boosting等算法也能在準確率上完爆線性回歸。
  • 機器學習套路:線性回歸
    (點擊上方藍字,快速關注我們)轉自:sharkdtuhttp://sharkdtu.com/posts/ml-linear-regression.html好文投稿, 請點擊 → 這裡了解詳情線性回歸可以說是機器學習中最簡單
  • 最全的線性回歸算法庫總結—— scikit-learn篇
    ,這些類庫都可以用來做線性回歸分析,本文就對這些類庫的使用做一個總結,重點講述這些線性回歸算法庫的不同和各自的使用場景。Lasso損失函數:線性回歸的L1正則化通常稱為Lasso回歸,它和Ridge回歸的區別是在損失函數上增加了的是L1正則化的項,而不是L2正則化項。