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

歡迎訪問 生活随笔!

生活随笔

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

windows

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

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

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

1. 概述

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

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

模型訓練的過程就是尋找讓損失函數\(L(w)\)最小的參數\(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. 創建樣本數據

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

從上面的文章中下載數據集(是一個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萬多條數據。

3. 模型訓練

數據加載之后,首先劃分訓練集和測試集。

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)

然后用嶺回歸模型訓練數據:

from sklearn.linear_model import Ridge

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

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

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

最后,用測試數據來驗證訓練后模型的性能。

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("復相關系數:{}".format(r2))
print("中位數絕對誤差:{}".format(m_error))

# 運行結果
均方誤差:0.0029948538129997903
復相關系數:0.9987534427417275
中位數絕對誤差:0.049467455621301726

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

4. 總結

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

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

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。