【機器學習筆記Ⅰ】 8 多元梯度下降法

多元線性回歸的梯度下降法詳解

多元線性回歸(Multiple Linear Regression)是多個自變量(特征)與一個因變量(目標)之間的線性關系建模,梯度下降法用于優化模型參數(權重和偏置),最小化預測誤差(如均方誤差)。


1. 模型定義

(1) 假設函數(Hypothesis)

對于 ( n ) 個特征 ( x_1, x_2, \dots, x_n ) 和參數 ( w_1, w_2, \dots, w_n, b ),預測值 ( \hat{y} ) 為:
在這里插入圖片描述

(2) 代價函數(Cost Function)

使用**均方誤差(MSE)**衡量預測值與真實值的差距:
在這里插入圖片描述


2. 梯度下降法

(1) 參數更新公式

對每個參數 ( w_j ) 和偏置 ( b ),沿梯度反方向更新:
在這里插入圖片描述
在這里插入圖片描述


3. 算法步驟

  1. 初始化參數

    • 權重 ( \mathbf{w} ) 和偏置 ( b ) 初始化為0或隨機小值。
  2. 迭代更新

    • 計算當前參數下的預測值 ( \hat{y} )。
    • 計算梯度 ( \nabla_{\mathbf{w}} J ) 和 ( \frac{\partial J}{\partial b} )。
    • 更新參數:
      在這里插入圖片描述
  3. 終止條件

    • 達到最大迭代次數,或梯度變化小于閾值。

4. 代碼實現(Python)

import numpy as npdef gradient_descent(X, y, learning_rate=0.01, epochs=1000):m, n = X.shape  # m:樣本數, n:特征數w = np.zeros(n)  # 初始化權重b = 0            # 初始化偏置history = []     # 記錄損失變化for epoch in range(epochs):# 計算預測值y_pred = np.dot(X, w) + b# 計算梯度dw = (1/m) * np.dot(X.T, (y_pred - y))  # X.T是X的轉置db = (1/m) * np.sum(y_pred - y)# 更新參數w -= learning_rate * dwb -= learning_rate * db# 記錄損失(可選)loss = np.mean((y_pred - y)**2)history.append(loss)return w, b, history# 示例數據(添加偏置列)
X = np.array([[1, 2], [2, 3], [3, 4]])  # 2個特征
y = np.array([5, 8, 11])                 # y = 1*x1 + 2*x2 + 0# 運行梯度下降
w, b, history = gradient_descent(X, y, learning_rate=0.01, epochs=1000)
print("權重 w:", w)  # 應接近 [1., 2.]
print("偏置 b:", b)  # 應接近 0.

5. 關鍵細節

(1) 特征縮放(Feature Scaling)

  • 如果特征量綱差異大(如 ( x_1 \in [0,1] ), ( x_2 \in [100,1000] )),需先歸一化:
    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    X_scaled = scaler.fit_transform(X)
    
  • 原因:梯度下降在不同方向上的步長一致,量綱不均會導致收斂緩慢。

(2) 學習率選擇

  • 太大(如 ( \alpha=1 )):可能發散(損失震蕩上升)。
  • 太小(如 ( \alpha=10^{-6} )):收斂過慢。
  • 建議:嘗試 ( \alpha=0.01, 0.001 ),觀察損失曲線調整。

(3) 收斂判斷

  • 監控損失函數 ( J(\mathbf{w}, b) ) 的變化,若連續幾輪下降幅度小于閾值(如 ( 10^{-6} )),可提前終止。

6. 與解析解對比

  • 梯度下降:迭代逼近最優解,適合大規模數據(( m > 10^4 ))。
  • 解析解(正規方程):直接求閉式解 ( \mathbf{w} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y} ),但計算復雜度高(( O(n^3) )),僅適用于小規模數據。

7. 總結


|

核心公式

梯度下降是機器學習優化的基石,理解它才能掌握更復雜的模型(如邏輯回歸、神經網絡)!


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

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

相關文章

C++——從結構體到類與對象

C 類與對象詳解:從結構體到面向對象編程C 的面向對象編程(OOP)核心是 類(Class) 和 對象(Object)。類是用戶自定義的數據類型,用于封裝數據(屬性)和操作數據的…

