機器學習筆記【Week3】

一、邏輯回歸(Logistic Regression)

與線性回歸的區別:

問題類型輸出類型舉例
回歸問題連續實數房價預測、氣溫預測
分類問題離散類別(0 或 1)是否患病、是否點擊廣告、是否合格

我們希望構建一個模型,根據輸入 x x x 輸出一個概率值:
h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_\theta(x) = P(y=1 \mid x;\theta) hθ?(x)=P(y=1x;θ)

應用場景

用于二分類任務,例如:

  • 郵件是否垃圾
  • 是否患病
  • 信用是否違約

二、假設函數 Hypothesis

與線性回歸的主要區別:輸出范圍需限制在 [0, 1]

使用 sigmoid 函數(也稱 logistic 函數):
h θ ( x ) = g ( θ T x ) = 1 1 + e ? θ T x h_\theta(x) = g(\theta^T x) = \frac{1}{1 + e^{-\theta^T x}} hθ?(x)=g(θTx)=1+e?θTx1?
其中:

  • g ( z ) g(z) g(z) 是 sigmoid 函數
  • 輸出值 h θ ( x ) h_\theta(x) hθ?(x) 表示輸入為正類(y = 1)的概率

Python 實現:

import numpy as npdef sigmoid(z):return 1 / (1 + np.exp(-z))

三、分類決策

邏輯回歸模型最終輸出一個概率,我們通常采用:

  • h θ ( x ) ≥ 0.5 h_\theta(x) \ge 0.5 hθ?(x)0.5 ? 預測為 1
  • h θ ( x ) < 0.5 h_\theta(x) < 0.5 hθ?(x)<0.5 ? 預測為 0

決策邊界:

滿足 h θ ( x ) = 0.5 h_\theta(x) = 0.5 hθ?(x)=0.5 即:
θ T x = 0 \theta^T x = 0 θTx=0
這就是一條分界線(或超平面),用來把輸入空間劃分為兩類。

四、代價函數(Cost Function)

線性回歸的平方誤差不適用于分類,會導致非凸函數。因此改用如下對數損失函數:

單個樣本:
Cost ( h θ ( x ) , y ) = { ? log ? ( h θ ( x ) ) if? y = 1 ? log ? ( 1 ? h θ ( x ) ) if? y = 0 \text{Cost}(h_\theta(x), y) = \begin{cases} - \log(h_\theta(x)) & \text{if } y = 1 \\ - \log(1 - h_\theta(x)) & \text{if } y = 0 \end{cases} Cost(hθ?(x),y)={?log(hθ?(x))?log(1?hθ?(x))?if?y=1if?y=0?
統一表達為:
J ( θ ) = ? 1 m ∑ i = 1 m [ y ( i ) log ? ( h θ ( x ( i ) ) ) + ( 1 ? y ( i ) ) log ? ( 1 ? h θ ( x ( i ) ) ) ] J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} \left[y^{(i)} \log(h_\theta(x^{(i)})) + (1 - y^{(i)}) \log(1 - h_\theta(x^{(i)}))\right] J(θ)=?m1?i=1m?[y(i)log(hθ?(x(i)))+(1?y(i))log(1?hθ?(x(i)))]
它是一個凸函數,可用梯度下降優化。

對每個樣本:

  • y = 1 y = 1 y=1:損失為 ? log ? ( h θ ( x ) ) -\log(h_\theta(x)) ?log(hθ?(x))
  • y = 0 y = 0 y=0:損失為 ? log ? ( 1 ? h θ ( x ) ) -\log(1 - h_\theta(x)) ?log(1?hθ?(x))

Python 實現:

def compute_cost(theta, X, y):m = len(y)h = sigmoid(X @ theta)epsilon = 1e-5  # 防止 log(0)return (-1 / m) * (y.T @ np.log(h + epsilon) + (1 - y).T @ np.log(1 - h + epsilon))

五、梯度下降優化參數

邏輯回歸成本函數依然是凸函數,適用梯度下降:
θ j : = θ j ? α ? 1 m ∑ i = 1 m ( h θ ( x ( i ) ) ? y ( i ) ) ? x j ( i ) \theta_j := \theta_j - \alpha \cdot \frac{1}{m} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)}) \cdot x_j^{(i)} θj?:=θj??α?m1?i=1m?(hθ?(x(i))?y(i))?xj(i)?

