03 基于sklearn的機械學習-線性回歸、損失函數及其推導

線性回歸

分類的目標變量是標稱型數據,回歸是對連續型的數據做出預測。

一、標稱型數據(Nominal Data)

標稱型數據屬于分類數據(Categorical Data) 的一種,用于描述事物的類別或屬性,沒有順序或數值意義,僅用于區分不同的組別。

  1. 核心特征
  • 離散性:數據值是有限的、離散的類別,無法進行數學運算(如加減乘除)。
  • 無順序性:類別之間沒有高低、大小或先后順序,彼此平等。
  • 標簽化:通常用字符串或整數標簽表示(如 “紅色”“藍色”,或用 0、1、2 代表不同類別),但標簽的數值不具備實際意義。
  1. 常見例子
  • 性別:男 / 女
  • 顏色:紅 / 黃 / 藍
  • 職業:教師 / 醫生 / 工程師
  • 學歷:高中 / 本科 / 碩士(注意:學歷若僅作為類別則是標稱型,若強調順序則是有序型數據,屬于分類數據的另一種)

二、連續型數據(Continuous Data)

連續型數據是可以取無限多個數值的定量數據,通常用于衡量事物的數量或程度,具有數值意義和順序性

連續型數據可直接參與數值計算,但為了提升模型效果,通常需要預處理:標準化/歸一化/離散化

  1. 核心特征
  • 連續性:在一定范圍內可以取任意值(理論上可無限細分),如身高 175cm、體重 62.5kg 等。
  • 可運算性:支持加減乘除等數學運算,且結果有實際意義(如身高差、體重和)。
  • 有序性:數值之間有明確的大小關系(如 180cm > 170cm)。
  1. 常見例子
  • 物理量:身高、體重、溫度、時間
  • 統計量:收入、成績、點擊率、年齡(嚴格來說年齡可視為離散型,但通常按連續型處理)

線性回歸

線性回歸(Linear Regression)是監督學習中最基礎的算法之一,用于建模自變量(特征或者X)與因變量(目標,y)之間的線性關系

需要預測的值:即目標變量,target,y

影響目標變量的因素:X1,X2...XnX_1,X_2...X_nX1?,X2?...Xn?,可以是連續值也可以是離散值

因變量和自變量之間的關系:即模型,model

對于數學中的線性回歸通常為數學公式,例如y=w**x+b,是完全對的,但是在現實生活中,預測的結果與實際結果不完全一致,因此機器學習中的線性回歸的目的是通過擬合一條直線,使預測值盡可能地接近真實值。

在這里插入圖片描述

損失函數

損失函數(Loss Function)是衡量模型預測錯誤程度的函數,定義為預測值與真實值之間的差異

假設: y=wx+by=wx+by=wx+b

x1,x2,x3...x_1,x_2,x_3...x1?,x2?,x3?...帶入進去 然后得出:

y1,=wx1+by_1^,=wx_1+by1,?=wx1?+b

y2,=wx2+by_2^,=wx_2+by2,?=wx2?+b

y3,=wx3+by_3^,=wx_3+by3,?=wx3?+b

在這里插入圖片描述

將每個點的真實值與計算值的差值全部算出來

總誤差(損失):

loss=(y1?y1,)2+(y2?y2,)2+....(yn?yn,)2{(y_1-y_1^,)^2}+{(y_2-y_2^,)^2}+....{(y_n-y_n^,)^2}(y1??y1,?)2+(y2??y2,?)2+....(yn??yn,?)2

總誤差會受到樣本點的個數的影響,樣本點越多,該值就越大,所以我們可以對其平均化,求得平均值

這樣就得到了損失函數:

eˉ=1n∑i=1n(yi?wxi?b)2\bar e = \frac{1}{n} \textstyle\sum_{i=1}^{n}(y_{i}-w x_{i} - b)^{2}eˉ=n1?i=1n?(yi??wxi??b)2

線性回歸的目標是找到最優參數 w,使總損失最小化

方法 1:解析解(最小二乘法)

通過對損失函數求導并令導數為 0,直接參數的解析解。

