人工智能-python-機器學習-線性回歸與梯度下降:理論與實踐

文章目錄

  • 線性回歸與梯度下降:理論與實踐
    • 1. 引言
    • 2. 回歸分析
      • 2.1 什么是回歸?
      • 2.2 線性回歸
      • 2.3 損失函數
      • 2.4 多參數回歸
    • 3. 參數求解:最小二乘法
      • 3.1 最小二乘法 MSE
      • 3.2 最小二乘法的優缺點
        • 優點:
        • 缺點:
    • 4. 梯度下降
      • 4.1 梯度下降概念
      • 4.2 梯度下降步驟
      • 4.3 梯度下降公式
      • 4.4 學習率
      • 4.5 自己實現梯度下降
      • 4.6 梯度下降的變種
        • BGD(批量梯度下降)
        • SGD(隨機梯度下降)
        • MBGD(小批量梯度下降)
      • 4.7 梯度下降優化
    • 5. 使用場景
    • 6. 優缺點
      • 6.1 線性回歸
        • 優點:
        • 缺點:
      • 6.2 梯度下降
        • 優點:
        • 缺點:
    • 7. 總結


線性回歸與梯度下降:理論與實踐

1. 引言

回歸分析是一種常用的統計方法,用于建立一個因變量與一個或多個自變量之間的關系模型。本文將重點討論線性回歸梯度下降,兩者是數據科學和機器學習中常見的基礎方法。

2. 回歸分析

2.1 什么是回歸?

回歸分析是一種統計方法,用于建模因變量(目標值)與自變量(特征)之間的關系。在回歸分析中,目標是找到一個數學函數來預測因變量的值。

  • 回歸定義:通過建立數學模型,研究自變量(X)與因變量(Y)的映射關系 ?
  • 核心價值:預測連續型變量(如房價預測、銷量分析),揭示變量間因果關系
  • 回歸模型:預測連續值,如房價、溫度、銷售額等。

2.2 線性回歸

線性回歸是回歸分析中最簡單的一種方法,它假設因變量與自變量之間存在線性關系。

  • 線性回歸模型的公式為:

    y=β0+β1x1+β2x2+...+βnxn+?y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... + \beta_n x_n + \epsilon y=β0?+β1?x1?+β2?x2?+...+βn?xn?+?

    其中:

    • yyy 是因變量。
    • x1,x2,...,xnx_1, x_2, ..., x_nx1?,x2?,...,xn? 是自變量(特征)。
    • β0\beta_0β0? 是截距(模型基準點)。
    • β1,β2,...,βn\beta_1, \beta_2, ..., \beta_nβ1?,β2?,...,βn? 是回歸系數(特征權重系數)。
    • ?\epsilon? 是誤差項。

2.3 損失函數

損失函數用于度量模型預測值與實際值之間的誤差。在線性回歸中,通常使用 均方誤差 (MSE) 作為損失函數。

  • 數學本質:誤差平方和的期望最小化

  • 幾何意義:尋找最佳擬合超平面(高維空間中的直線)📐

  • 均方誤差(MSE) 公式:

    MSE=1m∑i=1m(yi?y^i)2MSE = \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2 MSE=m1?i=1m?(yi??y^?i?)2

    其中:

    • yiy_iyi? 是實際值。
    • y^i\hat{y}_iy^?i? 是預測值。
    • mmm 是樣本數量。

2.4 多參數回歸

在多參數回歸中,目標是通過多個特征來預測一個因變量。例如,在房價預測中,可能有多個因素(如面積、房間數量、位置等)影響房價。多參數回歸即通過多個自變量來建立線性關系。

3. 參數求解:最小二乘法

最小二乘法(Least Squares)是一種優化方法,常用于線性回歸中,用來找到最佳擬合的線。

3.1 最小二乘法 MSE

最小二乘法通過最小化損失函數(MSE)來求解回歸系數。在矩陣形式下,最小二乘法的公式為:

β^=(XTX)?1XTy\hat{\beta} = (X^T X)^{-1} X^T y β^?=(XTX)?1XTy

  • XXX 是樣本特征矩陣。
  • yyy 是目標變量。
  • β^\hat{\beta}β^? 是回歸系數向量。