向量化形式:
θ : = θ ? α m X T ( h θ ( x ) ? y ) \theta := \theta - \frac{\alpha}{m} X^T (h_\theta(x) - y) θ:=θ?mα?XT(hθ?(x)?y)
其中 h θ ( x ) = g ( X θ ) h_\theta(x) = g(X\theta) hθ?(x)=g()

Python 向量化實現:

def gradient(theta, X, y):m = len(y)h = sigmoid(X @ theta)return (1 / m) * (X.T @ (h - y))

六、訓練模型示例(使用 sklearn 數據)

from sklearn.datasets import make_classification
from scipy.optimize import minimize# 生成模擬數據
X, y = make_classification(n_samples=100, n_features=2, n_informative=2,n_redundant=0, random_state=42)
X = np.c_[np.ones((X.shape[0], 1)), X]  # 添加 x0
y = y.reshape(-1, 1)
theta_init = np.zeros((X.shape[1], 1))# 定義損失函數封裝形式(用于 minimize)
def cost_func(t):return compute_cost(t.reshape(-1, 1), X, y)def grad_func(t):return gradient(t.reshape(-1, 1), X, y).flatten()# 優化
result = minimize(fun=cost_func, x0=theta_init.flatten(), jac=grad_func)
theta_optimized = result.x.reshape(-1, 1)

七、決策邊界可視化

import matplotlib.pyplot as pltdef plot_decision_boundary(X, y, theta):plt.scatter(X[:, 1], X[:, 2], c=y.flatten(), cmap='bwr')x_vals = np.linspace(X[:, 1].min(), X[:, 1].max(), 100)y_vals = -(theta[0] + theta[1]*x_vals) / theta[2]plt.plot(x_vals, y_vals, 'g--')plt.xlabel('Feature 1')plt.ylabel('Feature 2')plt.title('Decision Boundary')plt.grid(True)plt.show()plot_decision_boundary(X, y, theta_optimized)

八、過擬合與欠擬合(Overfitting vs Underfitting)

欠擬合(Underfitting)

  • 模型太簡單,不能很好地擬合訓練數據。
  • 訓練誤差高,泛化能力差。

過擬合(Overfitting)

  • 模型太復雜(如高階多項式),雖然訓練誤差低,但在新數據上表現差。
  • 泛化能力弱。

圖示對比:

  • 欠擬合:模型是一條直線
  • 合理擬合:模型是一條平滑曲線
  • 過擬合:模型是高頻震蕩曲線,精確穿過每個訓練點

解決過擬合的兩種主要方法

方法 1:減少特征數量(手動或 PCA)

  • 刪除噪聲特征
  • 降維技術(如 PCA)

方法 2:正則化(Regularization)

  • 懲罰模型中參數過大的情況
  • 防止模型過度復雜

九、多項式回歸(Polynomial Regression)

使用更高階的特征,如:
h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 + ? h_\theta(x) = \theta_0 + \theta_1 x + \theta_2 x^2 + \theta_3 x^3 + \cdots hθ?(x)=θ0?+θ1?x+θ2?x2+θ3?x3+?
為了防止高階模型過擬合,需要 正則化


十、正則化(Regularization)

在代價函數中加入一個懲罰項(L2 范數),避免參數變得過大:

1. 線性回歸正則化代價函數:

J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) ? y ( i ) ) 2 + λ 2 m ∑ j = 1 n θ j 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 + \frac{\lambda}{2m} \sum_{j=1}^{n} \theta_j^2 J(θ)=2m1?i=1m?(hθ?(x(i))?y(i))2+2mλ?j=1n?θj2?

第一項:模型的預測誤差

第二項:參數平方和,防止過大

λ \lambda λ 是正則化系數(控制懲罰強度)

注意:不對 θ 0 \theta_0 θ0? 正則化

