機器學習筆記【Week2】

一、多變量線性回歸(Multivariate Linear Regression)

為什么需要多變量?

現實問題中,一個目標可能受多個因素影響,比如預測房價時:

  • x 1 x_1 x1?:面積
  • x 2 x_2 x2?:臥室數量
  • x 3 x_3 x3?:房齡
  • . . . ... ...

假設函數(Hypothesis Function)

在單變量線性回歸基礎上推廣為:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ? + θ n x n h_\theta(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n hθ?(x)=θ0?+θ1?x1?+θ2?x2?+?+θn?xn?
向量形式更簡潔:
h θ ( x ) = θ T x h_\theta(x) = \theta^T x hθ?(x)=θTx
其中:

  • θ = [ θ 0 , θ 1 , ? , θ n ] T \theta = [\theta_0, \theta_1, \cdots, \theta_n]^T θ=[θ0?,θ1?,?,θn?]T(參數向量)
  • x = [ 1 , x 1 , x 2 , ? , x n ] T x = [1, x_1, x_2, \cdots, x_n]^T x=[1,x1?,x2?,?,xn?]T x 0 = 1 x_0 = 1 x0?=1 以統一偏置項)

模型核心思想:

和單變量回歸一樣,我們要最小化代價函數:
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) ? y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} \left( h_\theta(x^{(i)}) - y^{(i)} \right)^2 J(θ)=2m1?i=1m?(hθ?(x(i))?y(i))2
然后通過梯度下降法正規方程法求解。

Python 示例代碼(數據模擬)

import numpy as np# 模擬數據:面積、臥室數,房價
X = np.array([[2104, 3],[1600, 3],[2400, 3],[1416, 2],[3000, 4]])
y = np.array([399.9, 329.9, 369.0, 232.0, 539.9]).reshape(-1, 1)m = len(y)# 添加偏置項 x0 = 1
X = np.c_[np.ones((m, 1)), X]  # shape = (m, n+1)
theta = np.zeros((X.shape[1], 1))  # 初始參數

二、特征縮放(Feature Scaling)