前景知識:矩陣相關公式

  • 矩陣運算前提
    • 特征矩陣需滿秩(無多重共線性)
    • 樣本量 > 特征維度
  • 矩陣轉置(AT)T=A(A^T)^T = A(AT)T=A

  • 矩陣逆(AB)?1=B?1A?1(AB)^{-1} = B^{-1}A^{-1}(AB)?1=B?1A?1

    from sklearn.linear_model import LinearRegressionmodel = LinearRegression().fit(X_train, y_train)print(f"系數: {model.coef_}, 截距: {model.intercept_}")

3.2 最小二乘法的優缺點

優點:
  • 簡單且易于理解。
  • 對小數據集表現良好,計算效率高。
缺點:
  • 對異常值敏感。
  • 需要滿足線性假設。

4. 梯度下降

梯度下降(Gradient Descent)是一種優化算法,用于最小化損失函數。它通過計算損失函數關于參數的梯度,并沿梯度的反方向更新參數。

4.1 梯度下降概念

梯度下降通過迭代的方式不斷優化參數,直到找到損失函數的最小值。假設我們有損失函數 L(θ)L(\theta)L(θ),梯度下降的更新公式為:

θ:=θ?α?θL(θ)\theta := \theta - \alpha \nabla_\theta L(\theta) θ:=θ?α?θ?L(θ)

  • θ\thetaθ 是模型參數。
  • α\alphaα 是學習率。
  • ?θL(θ)\nabla_\theta L(\theta)?θ?L(θ) 是損失函數關于參數的梯度。

4.2 梯度下降步驟

  1. 初始化參數:隨機或通過某種方式初始化參數。
  2. 計算梯度:計算損失函數對參數的偏導數。
  3. 更新參數:按照梯度反方向更新參數。
  4. 迭代:重復以上步驟,直到損失函數收斂或達到最大迭代次數。

4.3 梯度下降公式

損失函數 L(θ)L(\theta)L(θ) 相對于參數 θ\thetaθ 的梯度計算公式為:

?θL(θ)=??θ(1m∑i=1m(yi?y^i)2)\nabla_\theta L(\theta) = \frac{\partial}{\partial \theta} \left( \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2 \right) ?θ?L(θ)=?θ??(m1?i=1m?(yi??y^?i?)2)

4.4 學習率

學習率(α\alphaα)決定了每次更新的步長大小。選擇一個合適的學習率非常重要:

  • 學習率過大,可能導致跳過最優解。
  • 學習率過小,收斂速度會很慢。

4.5 自己實現梯度下降

import numpy as np# 假設數據集X和y已經準備好
def gradient_descent(X, y, theta, alpha=0.01, iterations=1000):m = len(y)cost_history = []for i in range(iterations):predictions = X.dot(theta)error = predictions - ygradient = (1/m) * X.T.dot(error)theta = theta - alpha * gradientcost = (1/2*m) * np.sum(np.square(error))cost_history.append(cost)return theta, cost_history# 初始化theta,假設X和y已經定義
theta_initial = np.zeros(X.shape[1])
theta, cost_history = gradient_descent(X, y, theta_initial, alpha=0.01, iterations=1000)

4.6 梯度下降的變種

BGD(批量梯度下降)

在批量梯度下降中,每次迭代都使用整個訓練集計算梯度。它收斂穩定,但計算量大,尤其在數據集較大時。

SGD(隨機梯度下降)

在隨機梯度下降中,每次迭代使用一個樣本來計算梯度,收斂較快,但噪聲大。

MBGD(小批量梯度下降)

小批量梯度下降結合了BGD和SGD的優點。每次迭代使用一個小批量的樣本進行計算,能有效減少計算開銷并加速收斂。

4.7 梯度下降優化

為加速梯度下降的收斂速度,可以使用動量法(Momentum)、**自適應梯度(AdaGrad)**等優化算法。

5. 使用場景

  • 線性回歸:適用于預測房價、銷售量、溫度等連續變量,尤其是特征之間存在線性關系時。
  • 梯度下降:適用于大數據集或高維數據集,尤其是在無法直接求解閉式解(如最小二乘法)時。

6. 優缺點

6.1 線性回歸

優點:
  • 簡單易懂。
  • 計算效率高,尤其是數據量小的時候。
缺點:
  • 對異常值敏感。
  • 假設特征與目標變量之間存在線性關系。

6.2 梯度下降

優點:
  • 適用于大規模數據集,尤其是在線性回歸無法使用最小二乘法時。
  • 可以處理復雜的非線性模型。