2. 對應的梯度更新(帶正則化):

  • j = 0 j = 0 j=0(偏置項):

θ 0 : = θ 0 ? α ? 1 m ∑ ( h θ ( x ( i ) ) ? y ( i ) ) \theta_0 := \theta_0 - \alpha \cdot \frac{1}{m} \sum (h_\theta(x^{(i)}) - y^{(i)}) θ0?:=θ0??α?m1?(hθ?(x(i))?y(i))

  • j ≥ 1 j \ge 1 j1

θ j : = θ j ? α ? [ 1 m ∑ ( h θ ( x ( i ) ) ? y ( i ) ) x j ( i ) + λ m θ j ] (j?≥?1) \theta_j := \theta_j - \alpha \cdot \left[ \frac{1}{m} \sum (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} + \frac{\lambda}{m} \theta_j \right] \quad \text{(j ≥ 1)} θj?:=θj??α?[m1?(hθ?(x(i))?y(i))xj(i)?+mλ?θj?](j?≥?1)

十一、邏輯回歸中的正則化

邏輯回歸同樣適用:
J ( θ ) = ? 1 m ∑ [ y ( i ) log ? ( h θ ( x ( i ) ) ) + ( 1 ? y ( i ) ) log ? ( 1 ? h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(\theta) = -\frac{1}{m} \sum \left[ y^{(i)} \log(h_\theta(x^{(i)})) + (1-y^{(i)}) \log(1 - h_\theta(x^{(i)})) \right] + \frac{\lambda}{2m} \sum_{j=1}^{n} \theta_j^2 J(θ)=?m1?[y(i)log(hθ?(x(i)))+(1?y(i))log(1?hθ?(x(i)))]+2mλ?j=1n?θj2?

Python 實現(邏輯回歸正則化):

def cost_regularized(theta, X, y, lambda_):m = len(y)h = sigmoid(X @ theta)reg_term = (lambda_ / (2 * m)) * np.sum(np.square(theta[1:]))return (-1 / m) * (y.T @ np.log(h + 1e-5) + (1 - y).T @ np.log(1 - h + 1e-5)) + reg_termdef gradient_regularized(theta, X, y, lambda_):m = len(y)h = sigmoid(X @ theta)grad = (1 / m) * (X.T @ (h - y))reg = (lambda_ / m) * thetareg[0] = 0  # θ? 不正則化return grad + reg

十二、多項式特征與 sklearn 示例

from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import Ridge# 構造多項式特征
poly = PolynomialFeatures(degree=5)
X_poly = poly.fit_transform(X)# 嶺回歸(L2 正則化)
model = Ridge(alpha=1.0)  # alpha 對應 λ
model.fit(X_poly, y)

十三、訓練集 vs 驗證集 vs 測試集

  • 訓練集(training set):用于訓練模型
  • 驗證集(cross validation set):用于選擇參數,如 λ、模型復雜度等
  • 測試集(test set):用于評估模型最終泛化性能

通常劃分比例為 60% / 20% / 20%


十四、模型選擇與評估流程

模型選擇步驟:

  1. 使用訓練集訓練多個不同 λ 值的模型
  2. 在驗證集上評估不同模型的性能,選擇最優 λ
  3. 使用測試集評估最終模型的泛化誤差

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

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

相關文章

6.4.2_3最短路徑問題_Floyd算法

Floyd弗洛伊德 膜拜大佬&#xff0c;給大佬鞠躬鞠躬鞠躬。。。。。。。。。 Floyd算法 ----解決頂點間的最短路徑&#xff1a; 過程&#xff1a; 如下&#xff1a; 初始化(沒有中轉點)&#xff1a;2個鄰接矩陣A和path&#xff0c;第一個是沒有中轉點的2個頂點之間的最短路徑…

uniapp|實現多端圖片上傳、拍照上傳自定義插入水印內容及拖拽自定義水印位置,實現水印相機、圖片下載保存等功能

本文以基礎視角,詳細講解如何在uni-app中實現圖片上傳→水印動態編輯→圖片下載的全流程功能。 目錄 引言應用場景分析(社交媒體、內容保護、企業素材管理等)uniapp跨平臺開發優勢核心功能實現?圖片上傳模塊多來源支持:相冊選擇(`uni.chooseImage`)與拍照(`sourceType:…

2021年認證杯SPSSPRO杯數學建模B題(第二階段)依巴谷星表中的畢星團求解全過程文檔及程序

2021年認證杯SPSSPRO杯數學建模 B題 依巴谷星表中的畢星團 原題再現&#xff1a; 依巴谷衛星&#xff08;High Precision Parallax Collecting Satellite&#xff0c;縮寫為 Hip-parcos&#xff09;&#xff0c;全稱為“依巴谷高精度視差測量衛星”&#xff0c;是歐洲空間局發…

行為型:解釋器模式

目錄 1、核心思想 2、實現方式 2.1 模式結構 2.2 實現案例 3、優缺點分析 4、適用場景 5、注意事項 1、核心思想 目的&#xff1a;針對某種語言并基于其語法特征創建一系列的表達式類&#xff08;包括終極表達式與非終極表達式&#xff09;?&#xff0c;利用樹結構模式…

Redis分布式緩存核心架構全解析:持久化、高可用與分片實戰

一、持久化機制&#xff1a;數據安全雙引擎 1.1 RDB與AOF的架構設計 Redis通過RDB&#xff08;快照持久化&#xff09;和AOF&#xff08;日志持久化&#xff09;兩大機制實現數據持久化。 ? RDB架構&#xff1a;采用COW&#xff08;寫時復制&#xff09;技術&#xff0c;主進程…

換臉視頻FaceFusion3.1.0-附整合包

2025版最強換臉軟件FaceFusion來了&#xff08;附整合包&#xff09;超變態的換臉教程 2025版最強換臉軟件FaceFusion來了&#xff08;附整合包&#xff09;超變態的換臉教程 整合包地址&#xff1a; 「Facefusion_V3.1.0」 鏈接&#xff1a;https://pan.quark.cn/s/f71601a920…

論文閱讀筆記——Step1X-Edit: A Practical Framework for General Image Editing

Step1X-Edit 論文 當前圖像編輯數據集規模小&#xff0c;質量差&#xff0c;由此構建了如下數據構造管線。 高質量三元組數據&#xff08;源圖像、編輯指令、目標圖像&#xff09;。 主體添加與移除&#xff1a;使用 Florence-2 對專有數據集標注&#xff0c;然后使用 SAM2 進…

使用Python在PyCharm中進行交通工程數據分析的完整流程,包括數據清洗、挖掘、關聯、可視化和應用整合等各個階段

交通工程領域數據分析流程 下面我將詳細介紹使用Python在PyCharm中進行交通工程數據分析的完整流程,包括數據清洗、挖掘、關聯、可視化和應用整合等各個階段。 1. 數據準備與清洗 1.1 導入必要庫 import pandas as pd import numpy as np import matplotlib.pyplot as plt…

《軟件工程》第 2 章 -UML 與 RUP 統一過程

在軟件工程領域&#xff0c;UML&#xff08;統一建模語言&#xff09;與 RUP&#xff08;統一過程&#xff09;是進行面向對象軟件開發的重要工具和方法。接下來&#xff0c;我們將深入探討第 2 章的內容&#xff0c;通過案例和代碼&#xff0c;幫助大家理解和掌握相關知識。 …

Vue收集表單數據

在 Web 開發中&#xff0c;表單是用戶與系統交互的重要方式。無論是注冊、登錄、提交評論還是其他操作&#xff0c;都需要通過表單獲取用戶輸入的數據。Vue.js 提供了強大的響應式系統和指令&#xff0c;使得表單數據的收集變得簡單而高效。本文將詳細介紹如何在 Vue 中實現表單…

R基于多元線性回歸模型實現汽車燃油效率預測及SHAP值解釋項目實戰

說明&#xff1a;這是一個機器學習實戰項目&#xff08;附帶數據代碼文檔視頻講解&#xff09;&#xff0c;如需數據代碼文檔視頻講解可以直接到文章最后關注獲取。 1.項目背景 在全球環保意識日益增強和技術進步的推動下&#xff0c;汽車燃油效率成為了汽車行業關注的核心指標…

解決Window10上IP映射重啟失效的問題

問題 在實際網絡搭建過程中&#xff0c;大家有可能會遇到在局域網范圍內&#xff0c;在自己本機上搭建一個網站或者應用時&#xff0c;其他設備通過本機的IP地址無法訪問的問題,這個問題可以通過設置IP映射來解決&#xff0c;但是通過netsh interface命令設置的IP映射&#xf…

一臺手機怎樣實現多IP上網?方法有多種

在數字時代&#xff0c;多IP上網已成為許多手機用戶的剛需。本文將詳細介紹如何通過不同技術手段實現手機多IP上網&#xff0c;幫助讀者根據實際需求選擇適合的解決方案。 一、為什么一臺手機要實現多IP上網 手機實現多IP上網的典型場景包括&#xff1a; ①防止同一IP操作多個…

git子模塊--常見操作

克隆倉庫 標準化克隆流程 基本命令git clone <父倉庫遠程URL> [本地文件名] cd <本地倉庫名> git submodule init # 初始化子模塊配置 git submodule update # 拉取子模塊內容一次性完成克隆和初始化流程 基本命令git clone --recurse-submodules <父倉庫遠…

ceph 剔除 osd

剔除 osd 參考官網文檔 Removing OSDs (Manual) Removing the OSD 你得周期性地維護集群的子系統、或解決某個失敗域的問題(如一機架)。如果你不想在停機維護 OSD 時讓 CRUSH 自動重均衡,提前設置 noout ceph osd set nooutid=1# OSD 通常在從集群中移除之前處于 up in 在…

MySQL推出全新Hypergraph優化器,正式進軍OLAP領域!

在剛剛過去的 MySQL Summit 2025 大會上&#xff0c;Oracle 發布了一個用于 MySQL 的全新 Hypergraph&#xff08;超圖&#xff09;優化器&#xff0c;能夠為復雜的多表查詢生成更好的執行計劃&#xff0c;從而優化查詢性能。 這個功能目前只在 MySQL HeatWave 云數據庫中提供&…

破能所,入不二

一、緣起&#xff1a;從“聞所聞盡”到性相不二 《楞嚴經》觀世音菩薩耳根圓通法門的核心教義——“初于聞中&#xff0c;入流亡所&#xff1b;所入既寂&#xff0c;動靜二相&#xff0c;了然不生。如是漸增&#xff0c;聞所聞盡”&#xff0c;揭示了從凡夫二元認知躍升至究竟…

網站每天幾點更新,更新頻率是否影響網站收錄

1. 每天幾點更新網站最合適&#xff1f;總怕時間選錯影響收錄&#xff1f; 剛開始搞網站的時候&#xff0c;是不是老糾結啥時候更新合適&#xff1f;早上剛上班&#xff1f;半夜沒人的時候&#xff1f;選不對時間&#xff0c;總擔心搜索引擎爬蟲來了沒抓到新內容&#xff0c;影…

使用workvisual對庫卡機器人進行程序備份

1&#xff0c;將電腦網卡設置自動獲取&#xff0c;用網線將電腦與庫卡機器人控制柜上的網口連接 2&#xff0c;打開軟件后&#xff0c;會出現項目打開對話框&#xff0c;點擊瀏覽按鈕&#xff0c;會出現機器人站項目 3&#xff0c;點擊項目前面的?&#xff0c;展開菜單&…

2025.5.22 Axure 基礎與線框圖制作學習筆記

一、Axure 基礎 - 界面及相關了解 界面布局 工具欄 &#xff1a;位于軟件上方&#xff0c;包含新建、打開、保存等常用文件操作按鈕&#xff0c;以及撤銷、重做、剪切、復制、粘貼等編輯功能按鈕&#xff0c;方便快速執行相關操作。 元件面板 &#xff1a;在左側&#xff0c;提…