線性回歸學習筆記

一、線性回歸簡介

1. 核心定義

線性回歸是一種通過屬性的線性組合進行預測的線性模型,核心目標是找到一條直線(二維)、一個平面(三維)或更高維的超平面,使模型的預測值與真實值之間的誤差最小化。

2. 適用場景

適用于回歸任務(預測連續型輸出,如房價、銷售額、溫度等),例如通過“房屋大小”預測“房屋價格”,通過“房間數量”“面積”等多特征預測“波士頓房價”。

3. 模型數學形式

(1)單特征線性回歸(簡單線性回歸)

僅含1個輸入特征(如房屋大小),模型形式為:
f(x) = w_0 + w_1x
x:輸入特征(如房屋大小);

?? ?? ? w_0:截距(直線與y軸交點,也可寫作b);

?? ?? ? w_1:特征權重(直線斜率,反映特征對預測結果的影響程度);

?? ?? ? f(x):模型預測值(如預測房價)。

(2)多特征線性回歸(多元線性回歸)

含d個輸入特征(如房間數、面積、樓層等),模型的一般形式為:
f(x) = w_1x_1 + w_2x_2 + ... + w_dx_d + b
x_1, x_2, ..., x_d:d個輸入特征的取值;

?? ?? ? w_1, w_2, ..., w_d:對應特征的權重;

?? ?? ? b:截距;

?? ?? ? 向量形式(簡化表達):f(x) = \boldsymbol{w}^T\boldsymbol{x} + b(\boldsymbol{w}為權重向量,\boldsymbol{x}為特征向量,\boldsymbol{w}^T表示\boldsymbol{w}的轉置)。

二、模型求解:最小二乘法

1. 核心思想

線性回歸通過最小二乘法求解最優參數(w和b),其本質是最小化“均方誤差”——均方誤差對應“歐氏距離”,即找到一條直線/超平面,使所有樣本到該直線/超平面的歐氏距離之和最小。

2. 誤差函數(損失函數)

需最小化的誤差函數(均方誤差對應的總損失)為:
E(w,b) = \sum_{i=1}^{m} (y_i - f(x_i))^2 = \sum_{i=1}^{m} (y_i - (wx_i + b))^2
m:樣本數量;

?? ?? ? y_i:第i個樣本的真實值;

?? ?? ? f(x_i) = wx_i + b:第i個樣本的預測值;

?? ?? ? E(w,b):所有樣本的“殘差平方和”(預測值與真實值差值的平方和)。

3. 參數求解過程

求解w和b的過程稱為“參數估計”,步驟如下:

?? ?1.?? ?求導:對E(w,b)分別關于w和b求偏導數,得到誤差隨參數變化的趨勢;

?? ?2.?? ?令導數為0:偏導數為0時,誤差函數E(w,b)取得最小值,據此解出最優參數:

?? ?? ? 最優權重w:w = \frac{\sum_{i=1}^{m} (x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^{m} (x_i - \bar{x})^2}(\bar{x}為特征x的均值,\bar{y}為真實值y的均值);

?? ?? ? 最優截距b:b = \bar{y} - w\bar{x}。

三、線性回歸的評估指標

1. 殘差平方和(SSE/RSS)

?? ?? ? 定義:所有樣本預測值與真實值差值的平方和,反映模型預測的總誤差。

?? ?? ? 公式:SSE = \sum_{i=1}^{m} (y_i - \hat{y}_i)^2(\hat{y}_i為第i個樣本的預測值);

?? ?? ? 特點:值越小,模型擬合效果越好;但受樣本數量影響(樣本越多,SSE可能越大),無法直接橫向對比不同數據集的模型。

2. 均方誤差(MSE)

?? ?? ? 定義:SSE的平均值,消除了樣本數量的影響,更適合對比不同模型。

?? ?? ? 公式:MSE = \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2;

?? ?? ? 特點:值越小,模型擬合效果越好;單位是“真實值單位的平方”(如房價預測中,單位為“元2”),不夠直觀。

3. 決定系數(R^2)

?? ?? ? 定義:衡量模型對數據的解釋能力,反映“模型能解釋的變異占總變異的比例”,是最常用的評估指標。

?? ?? ? 公式:
R^2 = 1 - \frac{SSE}{SST} = 1 - \frac{\sum_{i=1}^{m} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{m} (y_i - \bar{y})^2}
SST:總平方和(真實值與真實值均值的差值平方和,反映數據本身的總變異);

?? ?? ? 簡化形式:R^2 = 1 - \frac{MSE}{Var(y)}(Var(y)為真實值y的方差)。

?? ?? ? 特點:

?? ?? ? 取值范圍:(-\infty, 1];

?? ?? ? 越接近1:模型擬合效果越好(模型能解釋大部分數據變異);

?? ?? ? 等于1:模型完全擬合所有樣本;

?? ?? ? 小于0:模型效果差于“直接用真實值均值預測”(此時模型無意義)。

四、線性回歸代碼實現(Python sklearn)

1. 核心類

sklearn.linear_model.LinearRegression():用于構建線性回歸模型(支持單特征和多特征)。

2. 關鍵參數
參數 含義與取值?
fit_intercept 是否計算模型截距():- True(默認):模型包含截距;- False:模型不包含截距(直線過原點),需確保數據已中心化。?
normalize 是否在訓練前對數據進行歸一化:- False(默認):不歸一化;- True:對特征進行歸一化(均值為0、標準差為1),僅當fit_intercept=True時生效。?

3. 課堂練習:波士頓房價預測

核心步驟(示例思路):

?? ?1.?? ?加載數據:導入波士頓房價數據集(或類似房價數據集,含特征如房間數、距離市中心距離等,目標為房價);

?? ?2.?? ?數據預處理:處理缺失值、標準化特征(可選,若特征量綱差異大);

?? ?3.?? ?劃分數據集:將數據分為訓練集(用于訓練模型)和測試集(用于評估模型);

?? ?4.?? ?訓練模型:用LinearRegression()擬合訓練數據;

?? ?5.?? ?模型評估:計算測試集的MSE、R^2等指標,判斷模型效果。

示例代碼框架:
from sklearn import linear_model
from sklearn.datasets import load_boston ?# 加載波士頓房價數據集(注意:部分版本需手動安裝)
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

1. 加載數據
boston = load_boston()
X = boston.data ?# 特征(如房間數、面積等)
y = boston.target ?# 目標(房價)

2. 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

?3. 初始化并訓練模型
model = linear_model.LinearRegression(fit_intercept=True, normalize=False)
model.fit(X_train, y_train)

4. 預測與評估
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred) ?# 計算MSE
r2 = r2_score(y_test, y_pred) ?# 計算R2