步驟 1:將預測值表示為矩陣形式

設特征矩陣為 X(含截距項時,首列全為 1),維度為 m X (n+1);

參數向量為 (w = (w_0, w_1, …, w_n)^T);

真實標簽向量為 y=(y1,…,y**m)T。則預測值向量為: y’ = Xw

步驟 2:將總損失函數表示為矩陣形式

loss=12∣∣(XW?y)∣∣2求導:loss=\frac{1}{2}||(XW-y)||^2 求導:loss=21?∣∣(XW?y)2求導:

loss=12(XW?y)T(XW?y)loss=\frac{1}{2}(XW-y)^T(XW-y)loss=21?(XW?y)T(XW?y)

loss=12(WTXT?yT)(XW?y)loss=\frac{1}{2}(W^TX^T-y^T)(XW-y)loss=21?(WTXT?yT)(XW?y)

loss=12(WTXTXW?WTXTy?yTXW+yTy)loss=\frac{1}{2}(W^TX^TXW-W^TX^Ty-y^TXW+y^Ty)loss=21?(WTXTXW?WTXTy?yTXW+yTy)

步驟 3:對 w 求導并令導數為 0

loss′=12(WTXTXW?WTXTy?yTXW+yTy)′loss'=\frac{1}{2}(W^TX^TXW-W^TX^Ty-y^TXW+y^Ty)'loss=21?(WTXTXW?WTXTy?yTXW+yTy)

loss′=12(XTXW+(WTXTX)T?XTy?(yTX)T)loss'=\frac{1}{2}(X^TXW+(W^TX^TX)^T-X^Ty-(y^TX)^T)loss=21?(XTXW+(WTXTX)T?XTy?(yTX)T)

loss′=12(XTXW+XTXW?XTy?XTy)loss'=\frac{1}{2}(X^TXW+X^TXW-X^Ty-X^Ty)loss=21?(XTXW+XTXW?XTy?XTy)

loss′=12(2XTXW?2XTy)loss'=\frac{1}{2}(2X^TXW-2X^Ty)loss=21?(2XTXW?2XTy)

loss′=XTXW?XTyloss'=X^TXW-X^Tyloss=XTXW?XTy

令導數loss′=0loss'=0loss=0

0=XTXW?XTy0=X^TXW-X^Ty0=XTXW?XTy

XTXW=XTyX^TXW=X^TyXTXW=XTy

矩陣沒有除法,使用逆矩陣轉化

(XTX)?1(XTX)W=(XTX)?1XTy(X^TX)^{-1}(X^TX)W=(X^TX)^{-1}X^Ty(XTX)?1(XTX)W=(XTX)?1XTy

W=(XTX)?1XTyW=(X^TX)^{-1}X^TyW=(XTX)?1XTy

方法 2:鏈式求導(梯度下降法)

XTXX^TXXTX不可逆(如特征存在多重共線性)或樣本量極大時,解析解計算復雜,需用梯度下降法迭代求解:

內部函數是 f(W) = XW - y ,外部函數是 g(u) = 1/2 *u^2 ,其中 u = f(W) 。

外部函數的導數:
?g?u=u=XW?y \frac{\partial g}{\partial u} = u = XW - y ?u?g?=u=XW?y
內部函數的導數:
?f?W=XT \frac{\partial f}{\partial W} = X^T ?W?f?=XT
應用鏈式法則,我們得到最終的梯度:
?L?W=(?g?u)(?f?W)=(XW?y)XT \frac{\partial L}{\partial W} = \left( \frac{\partial g}{\partial u} \right) \left( \frac{\partial f}{\partial W} \right) = (XW - y) X^T ?W?L?=(?u?g?)(?W?f?)=(XW?y)XT

sklearn.linear_model.LinearRegression()

  • fit_intercept:是否計算此模型的截距(偏置)b, default=True

  • 屬性

    • coef_ 回歸后的權重系數w

    • intercept_ 偏置