專題:2025數據資產AI價值化:安全、戰略與應用報告|附400+份報告PDF、原數據表匯總下載

原文鏈接:https://tecdat.cn/?p42885 在數字經濟加速滲透的今天,數據作為核心生產要素的價值愈發凸顯。上市公司作為經濟高質量發展的微觀主體,其數據價值化進程不僅關乎企業自身競爭力,更折射出中國產業數字化轉型的深度與廣度。…

泛微虛擬視圖-數據虛擬化集成

文章目錄一、核心概念對比二、功能特性對比1. 數據操作能力2. 業務邏輯支持3. 性能表現三、技術實現差異1. 虛擬表單實現原理2. 視圖實現原理四、典型應用場景對比1. 虛擬表單適用場景2. 視圖適用場景五、配置與管理對比六、性能優化差異虛擬表單優化策略視圖優化策略七、企業級…

Ubuntu 下 MySql 使用

1.開發背景開發項目需要使用到數據庫,相對于輕量級的 SQLite,MySql 相對復雜一下,但是可以遠程訪問,還是比較舒服的。2.開發需求Ubuntu 安裝 MySql 服務端,Window 客戶端訪問 Ubuntu 數據庫。3.開發環境Ubuntu20.04 W…

QT開發技術 【qt應用限制只能啟動一個】

限制 Qt 程序只能啟動一個實例 在開發 Qt 應用程序時,可能需要限制程序只能運行一個實例,以避免重復啟動。以下是實現這一功能的幾種常用方法。 使用 QSharedMemory 限制單實例 通過共享內存判斷是否已有程序運行,如果存在則退出當前實例。 #include <QApplication&g…

Android 禁用beam傳輸