特征數值差距大時(如面積 [ 50 , 200 ] [50, 200] [50,200] vs 房齡 [ 1 , 30 ] [1, 30] [1,30],梯度下降可能收斂非常慢,因此需要對輸入進行縮放。

方法:均值歸一化(mean normalization)

x i : = x i ? μ i s i x_i := \frac{x_i - \mu_i}{s_i} xi?:=si?xi??μi??

  • μ i \mu_i μi?:第 i i i 個特征的平均值
  • s i s_i si?:標準差或最大最小差

使得所有特征都落在類似于 [ ? 1 , 1 ] [-1, 1] [?1,1] 范圍內

Python 實現:

def feature_normalize(X):mu = np.mean(X, axis=0)sigma = np.std(X, axis=0)X_norm = (X - mu) / sigmareturn X_norm, mu, sigma# 只對 x1~xn 歸一化,排除 x0
X[:, 1:], mu, sigma = feature_normalize(X[:, 1:])

三、向量化梯度下降(Vectorized Gradient Descent)

成本函數:

J ( θ ) = 1 2 m ( X θ ? y ) T ( X θ ? y ) J(\theta) = \frac{1}{2m}(X\theta - y)^T(X\theta - y) J(θ)=2m1?(?y)T(?y)

梯度公式(向量化):

θ : = θ ? α m X T ( X θ ? y ) \theta := \theta - \frac{\alpha}{m} X^T(X\theta - y) θ:=θ?mα?XT(?y)

其中:

  • X X X m × ( n + 1 ) m \times (n+1) m×(n+1) 的訓練樣本矩陣
  • y y y m × 1 m \times 1 m×1 的目標值列向量

Python 實現:

def compute_cost(X, y, theta):m = len(y)return (1 / (2 * m)) * np.sum((X @ theta - y) ** 2)def gradient_descent(X, y, theta, alpha, num_iters):m = len(y)J_history = []for _ in range(num_iters):error = X @ theta - ygradient = (1 / m) * X.T @ errortheta -= alpha * gradientJ_history.append(compute_cost(X, y, theta))return theta, J_history

四、梯度下降的收斂性分析

如何判斷收斂?

  • 繪制 J ( θ ) J(\theta) J(θ) 隨迭代次數的變化圖
  • 若代價函數持續下降 → 收斂良好
  • 若震蕩/上升 → 學習率 α \alpha α 太大,需調小

調整學習率建議:

現象原因解決方法
收斂很慢學習率太小增加 α \alpha α
震蕩甚至發散學習率太大減小 α \alpha α

五、正規方程法(Normal Equation)

不使用梯度下降,直接求解析解:

解法公式:

θ = ( X T X ) ? 1 X T y \theta = (X^T X)^{-1} X^T y θ=(XTX)?1XTy

優點:

  • 不需要選擇 α \alpha α
  • 不需要迭代

缺點:

  • 當特征數量 n n n 很大時(如 >10000),求逆操作非常慢甚至不可行

Python 實現:

def normal_equation(X, y):return np.linalg.inv(X.T @ X) @ X.T @ ytheta_ne = normal_equation(X, y)

正規方程特點:

優點缺點
不需選擇學習率不能用于特征非常多的情況(矩陣求逆開銷大)
不需迭代,一次求解對數據量大、特征維度高時效率較低

六、可視化訓練過程(損失下降)

import matplotlib.pyplot as plttheta, J_history = gradient_descent(X, y, theta, alpha=0.1, num_iters=400)plt.plot(J_history)
plt.xlabel("Iterations")
plt.ylabel("Cost J(θ)")
plt.title("Cost Reduction over Time")
plt.grid(True)
plt.show()

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

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

相關文章

Axure 基本用法學習筆記

一、元件操作基礎 1. 可見性控制 隱藏/顯示:可以設置元件的可見性,使元件在特定條件下隱藏或可見 應用場景:創建動態交互效果,如點擊按鈕顯示隱藏內容 2. 層級管理 層級概念:元件有上下層關系,上層元件…

aws平臺s3存儲桶夸域問題處理

當我們收到開發反饋s3存在跨域問題 解決步驟: 配置 S3 存儲桶的 CORS 設置: 登錄到 AWS 管理控制臺。轉到 S3 服務。選擇你存儲文件的 存儲桶。點擊 權限 標簽頁。在 跨域資源共享(CORS)配置 部分,點擊 編輯。 登陸…

【后端高階面經:微服務篇】7、1秒響應保障:超時控制如何成為高并發系統的“救火隊長”?

一、全鏈路超時建模:從用戶需求到系統分解 1.1 端到端時間預算分配 黃金公式: 用戶期望響應時間 = 網絡傳輸時間 + 服務處理時間 + 下游調用時間 + 緩沖時間典型分配策略(以1秒目標為例): 環節時間預算優化目標客戶端渲染100ms骨架屏(Skeleton)預渲染邊緣節點(CDN)…

前端遇到高并發如何解決重復請求

在前端開發中遇到高并發場景時,若不加控制容易出現重復請求,這可能導致接口壓力增加、數據異常、用戶體驗變差等問題。以下是前端防止/解決重復請求的常見方法,按不同場景歸類總結: 🌟 一、常見重復請求場景 用戶頻繁點…

老牌協議再升級,Ethernet IP轉Modbus TCP網關橋接精準灌裝系統

對于消費品包裝制造商而言,灌裝機是最關鍵且昂貴的設備之一。然而,許多公司卻難以應對生產過程中的灌裝波動,從而造成嚴重的財務和生產后果。 在本次網絡研討會中,我們將探討穩聯技術的ethernet ip轉modbus tcp(WL-ABC…

骰子游戲(2023睿抗省賽)

骰子游戲 題目描述: 在某個游戲中有一個骰子游戲。 在游戲中,你需要投擲 5 個標準六面骰子(骰子為一個正方體,6個面上分別有 1、2、3、4、5、6中的一個數字,骰子的質量均勻),投出的點數根據組合會獲得一…

CMake跨平臺編譯生成:從理論到實戰

一、引言 在當今軟件開發中,跨平臺開發已成為常態。無論是需要在Windows、Linux、macOS等多操作系統上運行,還是在不同的硬件架構(如x86、ARM等)間部署,跨平臺編譯生成都是一個無法回避的關鍵問題。CMake,…

Python經典算法實戰

在編程的世界里,算法是解決問題的靈魂,而Python以其簡潔優雅的語法成為實現算法的理想語言。無論你是初學者還是有一定經驗的開發者,《Python經典算法實戰》都能帶你深入算法的殿堂,從理論到實踐,一步步構建起扎實的編…

QT的自定義控件

1.比如對label控件進行提升為QPaintPointLabel類,基類選擇QLabel,頭文件建議加上相對路徑,有時候VS識別不出來直接的頭文件,在提升的類中重寫pointEvent()函數。

flutter 常用組件詳細介紹、屏幕適配方案

一、常用組件 1.基礎組件 組件說明示例Text顯示文本Text(‘Hello Flutter’, style: TextStyle(fontSize: 20))Image顯示圖片Image.network(‘https://example.com/image.jpg’)Icon顯示圖標Icon(Icons.home, size: 30, color: Colors.blue)RaisedButton / ElevatedButton按鈕…

leetcode 17. Letter Combinations of a Phone Number

題目描述 17. Letter Combinations of a Phone Number 代碼: class Solution {string table[10] {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz&qu…

Web前端大模型實戰:端側翻譯+朗讀流程線+模型音頻數據編碼 - 讓網站快速支持多語言多模態輸出

在以前的文章 前端大模型入門:實戰篇之Vue3Antdvtransformers本地模型實現增強搜索 中介紹了前端使用大模型的文本RAG實現。本文將更進一步,介紹多模態輸出的端側實現。 本文將通過端側大模型技術實現網頁端的實時翻譯與語音合成功能,無需服…

Python包管理工具uv 國內源配置

macOS 下 .config/uv/uv.toml內 pip源 [[index]] url "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/" default true#uv python install 下載源配置無效,需要在項目里配置 # python-install-mirror "https://mirror.nju.edu.cn/githu…

用戶有一個Django模型沒有設置主鍵,現在需要設置主鍵。

用戶有一個Django模型沒有設置主鍵,現在需要設置主鍵。 from django.db import modelsclass CategoryAssistentModel(models.Model):second_level_category models.CharField(max_length100, nullTrue, blankTrue)third_level_category models.CharField(max_len…

搭建 C/C++_CMake_Boost_git 開發環境

搭建 C 開發環境 步驟 1:啟動 Ubuntu 18.04 容器 創建并啟動一個 Ubuntu 18.04 容器: docker run -itd --name cppubuntu ubuntu:18.04-itd:以交互模式運行容器,并在后臺運行。--name cppubuntu:命名容器為 cppubun…

OceanBase數據庫全面指南(查詢進階篇DQL)

文章目錄 一、OceanBase條件查詢詳解——WHERE子句的藝術1.1 WHERE子句基礎語法與原理1.2 基礎條件查詢實戰1.3 高級條件表達式1.4 分布式環境下的條件查詢優化二、OceanBase排序查詢——ORDER BY深度解析2.1 ORDER BY基礎與執行原理2.2 單字段排序實戰2.3 多字段復雜排序2.4 排…

.NET 10 - 嘗試一下Minimal Api的Validation新特性

1.簡單介紹 2025年11月微軟將會發布.NET10,這是LTS(Long Term Support)版本。當前.NET10已經處于Preview4版本,微軟對Runtime, Library, SDK, C#, Asp.NET Core, MAUI等都做了很多enhancement。近些年微軟對Minimal Api一直在持續地更新。在.NET8中, Mi…

vue+threeJS 創建鏤空球體(SphereGeometry)

嗨,我是小路。今天主要和大家分享的主題是“vuethreeJS 創建鏤空球體(SphereGeometry)”。 上次看到一個做鏤空球體的項目,自己也準備嘗試著做一做。今天終于做完了,并對這個項目進行梳理。 鏤空球體示例效果…

Docker 鏡像打包到本地

保存鏡像 使用 docker save 命令將鏡像保存為一個 tar 文件。命令格式如下: docker save [options] IMAGE [IMAGE...]示例:docker save -o centos.tar centos:latest--output 或 -o:將輸出保存到指定的文件中。 加載鏡像 如果需要在其他機器…

前端常見的安全問題

跨站腳本攻擊(XSS) XSS(跨站腳本攻擊,Cross-Site Scripting)是一種通過在網頁中注入惡意腳本,從而竊取用戶數據或控制用戶行為的攻擊方式。注入的js跟網頁與原有的js具有同樣的權限,可以獲得server端數據、可以獲取co…