from sklearn.linear_model import LinearRegression
import numpy as np
data=np.array([[0,14,8,0,5,-2,9,-3,399],[-4,10,6,4,-14,-2,-14,8,-144],[-1,-6,5,-12,3,-3,2,-2,30],[5,-2,3,10,5,11,4,-8,126],[-15,-15,-8,-15,7,-4,-12,2,-395],[11,-10,-2,4,3,-9,-6,7,-87],[-14,0,4,-3,5,10,13,7,422],[-3,-7,-2,-8,0,-6,-5,-9,-309]])
x = data[:,:-1]
y = data[:,-1]
# fit_intercept=True : 有w0
model = LinearRegression(fit_intercept=True)
# 訓練
model.fit(x,y)# 查看參數
print(model.coef_)
# 查看w0
print(model.intercept_)
[ 3.41704677  9.64733333  9.96900258  0.49065266 10.67072206  4.5085292217.60894156 12.27111727]
18.18163864119797

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

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

相關文章

TTS語音合成|f5-tts語音合成服務器部署,實現http訪問

p;?上篇文章分享了如何使用GPT-SoVITS實現一個HTTP服務器,并通過該服務器提供文本到語音(TTS)服務。今天,我們將進一步探討如何部署另一個強大的TTS模型——f5-tts。這個模型在自然語音生成方面表現出色,具有高度的可…

【Golang】Go語言指針

Go語言指針 文章目錄Go語言指針一、指針1.1、Go語言中的指針1.1.1、指針地址和指針類型1.1.2、指針取值1.1.3、空指針1.1.4、new和make1.1.5、new1.1.6、make1.1.7、new與make的區別一、指針 區別于C/C中的指針,Go語言中的指針不能進行偏移和運算,是安全…

EMC的一些簡單常識