1、打開/packages/apps/Nfc/src/com/android/nfc/beam/BeamManager.java找到startBeamReceive、startBeamSend方法public boolean startBeamReceive(Context context,HandoverDataParser.BluetoothHandoverData handoverData) {synchronized (mLock) {if (mBeamInProgress) {re…

基于 ETL 工具實現人大金倉數據庫的數據遷移與整合實操指南

在企業數字化轉型的浪潮下&#xff0c;數據已經成為企業發展的核心資產。人大金倉數據庫憑借其穩定可靠的性能&#xff0c;在國內眾多企業中得到了廣泛應用。但隨著業務的不斷拓展和系統的更新迭代&#xff0c;數據遷移與整合的需求也日益凸顯。無論是將人大金倉數據庫的數據遷…

TCP 事務全面研究:從原理到優化與故障排除

一、引言 TCP&#xff08;傳輸控制協議&#xff09;作為互聯網的核心協議之一&#xff0c;已經在全球范圍內運行了近 50 年。自 1974 年由文頓?瑟夫和羅伯特?卡恩設計以來&#xff0c;TCP 經歷了多次修訂和優化&#xff0c;以適應不斷變化的網絡環境和應用需求。TCP 事務是指…

java實戰-Milvus 2.5.x版本向量庫-通過集合字段變更示例學習相關api demo

文章目錄前言java實戰-Milvus 2.5.x版本向量庫-通過集合字段變更示例學習相關api demo1. Milvus版本2. 示例邏輯分析3. 集合字段變更示例demo4. 測試前言 如果您覺得有用的話&#xff0c;記得給博主點個贊&#xff0c;評論&#xff0c;收藏一鍵三連啊&#xff0c;寫作不易啊^ _…

HashMap的get與put流程源碼深度解析

目錄 一、HashMap基礎結構 二、put操作流程分析 put操作關鍵步驟總結 三、get操作流程分析 get操作關鍵步驟總結 四、延伸 1.hash()方法 2. 擴容 resize()方法的主要邏輯&#xff1a; Java 8中對擴容的優化&#xff1a; 3. 轉向紅黑樹的條件 HashMap作為Java集合框架…

初識Neo4j之圖數據庫(二)

目錄 一、圖數據庫如何工作 二、為什么使用圖數據庫 Neo4j 圖數據庫以節點、關系和屬性的形式存儲數據&#xff0c;而不是用表或文檔進行數據存儲。這意味著用戶可以像在白板上畫草圖那樣來組織數據。而且&#xff0c;由于圖數據庫不受限于預先定義的數據模型&#xff0c;因此…

Python 中 ffmpeg-python 庫的詳細使用

文章目錄 一、ffmpeg-python庫概述1.1 ffmpeg-python庫介紹1.2 安裝1.3 優勢1.4 常用場景二、基本使用2.1 視頻信息獲取2.2 視頻轉碼三、視頻處理3.1 視頻裁剪3.2 視頻縮放3.3 視頻旋轉四、音頻處理4.1 提取音頻4.2 音頻混合五、高級使用5.1 添加水印5.2 視頻濾鏡5.3 視頻合成5…

JAVA策略模式demo【設計模式系列】

策略模式用在統一的入口&#xff0c;但需要根據某個類型判斷后續執行邏輯&#xff0c;例如我最近遇到的場景&#xff1a;我需要對接一個設備&#xff0c;前端請求我這邊&#xff0c;我再去和設備交互&#xff0c;但設備種類很多&#xff0c;各自有自己的接入規則&#xff01;傳…

mysql索引:索引應該選擇哪種數據結構 B+樹 MySQL中的頁 頁主體 頁目錄 索引分類

索引是什么?為什么要使用索引? 以前學數據結構時學了ArrayList,我們可以往里面存放數據 但是有問題,也就是說當程序重啟或是電腦關機之后,數據就沒有了,為什么? 因為他的數據是保存在內存中的 數據庫把數據保存在磁盤中,就可以完成對數據的持久化內存與外存的區別 內存&…

SpringBoot靜態資源與緩存配置全解析

springboot中靜態資源classpath就是resource文件夾下歡迎頁規則項目啟動默認去找靜態資源下的index.html頁面 默認訪問該頁面favicon原則在靜態資源目錄下尋找favicon.ico緩存實驗在請求中使用Cache-Control 時&#xff0c;它可選的值有&#xff1a;在響應中使用Cache-Control …

基于 Python Django 和 Spark 的電力能耗數據分析系統設計與實現7000字論文實現

摘要隨著能源問題日益突出&#xff0c;電力能耗數據分析對于提高能源利用效率、降低能源消耗具有重要意義。本文設計并實現了一個基于 Python Django 和 Spark 的電力能耗數據分析系統。系統采用前后端分離架構&#xff0c;前端使用 Django 框架實現用戶界面&#xff0c;后端使…

elementUI vue2 前端表格table數據導出(二)

為啥前端導出不在贅述了&#xff0c;不然讀者也難看到這篇文章。第一步&#xff1a;安裝依賴npm install vue-json-excel第二步&#xff1a;引用依賴配置// 導出Excel文件組件 import JsonExcel from vue-json-excel; Vue.component(downloadExcel, JsonExcel)第三步&#xff1…

RabbitMQ 4.1.1-Local random exchange體驗

Local Random Exchange 一種 RabbitMQ 4.0 引入的新型交換機&#xff0c;主要是為 request-reply&#xff08;RPC&#xff09;場景 設計的。 使用這種交換機時&#xff0c;消息只會被路由到本地節點上的隊列&#xff0c;可以確保極低的消息發布延遲。如果有多個本地隊列綁定到該…

中山排氣歧管批量自動化智能化3D尺寸測量及cav檢測分析

當前制造業快速發展&#xff0c;傳統測量方法正面臨嚴峻挑戰。生產規模的持續擴張使得現有測量手段逐漸暴露出效率不足的問題&#xff0c;這種技術滯后性正在直接影響企業的整體生產效率。具體表現為測量速度跟不上生產節拍&#xff0c;精度要求難以達標&#xff0c;最終導致生…

Debian 11 Bullseye 在線安裝docker

首先移除所有錯誤的 Docker 軟件源&#xff1a;sudo rm -f /etc/apt/sources.list.d/docker*安裝必要依賴sudo apt update sudo apt install -y ca-certificates curl gnupg添加 Docker 官方 GPG 密鑰&#xff08;使用國內鏡像&#xff09;&#xff1a;curl -fsSL https://mirr…