print(f"均方誤差(MSE):{mse:.2f}")
print(f"決定系數(R2):{r2:.2f}")
print(f"模型截距(b):{model.intercept_:.2f}")
print(f"特征權重(w):{model.coef_}")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94022.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94022.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94022.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kotlin 中適用集合數據的高階函數(forEach、map、filter、groupBy、fold、sortedBy)

在 Kotlin 中,高級函數(Higher-Order Functions)是一個非常強大的特性。高級函數是指可以將函數作為參數傳遞,或者將函數作為返回值返回的函數。這種特性使得代碼更加靈活和可復用。 使用高級函數可以方便地對集合進行操作,如 map、filter、reduce 等。 在事件驅動的編程中…

Redis 哈希表的核心——`dictEntry` 結構體

接上一篇 Redis 哈希表的本質:數組里存的是什么 Redis 哈希表的核心——dictEntry 結構體,是真正承載我們存儲的鍵值對數據的那個結構。 它的定義非常簡潔,但設計得很巧妙。以下是其 C 語言代碼(在 Redis 源碼 src/dict.h 中&a…

Jsqlparser + Freemarker + Vue3 數據透視報表設計方案

1. 目標與前置條件目標:基于 JSQLParser FreeMarker Vue3 構建一套“可配置的數據透視報表”能力,實現從任意基礎 SQL/視圖出發,按維度/指標靈活聚合、篩選、排序、分頁、導出,并支持鉆取、聯動、TopN、同比環比等常見分析操作。…

SpringBoot3 Ruoyi芋道管理后臺vben5.0

新技術棧(Vue3、Vite6、TypeScript、SpringBoot3/SpringCloud基于Vben5.0最新版本,全面采用Vue3 Vite6 Ant Design Vue TypeScript技術棧,并同時支持SpringBoot3單體架構與SpringCloud微服務架構前端技術棧:Vue3 Vite6 TS A…

K8S - NetworkPolicy的使用

1 前置條件2 控制范圍3 隔離類型4 如何識別5 主要字段6 案例演示 前置條件 網絡策略通過網絡插件來實現。 要使用網絡策略,你必須使用支持 NetworkPolicy 的網絡解決方案。 創建一個 NetworkPolicy 資源對象而沒有控制器來使它生效的話,是沒有任何作用的…

Linux:TCP協議

TCP是一個面向連接的、可靠的、基于字節流的傳輸層協議。文次我們會通過介紹TCP的報頭并通過分析各字段的用途來進一步解釋其核心特性:可靠傳輸: 有確認應答、超時重傳、確保有序。流量控制和擁塞控制: 動態調節發送速率,防止丟包與擁塞。面向…

uniapp使用map打包app后自定義氣泡不顯示解決方法customCallout

前言:使用uniapp開發后在小程序可以正常顯示,但是運行打包成App后就不顯示了,其實這一塊對于uniapp框架開發來說,是有系統性的bug,如果你再開發時使用的是vue文件進行,就會出現這個問題。解決方法&#xff…

【typenum】 22 類型級別二進制對數運算(Logarithm2)

一、源碼 這段代碼實現了一個類型級別的二進制對數運算系統 定義(type_operators.rs) /// A **type operator** for taking the integer binary logarithm of Self. /// /// The integer binary logarighm of n is the largest integer m such /// that …

golang 非error錯誤分類

1.應用級別,可recover這些 panic 一般是 邏輯或使用不當導致的運行時錯誤,Go 程序可以用 recover 捕獲并繼續運行:類型示例描述類型不一致atomic.Value 存不同類型 v.Store(100); v.Store("abc")panic: store of inconsistently ty…

【Ansible】變量與敏感數據管理:Vault加密與Facts采集詳解

1. 變量Ansible利用變量存儲可重復使用的值,可以簡化項目的創建和維護,減少錯誤數量。1.1 變量名稱由字符串組成,必須以字母開頭,并且只能含有字母、數字和下劃線,和其它編程語言很類似。1.2 常見變量要創建的用戶要安…

ROS2下YOLO+Moveit+PCL機械臂自主避障抓取方案

整體運行架構 1.運行相機取像節點 . ./install/setup.bash ros2 launch orbbec_camera gemini_330_series.launch.py depth_registration:true 2.運行根據圖像x,y獲取z的service 基本操作記錄: 創建python包,在src目錄下 ros2 pkg create test_python_topic --bu…

快速入門Vue3——初體驗

目錄 前言 一、搭建環境 1.1、安裝Node.js 1.2、安裝Vite 二、項目創建 三、運行項目 四、集成Pinia 4.1、Pinia介紹 4.2、Pinia安裝 五、集成VueUse 5.1、vueuse簡介 5.2、vueuse安裝 六、集成Vant 6.1、Vant簡介 6.2、Vant安裝 前言 本專欄主要介紹如何使用…

深入理解Kubernetes核心:標簽與標簽選擇器實戰解析

在管理 Kubernetes 集群時,隨著 Pods、Services 等資源數量的增長,如何有效地組織和篩選它們,成為了一個核心問題。Kubernetes 為此提供了一個簡單卻極其強大的機制:標簽(Labels)和標簽選擇器(L…

哈希和字符串哈希

哈希(Hash) Hash 表 Hash 表又稱為散列表,一般由 Hash 函數(散列函數)與鏈表結構共同實現。與離散化思想類似,當我們要對若干復雜信息進行統計時,可以用 Hash 函數把這些復雜信息映射到一個容…

【Docker基礎】Docker-Compose核心配置文件深度解析:從YAML語法到高級配置

目錄 前言 1 YAML基礎語法解析 1.1 YAML格式簡介 1.2 Docker-compose中的YAML語法規則 1.3 YAML數據類型在Compose中的應用 2 docker-compose.yml文件結構剖析 2.1 基本文件結構 2.2 版本聲明詳解 3 services配置深度解析 3.1 服務定義基礎 3.2 鏡像與構建配置 3.3…

如何判斷是否應該為了一個小功能而引入一個大體積的庫

在軟件開發中,判斷是否應該為了一個看似微小的功能,而引入一個大體積的第三方庫,是一項極其重要的、需要進行審慎的“投入產出比”分析的技術決策。這個決策,絕不能,僅僅基于“實現功能的便利性”,而必須&a…

相機定屏問題分析五:【跳幀異常】照片模式1x以上的焦段拍照之后定屏

【關注我,后續持續新增專題博文,謝謝!!!】 上一篇我們講了: 這一篇我們開始講: 相機定屏問題分析五:【跳幀異常】照片模式1x以上的焦段拍照之后定屏9573412 目錄 一、問題背景 二…

Non-stationary Diffusion For Probabilistic Time Series Forecasting論文閱讀筆記

Non-stationary Diffusion For Probabilistic Time Series Forecasting 摘要 時間序列數據受到潛在的物理動力學和外部影響,其不確定性通常隨時間而變化。現有的去噪擴散概率模型(DDPMs)受到加性噪聲模型(ANM)的恒定方…

解決Docker 無法連接到官方鏡像倉庫

這個錯誤: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)表示 Docker 無法連接到官方鏡像倉庫 registry-1.docker…

解決RAGFlow啟動時Elasticsearch容器權限錯誤的技術指南

文章目錄 問題現象 根本原因分析 解決方案步驟 1. 定位宿主機數據目錄 2. 修復目錄權限 3. 驗證權限狀態 4. 重啟服務 5. 檢查啟動狀態 永久解決方案:優化Docker Compose配置 高級故障排除 技術原理 問題現象 在啟動RAGFlow項目時,執行 docker logs ragflow-es-01 發現Elast…