ESD測試比對 & 需要做到動作 試驗: -780系統,板子直流地 和 PE連接(主板PE & DC-分開,但是前端板PE & DC-連接),只能承受1K接觸放電。 -780系統,板子直流地 和 PE分開(主…

Day4||vue-計算屬性

一.定義概念:基于現有的數據,計算出來的新屬性。依賴的數據變化,自動重新計算。語法:聲明需要放在computed的配置項中,一個計算屬性對于一個函數。使用起來和普通屬性一樣使用{{計算屬性名}}計算屬性->可以將一段求…

編程算法在金融、醫療、教育、制造業等領域的落地案例

隨著人工智能與大數據技術的迅猛發展,編程算法已從理論研究走向實際應用,在金融、醫療、教育、制造業等多個關鍵領域實現了深度落地。這些算法不僅提升了業務效率,還推動了行業智能化轉型。本文將系統性地分析編程算法在四大核心領域的典型應…

vue npm install卡住沒反應

install某個插件的時候,發現卡住不動,可以嘗試以下解決方法 1.使用–verbose查看安裝詳情 npm install consola --verbose2.更換淘寶鏡像(一般都是淘寶鏡像正式過期問題) 查看當前鏡像 npm config get registry更換淘寶鏡像 第一種…

【Unity3D實例-功能-移動】角色移動-通過WSAD(CharacterController方式)

今天,我們就來聊聊如何在Unity中使用CharacterController組件,讓角色能夠靈活移動,在游戲世界里像風一樣自由奔跑吧。廢話不多說,走,讓我們馬上來一探究竟!目錄:1.準備模型2.動畫的處理3.為角色…

AI Agent開發學習系列 - langchain之LCEL(4):Memory

Memory的添加方式 from operator import itemgetterfrom langchain.memory import ConversationBufferMemory from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.runnables import RunnableLambda, RunnablePassthrough from l…

向Coze學習,我們把這些工作流也開源了

要說現在最火的工作流是什么,那非視頻工作流莫屬了。我每天也都能接到不少咨詢短視頻工作流的需求。 這大半年來我們團隊也制作和整理了超過 100 工作流,其中很大一部分都是現在最火的視頻工作流。 為了向Coze開源致敬,這次我們斑碼團隊也決…

Git 從零開始:完整項目上傳指南

一、準備工作 1. 安裝 Git Windows:下載安裝包macOS:在終端運行 brew install gitLinux: # Ubuntu/Debian sudo apt update && sudo apt install git# CentOS/Fedora sudo yum install git2. 配置用戶信息(首次使用&am…

【AI】入門級提示詞模板:適用于ChatGPT、文心一言等主流模型

入門級提示詞模板:適用于 ChatGPT、文心一言等主流模型**在當下這個人工智能飛速發展的時代,ChatGPT、文心一言等主流大模型已經廣泛地融入到我們的工作與生活當中。不管是創作文章、生成代碼,還是進行數據分析、獲取創意靈感,這些…

如何解決 undetected_chromedriver 啟動慢問題

要解決 undetected_chromedriver 啟動慢的問題,可以從以下幾個方面優化配置和代碼: 1. 指定本地 Chrome 二進制路徑 避免自動搜索 Chrome 路徑,直接指定位置: driver uc.Chrome(browser_executable_pathrC:\Program Files\Google…

Python 程序設計講義(42):組合數據類型——元組類型:創建元組

Python 程序設計講義(42):組合數據類型——元組類型:創建元組 目錄Python 程序設計講義(42):組合數據類型——元組類型:創建元組一、元組的特征二、創建元組1、使用圓括號&#xff0…

windows 設置 vscode 免密遠程

我們可以使用 vscode ssh 進行遠程編輯文件項目。也可以使用 ssh 密匙 來實現免密登錄。 本人在本地windows系統有多個密匙,使用 D:\SPB_Data\.ssh\id_rsa_local 進行本地設備進行登錄。 在 vscode ssh 配置文件中添加 IdentityFile 配置 Host 本地設備ipHostName …

ubuntu自動搭建Android平臺NDK編譯環境

sh setup_ndk_env.sh自動下載NDK并解壓 提取Android平臺工具鏈 驗證Android工具鏈 設置工具鏈變量 export CROSS_TRIPLE=aarch64_linux_android export CROSS_ROOT=/home/ubuntu/${CROSS_TRIPLE} export ANDROID_NDK=${CROSS_ROOT} export AS=${CROSS_ROOT}/bin/llvm-as exp…

添加捕捉吸附標識(使用QT+OpenGL開發三維CAD)

捕捉吸附標識怎么畫出來?在點吸附的時候能夠展示吸附標識可以讓用戶更直觀的看到當前捕捉點,從而更準確的進行設計和繪制。 效果視頻見原文:添加捕捉吸附標識(使用QTOpenGL開發三維CAD) 16.Add snap label 鼠標捕捉吸…

元宇宙中的“蟲洞“:技術實現、應用場景與未來挑戰

一、技術定義與核心架構1.1 蟲洞的元宇宙隱喻概念來源:蟲洞在物理學中是連接不同時空的通道,而在元宇宙中,這一概念被引申為連接不同虛擬世界的跨平臺協議。英偉達Omniverse平臺通過USD(通用場景描述)實現了這一隱喻&a…

使用GIS中基于森林的分類與回歸模型來估算房屋價值

“基于森林的分類與回歸”,它可以幫助分析師有效地設計、測試和部署預測模型。 基于森林的分類與回歸應用了 Leo Breiman 的隨機森林算法,這是一種用于分類和預測的流行監督機器學習方法。該工具允許分析師輕松整合表格屬性、基于距離的要素和解釋柵格來…

《 java 隨想錄》| LeetCode鏈表高頻考題

前言:這是專門針對java語言講解的算法解析(題目順序大致參考《代碼隨想錄》)思維導圖操作鏈表刪除節點刪除鏈表中 D 節點時,只需將其前驅節點 C 的 next 指針指向 D 的下一個節點 E。添加節點?先讓 新節點 F 的 next 指針 指向 C…

學習嵌入式的第三十一天-數據結構-(2025.7.23)網絡協議封裝

今天的內容主要是網絡協議以及常用工具的介紹。協議頭與數據封包/拆包數據封包示例:MAC|IP|TCP|hello| ———————————— IP數據報IP頭信息默認20字節常用網絡測試工具telnetnetstatpingarpwiresharktcpdumpssh2secure crt工具安裝命令sudo ufw disable sud…