缺點:
  • 可能收斂到局部最優解。
  • 需要選擇合適的學習率。

7. 總結

本文介紹了線性回歸梯度下降的基本理論及實現方法,分析了它們的優缺點和應用場景。通過結合這些方法,能夠為不同的數據問題提供高效的解決方案。


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

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

相關文章

前端,elment-plus組件:表格,分頁,對話框,表單

Element Plus 核心特性組件體系:表單、表格、彈窗、導航等高頻組件設計理念主題定制:Sass 變量覆蓋與暗黑模式無縫切換國際化支持:多語言動態切換的實現機制TypeScript 支持:完整的類型定義與開發友好性快速上手指南安裝與基礎配置…

【LeetCode】6. Z 字形變換

文章目錄6. Z 字形變換題目描述示例 1:示例 2:示例 3:提示:解題思路算法分析問題本質分析Z字形排列過程詳解Z字形排列可視化方向控制策略數學規律法詳解各種解法對比算法流程圖邊界情況處理時間復雜度分析空間復雜度分析關鍵優化點…

spring文件下載的方式

spring文件下載的方式方式一:通過ResponseEntity<Resource> 方式來下載方式二:通過ResponseEntity<StreamingResponseBody> 方式來下載方式三:通過Servlet原生下載方式四:通過ResponseEntity<byte[]> 方式來下載四種下載方式的對比1、核心特性對比2、典型場景…

寫一個redis客戶端軟件,參考 Another Redis Desktop Manager 的設計風格。

一個基于 Electron 開發的現代化 Redis 桌面客戶端&#xff0c;參考 Another Redis Desktop Manager 的設計風格。 github倉庫地址 https://github.com/henkuoai/redis-man-pc

Web3: DeFi借貸的安全基石, 了解喂價與清算機制的原理與重要性

今天我們要聊一個DeFi世界里至關重要&#xff0c;但又時常被誤解的話題&#xff1a;為什么DeFi協議需要定期更新喂價和執行清算&#xff1f; 如果大家參與過DeFi借貸&#xff0c;大家可能看到過“清算”這個詞&#xff0c;甚至會有點談虎色變。但實際上&#xff0c;清算和為其提…

「iOS」————響應者鏈與事件傳遞鏈

iOS學習響應者鏈和事件傳遞鏈傳遞鏈&#xff1a;hitTest:withEvent**pointInside:withEvent**響應鏈第一響應者和最佳響應者觸摸事件&#xff08;UITouch&#xff09;UIGestureRecognizer&#xff08;手勢識別器&#xff09;響應者鏈和事件傳遞鏈 iOS事件的主要由&#xff1a;…

修復圖像、視頻和3D場景的AI工具–Inpaint Anything

TL; DR&#xff1a;用戶可以通過單擊來選擇圖像中的任何對象。借助強大的視覺模型&#xff0c;例如SAM、LaMa和穩定擴散 (SD)&#xff0c;Inpaint Anything能夠順利地移除對象&#xff08;即Remove Anything&#xff09;。此外&#xff0c;在用戶輸入文本的提示下&#xff0c;I…

java -jar xxx.jar 提示xxx.jar中沒有主清單屬性報錯解決方案

xxx.jar 中沒有主清單屬性 &#xff08;no main manifest attribute&#xff09;解決方案 java -jar xxx.jar 提示xxx.jar中沒有主清單屬性報錯解決方案 這個錯通常出現在你用 java -jar xxx.jar 啟動&#xff0c;但 JAR 的 META-INF/MANIFEST.MF 里沒有 Main-Class 條目&#…

Myqsl建立庫表練習

目錄 一、windows中選擇一種方式安裝Mysql8.0 二、新建產品庫mydb6_product 1. 新建3張表如下&#xff1a; 1&#xff09;employees表 2&#xff09;orders表 3&#xff09;invoices表 三、新建員工庫mydb8_worker&#xff0c;添加自定義表內容并插入數據 1. 新建庫表 2. 插…

STM32 輸入捕獲,串口打印,定時器,中斷綜合運用

實驗目的 使用定時器 2 通道 2 來捕獲按鍵 2 按下時間&#xff0c;并通過串口打印。 計一個數的時間&#xff1a;1us&#xff0c;PSC71&#xff0c;ARR65535 下降沿捕獲、輸入通道 2 映射在 TI2 上、不分頻、不濾波輸入捕獲原理定時器輸入捕獲實驗配置步驟測量按鍵按下時長思路…

