日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【scikit-learn基础】--『监督学习』之 岭回归

發(fā)布時間:2023/12/29 windows 36 coder
生活随笔 收集整理的這篇文章主要介紹了 【scikit-learn基础】--『监督学习』之 岭回归 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

嶺回歸(Ridge Regression)是一種用于處理共線性數(shù)據(jù)的線性回歸改進方法。
和上一篇用基于最小二乘法的線性回歸相比,它通過放棄最小二乘的無偏性,
以損失部分信息、降低精度為代價來獲得更實際和可靠性更強的回歸系數(shù)。

1. 概述

嶺回歸的模型對于存在大量相關(guān)特征(這些特征之間存在很高的相關(guān)性)的數(shù)據(jù)時效果遠好于基于最小二乘法的線性模型。

原因就是它通過給系數(shù)的大小增加一個約束條件(即L2正則化項),來防止模型過度擬合訓練數(shù)據(jù)。
損失函數(shù)一般定義為:\(L(w) = (y-wX)^2+\lambda\parallel w\parallel_2\)
其中 \(\lambda\parallel w\parallel_2 = \lambda\sum_{i=1}^{n}w_i^2\),也就是 L2正則化項。

模型訓練的過程就是尋找讓損失函數(shù)\(L(w)\)最小的參數(shù)\(w\)。
也就等價于:\(\begin{align} & arg\ min(y-wX)^2 \\ & s.t. \sum w_{ij}^2 < s \end{align}\)
這兩個公式表示,在滿足約束條件 \(\sum w_{ij}^2 < s\)的情況下,計算 \((y-wX)^2\)的最小值。

2. 創(chuàng)建樣本數(shù)據(jù)

嶺回歸適用于特征之間有很高關(guān)聯(lián)性的數(shù)據(jù)集。
所以用scikit-learn中的加州住房數(shù)據(jù)集,這個數(shù)據(jù)集有8個房屋售價相關(guān)的屬性,屬性之間關(guān)聯(lián)性高。
數(shù)據(jù)集的文件獲取可以參考:TODO

從上面的文章中下載數(shù)據(jù)集(是一個zip壓縮文件),
如下例所示,下載之后在 D:\share\data 中解壓,就可以加載了。

import os
from sklearn.datasets import fetch_california_housing

home_dir = "D:\share\data"
data = fetch_california_housing(data_home=os.path.join(home_dir, "cal_housing"))
X = data["data"]
y = data["target"]

大約有2萬多條數(shù)據(jù)。

3. 模型訓練

數(shù)據(jù)加載之后,首先劃分訓練集和測試集。

from sklearn.model_selection import train_test_split

# 分割訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)

然后用嶺回歸模型訓練數(shù)據(jù):

from sklearn.linear_model import Ridge

# 初始化嶺回歸線性模型
reg = Ridge()
# 訓練模型
reg.fit(X_train, y_train)

這里,用的Ridge()模型的默認參數(shù),它的一些主要參數(shù)如下(訓練模型時可根據(jù)情況調(diào)整參數(shù)):

  1. alpha:控制正則化強度的常量,也就是上面公式中的 \(\lambda\),默認值1,設(shè)置為0時,就是最小二乘法
  2. fit_intercept:是否擬合此模型的截距,默認 True
  3. copy_X:是否復制X(也就是訓練數(shù)據(jù)),默認 True,設(shè)置為False的話,有可能會改變訓練數(shù)據(jù)
  4. tol:算法迭代時,收斂的精度上限
  5. solver:迭代時使用的求解器,包含** {auto, svd, cholesky, lsqr, sparse_cg, sag, saga, lbfgs}** 等算法,默認 auto(根據(jù)數(shù)據(jù)類型自動選擇求解器)

最后,用測試數(shù)據(jù)來驗證訓練后模型的性能。

y_pred = reg.predict(X_test)
mse = metrics.mean_squared_error(y_test, y_pred)
r2 = metrics.r2_score(y_test, y_pred)
m_error = metrics.median_absolute_error(y_test, y_pred)

print("均方誤差:{}".format(mse))
print("復相關(guān)系數(shù):{}".format(r2))
print("中位數(shù)絕對誤差:{}".format(m_error))

# 運行結(jié)果
均方誤差:0.0029948538129997903
復相關(guān)系數(shù):0.9987534427417275
中位數(shù)絕對誤差:0.049467455621301726

從結(jié)果來看,模型的性能還不錯,均方誤差中位數(shù)絕對誤差都比較小,而復相關(guān)系數(shù)高,說明在測試數(shù)據(jù)中,預(yù)測的值和實際的值比較接近。

4. 總結(jié)

總之,嶺回歸在很多場景下都有應(yīng)用,例如多元線性回歸、時間序列預(yù)測、特征選擇等。
它的主要優(yōu)點是可以處理共線性數(shù)據(jù),并且在加入噪聲的情況下會有更穩(wěn)定的性能。

然而,由于其對數(shù)據(jù)的縮放敏感嶺回歸的一個主要局限性是它可能對數(shù)據(jù)的尺度非常敏感
此外,嶺回歸正則化參數(shù)的選擇通常需要一些經(jīng)驗或者實驗來確定,這也增加了其應(yīng)用的復雜性。

PS.
共線性是指特征之間存在高度相關(guān)性,這可能導致線性回歸模型的不穩(wěn)定。

總結(jié)

以上是生活随笔為你收集整理的【scikit-learn基础】--『监督学习』之 岭回归的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。