Nacos-2--Nacos1.x版本的通信原理

在Nacos 1.x版本中&#xff0c;客戶端長輪詢&#xff08;Long Polling&#xff09;和服務端UDP主動推送是兩種不同的機制&#xff0c;分別用于配置管理和服務發現場景。它們的核心目標都是實現動態更新的實時感知&#xff0c;但實現方式、數據內容和適用場景完全不同。 1、長輪…

機器學習——09 聚類算法

1 聚類算法聚類算法&#xff1a; 是一種無監督學習算法&#xff0c;它不需要預先知道數據的類別信息&#xff0c;而是根據樣本之間的相似性&#xff0c;將樣本劃分到不同的類別中&#xff1b;不同的相似度計算方法&#xff0c;會得到不同的聚類結果&#xff0c;常用的相似度計算…

生成式AI應用生態的爆發與專業化演進:從零和博弈到正和共贏

2025年,生成式AI產業規模已突破7000億元,全球生成式AI市場規模預計在2028年達到2842億美元(IDC數據)。在這場技術革命中,AI基礎模型的分化已證明:差異化競爭而非同質化替代,才是推動產業發展的核心邏輯。如今,這一規律正從基礎模型層向應用生成平臺層蔓延——Lovable、…

Mysql——Sql的執行過程

目錄 一、Sql的執行過程流程圖解 二、Sql的執行過程流程 1.2.1、建立連接 1.2.2、服務層(緩存、解析器、預處理器、優化器、執行器) 1.2.2.1、緩存 1.2.2.2、解析器 1.2.2.3、預處理器 1.2.2.4、優化器 1.2.2.5、執行器 1.2.3、引擎層 一、Sql的執行過程流程圖解 Sql的執行過…

【Axure高保真原型】地圖路線和定位

今天和大家分享地圖路線和定位的原型模版&#xff0c;載入后&#xff0c;可以查看汽車行進路線和所在定位 提供了停靠和不停靠站點兩個案例&#xff0c;具體效果可以打開下方原型地址體驗或者點擊下方視頻觀看 【Axure高保真原型】地圖路線和定位【原型預覽含下載地址】 https…

【96頁PPT】華為IPD流程管理詳細版(附下載方式)

篇幅所限&#xff0c;本文只提供部分資料內容&#xff0c;完整資料請看下面鏈接 https://download.csdn.net/download/2501_92808811/91633108 資料解讀&#xff1a;華為IPD流程管理詳細版 詳細資料請看本解讀文章的最后內容 華為的集成產品開發&#xff08;IPD&#xff09;…

深度解析Mysql的開窗函數(易懂版)

SQL 開窗函數&#xff08;Window Function&#xff09;是一種強大的分析工具&#xff0c;它能在保留原有數據行的基礎上&#xff0c;對 "窗口"&#xff08;指定范圍的行集合&#xff09;進行聚合、排名或分析計算&#xff0c;解決了傳統GROUP BY聚合會合并行的局限性…

Java靜態代理和動態代理

Java靜態代理和動態代理 靜態代理 現在有一個計算類&#xff0c;有四個方法&#xff0c;加減乘除&#xff0c;如果需要給這四個方法都加上同一個邏輯&#xff0c;可以創建一個類作為代理類&#xff0c;把計算類注入到這個類中&#xff0c;然后再代理類中定義方法&#xff0c;并…

MySQL——MySQL引擎層BufferPool工作過程原理

目錄一、MySQL引擎層BufferPool工作過程圖解二、MySQL引擎層BufferPool工作過程原理一、MySQL引擎層BufferPool工作過程圖解 圖解 二、MySQL引擎層BufferPool工作過程原理 首先關閉自動提交&#xff0c;執行一條修改語句。 SET AUTOCOMMIT 0; update employees set name張三…

Python初學者筆記第二十二期 -- (JSON數據解析)

第31節課 JSON數據解析 1.JSON基礎概念 JSON 是一種輕量級的數據交換格式&#xff08;另一個叫XML&#xff09;&#xff0c;具有簡潔、易讀的特點&#xff0c;并且在不同編程語言之間能很好地實現數據傳遞。在 Python 中&#xff0c;json模塊能夠實現 Python 數據類型與 JSON 數…