機器學習(重學版)基礎篇(概念與評估)

?本篇參考周志華老師的西瓜書,但是本人學識有限僅能理解皮毛,如有錯誤誠請讀友評論區指正,萬分感謝。

一、基礎概念與評估方法

本節目標:建立理論基礎框架?

1、機器學習定義

機器學習是一門通過計算手段利用經驗(以數據形式存在)改善系統性能的學科。其核心是研究 “學習算法”—— 通過該算法,輸入經驗數據可生成 “模型”,模型能對新情況(如未見過的樣本)做出判斷。
形式化定義:若計算機程序通過經驗 E,在任務類 T 上的性能(以 P 評估)得到改善,則稱該程序對 E 進行了學習。

我的理解:

機器學習是讓計算機從數據中自動學習規律(模型),從而提升其完成特定任務(如預測、識別)能力的技術。

六維核心要點:

  1. 目標:?改善系統在特定任務上的性能

  2. 手段:?利用計算處理數據(經驗)

  3. 核心:?學習算法

  4. 產物:?模型

  5. 關鍵能力:?模型能對新情況(未見過的數據)做出有效判斷(泛化能力)

  6. 衡量:?性能指標(P)的提升

數據 -> 算法 -> 模型 -> 預測 -> 提升?

?2、核心術語

2.1、基礎概念與數據術語

  1. 機器學習(Machine Learning, ML)

    通過計算手段利用數據(經驗)改善系統性能的學科,核心是從數據中生成模型的學習算法
    示例:用歷史房價數據訓練模型預測新房價。

  2. 數據集(Data Set)

    多條記錄組成的集合,每條記錄描述一個對象或事件。
    示例:1000條西瓜的{色澤, 根蒂, 敲聲, 標簽}記錄。

  3. 樣本/示例(Sample/Instance)

    數據集中的單條記錄(如一條西瓜數據)。
    樣例(Example):帶標記(Label)的樣本(如標注"好瓜"的西瓜數據)。

  4. 特征/屬性(Feature/Attribute)

    描述樣本的維度(如西瓜的"色澤"),其取值稱屬性值(Attribute Value)(如"青綠")。

  5. 樣本空間(Sample Space)

    所有特征張成的多維空間,每個樣本是空間中的一個點(即特征向量)。
    示例:用[色澤, 根蒂, 敲聲]構建三維空間,每個西瓜對應一個坐標點。


2.2、學習過程術語

  1. 訓練(Training)

    從數據中學習模型的過程,核心是通過算法發現數據內在規律。

    • 訓練集(Training Set):用于訓練模型的數據集合(如80%的西瓜數據)

    • 訓練樣本(Training Sample):訓練集中的單條數據記錄(如一條西瓜的{色澤=青綠, 根蒂=蜷縮, 標簽=好瓜})
      示例:用1000條歷史病例訓練疾病診斷模型

  2. 假設(Hypothesis)

    模型對數據規律的推測(如“根蒂蜷縮的西瓜是好瓜”),目標是逼近真相(Ground-Truth)(客觀規律)。
    模型是假設的形式化表達,學習本質是尋找最佳假設

  3. 標記(Label)

    樣本的預測目標值(監督學習的核心),又稱標簽

    • 分類任務:離散值(如“好瓜/壞瓜”)

    • 回歸任務:連續值(如西瓜價格15.6元)
      帶標記的樣本稱為?樣例(Example)

  4. 假設空間(Hypothesis Space)

    所有可能假設的集合,反映問題的求解范圍。

    • 示例:西瓜分類問題中,所有由“色澤/根蒂/敲聲”組合構成的判斷規則

    • 數學表達:若特征有3個二值屬性,假設空間大小為?223=256223=256?種可能規則

  5. 版本空間(Version Space)

    假設空間中與訓練集一致的假設子集(即符合所有訓練樣本的假設)。

舉個例子:(西瓜分類)

  1. 訓練集

    • 樣本1:{色澤=青綠, 根蒂=蜷縮, 敲聲=濁響, 標簽=好瓜}

    • 樣本2:{色澤=烏黑, 根蒂=稍蜷, 敲聲=沉悶, 標簽=壞瓜}

  2. 假設空間

    • 假設1:根蒂=蜷縮 → 好瓜

    • 假設2:色澤=青綠 AND 敲聲=濁響 → 好瓜

  3. 版本空間生成

    • 若假設1能正確分類所有訓練樣本 → 進入版本空間

    • 若假設2將樣本2誤分類 → 被淘汰

  4. 最終模型
    從版本空間中根據歸納偏好選擇最優假設(如選擇最簡規則:“根蒂=蜷縮 → 好瓜”)

核心價值:版本空間縮小了搜索范圍,使學習算法能高效找到可行解,但最終模型選擇依賴算法偏好(如奧卡姆剃刀原則優先選擇簡單假設)。


2.3、性能評估術語

1.?誤差(Error)

定義:模型預測結果與真實值之間的差異。

  • 訓練誤差(Training Error):模型在訓練集上的誤差(反映模型對已知數據的擬合程度)。

  • 泛化誤差(Generalization Error):模型在新樣本上的誤差(反映模型的實際應用能力,核心優化目標)。

2.?泛化(Generalization)

定義:模型對未見過的數據的適應能力。

  • 核心目標:最小化泛化誤差(而非訓練誤差)。

  • 示例:背熟100道題得滿分(訓練誤差=0),但考試遇到新題不及格(泛化誤差高)→ 泛化失敗。?

3.?過擬合(Overfitting) vs 欠擬合(Underfitting)

現象本質原因表現解決方案
過擬合模型過度復雜,擬合了訓練數據中的噪聲訓練誤差極低,泛化誤差高正則化、增加數據量、簡化模型
欠擬合模型過于簡單,未捕捉數據規律訓練誤差和泛化誤差均高增加模型復雜度、特征工程

4.?測試集(Testing Set)

定義:用于最終評估模型泛化性能的獨立數據集,必須與訓練集完全互斥(無重疊樣本)。

  • 為什么需要?:防止模型通過“死記硬背”訓練數據獲得虛假高精度。

  • 實踐規則

    • 劃分比例:常用 70% 訓練集 / 30% 測試集

    • 嚴格隔離:測試集樣本絕不能參與訓練過程

    • 反例:若用全部數據訓練和測試,模型可能100%準確但實際無法預測新樣本。


2.4、算法哲學術語

  1. 歸納偏好(Inductive Bias)

    算法對特定假設的先天偏好(如決策樹偏好"信息增益高的特征")。

  2. NFL 定理(No Free Lunch Theorem)

    核心:沒有萬能最優算法!脫離具體問題,所有算法期望性能相同。
    啟示:為圖像識別選CNN,為表格數據選決策樹。

2.5、經典算法術語

AlgorithmKey ConceptCore Mechanism
線性模型(Linear Model)f(x)=w^{T}x+bInterpretable linear combinations
決策樹(Decision Tree)Tree-structured attribute partitioning (e.g., color → stem → sound)Splitting criteria (信息增益/Gini)
神經網絡(Neural Network)Layered nonlinear transformations反向傳播(Backpropagation, BP)
支持向量機(Support Vector Machine, SVM)Maximize-margin hyperplane核技巧(Kernel Trick)/支持向量(Support Vectors)

?3.歸納偏好與NFL定理

沒有最好的算法,只有最匹配問題的算法
—— 通過分析數據分布、目標函數、誤差容忍度,選擇偏好與問題對齊的模型。?

3.1、歸納偏好(Inductive Bias)

1. 核心內容

  • 定義算法對特定假設的固有偏好(如“簡單模型優先”),是模型從版本空間中選擇唯一解的必要條件。

  • 必要性
    若無偏好,當多個假設與訓練集一致時(如西瓜分類中“好瓜=根蒂蜷縮”和“好瓜=根蒂蜷縮且敲聲濁響”),算法無法穩定預測新樣本。

  • 表現形式

    • 奧卡姆剃刀:偏好更簡單的假設(如決策樹剪枝)。

    • 特征偏好:某些算法更關注特定特征(如SVM偏好間隔最大的分類面)。

2. 數學原理

  • 假設空間搜索約束


3.2、NFL定理(No Free Lunch Theorem)

1. 核心內容

  • 核心結論
    在所有可能問題分布均勻的假設下,任何算法的期望性能相同
    即:若算法A在問題集?F1??上優于B,則必存在問題集?F2?使B優于A。

  • 脫離具體問題談“最優算法”無意義,需匹配問題特性(如數據分布、目標函數)。

2. 數學原理

  • 目標函數均勻分布假設
    設真實目標函數?f均勻分布在所有可能函數空間?F?中。

  • 期望誤差推導

    證明核心:對所有?f?求和后,算法間的差異被抵消。


3.3、兩者關聯

  • 偏好決定性能邊界
    歸納偏好是算法“個性”,而NFL定理證明其性能高度依賴問題場景


3.4、NFL定理應用實例

案例:西瓜分類中的算法選擇
  • 場景1:真實規律為“根蒂蜷縮→好瓜”

    • 算法A:偏好“根蒂”特征(如決策樹按信息增益優先選擇根蒂)
      → 高準確率

    • 算法B:偏好“敲聲”特征(如人為設定特征權重)
      → 低準確率

  • 場景2:真實規律變為“敲聲濁響→好瓜”

    • 算法A:因錯誤偏好 → 準確率下降

    • 算法B:與問題匹配 → 準確率上升

  • NFL生效
    若均勻隨機出現兩種場景,算法A和B的長期平均準確率相同

實際項目應用建議:
  1. 問題分析優先

    • 考察數據分布(如特征相關性、噪聲水平)

    • 明確任務目標(如分類精度 vs. 模型解釋性)

  2. 算法匹配策略

    問題特性推薦算法原因
    特征間線性可分離SVM/線性模型偏好最大間隔/線性關系
    高維非結構化數據神經網絡偏好多層非線性特征提取
    需可解釋性決策樹偏好規則簡單性

3.5、關鍵問題解答

Q1: 算法A在部分問題優于B,在其他問題是否必然更差(僅個人不成熟的經驗)
  • 不一定。NFL定理僅保證在所有問題均勻分布時,A和B的平均性能相同。

  • 實際中:若現實問題分布不均勻(如圖像識別任務遠多于語音任務),某些算法可能長期占優。

Q2: 如何將NFL定理應用于實際項目(僅個人不成熟的經驗)
  1. “萬能算法”是幻想
    測試新問題時,至少比較3種不同偏好的算法(如樹模型、神經網絡、SVM)。

  2. 問題拆解匹配偏好

    • 子任務1(特征選擇):用偏好稀疏性的Lasso回歸

    • 子任務2(模式識別):用偏好復雜邊界的神經網絡

  3. 動態算法切換
    監控數據分布漂移(如用戶行為變化),當原有算法性能下降時,切換至匹配新分布的算法。

4、一圖小結

機器學習是?"數據→學習→模型→評估→優化"?的閉環系統,NFL定理要求我們根據問題特性動態調整算法偏好。?

5、模型評估與選擇?

5.1、過擬合/欠擬合

引用自西瓜書?

5.1.1、過擬合與欠擬合核心對比?
?5.1.2、直觀解析

過擬合

  • 關鍵錯誤:將訓練樣本的偶然特性(鋸齒)當作普遍規律

  • 現實案例:人臉識別模型將"戴眼鏡"作為必要特征,導致無法識別不戴眼鏡的用戶

欠擬合?

  • 關鍵錯誤:未學習到形狀、紋理等關鍵特征

  • 現實案例:垃圾郵件過濾僅基于關鍵詞"免費",誤判重要郵件

對照表
維度過擬合欠擬合
模型能力過于復雜(如深層神經網絡)過于簡單(如線性回歸)
數據匹配度模型復雜度 > 真實規律復雜度模型復雜度 < 真實規律復雜度
典型場景小樣本訓練復雜模型復雜問題用簡單模型
解決方案1. 增加訓練數據量
2. 正則化(L1/L2)
3. 降低模型復雜度
4. Dropout(神經網絡)
1. 增加模型復雜度
2. 特征工程
3. 延長訓練時間
4. 減少正則化強度

?5.2、模型評估方法

?5.2.1、留出法(hold-out)
  • 核心思想:將數據集?D?劃分為兩個互斥子集,分別作為訓練集?S(用于訓練模型)和測試集?T(用于評估性能),滿足D=S\bigcup T and S\bigcap T=\varnothing
  • 關鍵要求
    • 劃分需保持數據分布一致性(如分類任務采用 “分層采樣” 保持類別比例),避免引入偏差。
    • 單次劃分結果不穩定,通常需多次隨機劃分并取平均值(如 100 次劃分后的平均誤差)。
  • 常見比例:訓練集占 2/3~4/5,測試集占 1/5~1/3。

特點

  • 優點:簡單高效,適合大數據集

  • 缺點:單次劃分結果波動大(需多次隨機劃分取平均)

  • 關鍵要求

    • 分類任務必須分層采樣(保持類別比例)

    • 常用比例:訓練集:測試集 = 7:3 或 8:2

5.2.2、?交叉驗證法(Cross Validation)?

?引用自西瓜書?

  • 核心思想:將數據集?D?劃分為?k?個大小相似的互斥子集(通過分層采樣生成),每次用 k-1個子集的并集作為訓練集,剩余 1 個子集作為測試集,重復?k?次后取平均誤差,稱為 “k折交叉驗證”。
  • 常用設置
    • k=10(最常用,稱為 10 折交叉驗證)。
    • 為進一步提高穩定性,可采用 “p次k折交叉驗證”(如 10 次 10 折交叉驗證)。
  • 特例:留一法(LOO)
    • 當 k=m(m為樣本數)時,每次留 1 個樣本作為測試集,評估結果準確但計算開銷極大(需訓練m個模型)。

?

優勢

  • 充分利用數據(每個樣本都參與測試)

  • 評估結果更穩定(尤其適合小數據集)

?5.2.3、自助法(Bootstrapping)

我們希望評估的是用 D 訓練出的模型,但在留出法和交叉驗證法中,由于 保留了一部分樣本用于測試,因此實際評估的模型所使用的訓練集比 D 小,這 必然會引入一些因訓練樣本規模不同而導致的估計偏差,留一法受訓練樣本規 模變化的影響較小,但計算復雜度又太高了,有沒有什么辦法可以減少訓練樣 本規模不同造成的影響,同時還能比較高效地進行實驗估計呢??

引用自西瓜書?

自助采樣流程

  1. 初始化:空訓練集?D′=?

  2. 循環采樣(重復?m次):

    • 從?D?中隨機選取一個樣本?xi

    • 將?xi的拷貝加入?D′

    • 將?xi?放回?D?中

  3. 生成測試集
    T={x∈D∣x?D′}(包外樣本)

示例
原始數據集?D={A,B,C},m=3 次采樣:

  • 第1次:抽到B →?D′={B}

  • 第2次:抽到B →?D′={B,B}

  • 第3次:抽到A →?D′={B,B,A}
    測試集?T={C}(未出現的樣本)

數學證明?(字較丑,讀友見諒)

方法特性分析

優勢
特點說明應用價值
訓練集規模(D'= m )(與原始數據集相同)小數據集也能充分訓練模型
天然劃分自動生成包外測試集無需人工劃分數據
多重復用可重復采樣生成多個D′集成學習(如Bagging)的基礎
無分布假設不依賴數據分布特性適用于任意數據類型
局限
問題數學解釋影響
分布偏差D′中樣本獨立同分布假設被破壞模型估計可能有偏
樣本相關性重復樣本導致訓練集樣本間獨立性降低方差估計不準確
包外樣本偏差包外樣本非均勻覆蓋(某些樣本從未被測試)評估結果可能有噪點

?6、性能度量指標

性能度量(performance measure)是衡量學習器泛化能力的評價標準,其選擇需結合具體任務需求。?

6.1、回歸任務性能度量

回歸任務的目標是預測連續值,核心是衡量預測值與真實值的差異,最常用指標為均方誤差。?

均方誤差(Mean Squared Error, MSE)?

實例分析:房價預測

樣本集(單位:萬元)

樣本真實房價?y_{i}預測房價f(x_{i})誤差f(x_{i})-y^{i}平方誤差
1300280-20400
2450460+10100
3500520+20400
4380350-30900
5600620+20400

可讀出的結論:

  1. 平均偏差
    雖然單樣本誤差有正有負,但平方消除方向影響,反映絕對偏差

  2. 異常值敏感
    樣本4的誤差(-30)平方后達900,顯著拉高MSE,?說明模型對低價房預測較差

  3. 業務轉換

    • 均方根誤差(RMSE):440≈21 → 平均預測偏差21萬元

    • 相對誤差:21/300=7%(低價房),21/600=3.5%(高價房)

結論:?

1. 模型方差(8,100 ≈ 44.7%)

  • 來源:模型對輸入?x?的波動過于敏感

  • 數學表現:Var(f(x))=0.81×Var(x)

2. 偏差平方(25 ≈ 0.14%)

  • 來源:模型系統性地高估房價 5 萬元

  • 數學表現:E[f(x)]?E[y]=5

3. 數據噪聲(10,000 ≈ 55.2%)

  • 來源:房價本身受市場、地段等不可控因素影響

  • 數學表現:Var(y)=10,000

  • 關鍵認知

    "這是無法通過模型優化的固有誤差,代表預測精度的理論極限"

分解證明:

?

6.2、分類任務常用性能度量

?分類任務的目標是預測離散類別,需根據任務關注的重點(如 “預測的準確率”“是否漏檢” 等)選擇指標,核心指標包括錯誤率、精度、查準率 - 查全率 - F1、ROC-AUC 等。

錯誤率與精度

1. 錯誤率(Error Rate)

  • 本質:錯分樣本占比

  • 示例
    100個樣本中錯分15個 → 錯誤率=15%

2. 精度(Accuracy)

  • 本質:正確分類樣本占比

查準率(P)、查全率(R)與F1

混淆矩陣基礎

預測正例

預測反例

真實正例

TP

FN

真實反例

FP

TN

查準率(Precision)

  • 意義:預測正例的可靠程度
    例:推薦系統預測"用戶會點擊"的準確率

查全率(Recall)

  • 業務意義:正例樣本的覆蓋程度
    例:疾病篩查中真正患者的檢出率

  • 優化場景

    • 逃犯檢索(避免漏檢)

    • 缺陷產品召回(減少漏召回)

F1 與 Fβ 分數(Precision、Recall)

指標

公式

特點

F1

平衡P與R(調和平均)

按需加權(β控制偏好)

  • β的作用

    • β > 1:更重查全率(如癌癥篩查設β=2)

    • β < 1:更重查準率(如推薦系統設β=0.5)

引用自西瓜書??

?數學角度分析:

?β值選擇決策矩陣?

實例解析:電商評論情感分析

場景設定

  • 任務:判斷評論是否負面(正例=負面評論)

  • 混淆矩陣

                 預測負面  預測非負面
    真實負面       80 (TP)   20 (FN)
    真實非負面     30 (FP)   870 (TN)

指標計算

  1. 查準率

    意義:預測為負面的評論中有72.7%真為負面

  2. 查全率

    意義:所有負面評論中80%被正確識別

  3. F1分數

ROC-AUC

?引用自西瓜書?

ROC曲線核心:

  • 橫軸 (FPR - False Positive Rate):?FPR = FP / (FP + TN) = FP / N代價:?誤把負例判為正例的比例。我們希望它越低越好

  • 縱軸 (TPR - True Positive Rate / Recall / Sensitivity):?TPR = TP / (TP + FN) = TP / P收益:?正確識別出正例的比例。我們希望它越高越好

  • 本質:?ROC曲線描繪了當分類器的判別閾值(threshold)?從最嚴格(所有樣本判負,TPR=0, FPR=0)到最寬松(所有樣本判正,TPR=1, FPR=1)連續變化時,模型在“收益(TPR)”和“代價(FPR)”之間做出的權衡(Trade-off),即為了獲得更高的正類識別率 (TPR),愿意承受多少負類的誤報率 (FPR)

  • 理想點 (0,1):?FPR=0(沒有誤判負例),TPR=1(所有正例都被正確識別)。完美分類器。

AUC核心:

  • 定義:?ROC曲線下的面積,取值范圍[0, 1]。
  • 物理意義 (最重要!):?隨機選取一個正樣本和一個負樣本,分類器給正樣本的打分高于給負樣本打分的概率。即?AUC = P(Score? > Score?)

????????解讀:

  • AUC = 0.5:模型沒有區分能力(等價于隨機猜測)。
  • AUC > 0.5:模型具有一定的區分能力。值越接近1,區分能力越強。
  • AUC < 0.5:模型性能比隨機猜測還差(通常意味著模型預測反了,將正負類標簽互換即可得到?AUC > 0.5?的模型)。
  • 優點:?AUC值是一個單一標量,綜合評估了模型在不同閾值下的整體性能,非常適合用于模型排序(哪個模型更好)。

計算 AUC (Area Under the ROC Curve) 主要有兩種常用方法,它們本質上是等價的,但在實現上各有側重

?方法一:基于物理意義/排序法 (更常用、更高效)

這種方法直接利用 AUC 的物理意義:隨機取一個正樣本和一個負樣本,分類器給正樣本的打分高于負樣本打分的概率。其計算步驟如下:

  1. 排序樣本:

    • 將所有樣本(包括正樣本和負樣本)按照模型輸出的預測得分/概率進行從高到低排序(最可能為正的排在最前面)。

    • 如果多個樣本的預測得分相同,需要特殊處理(見第2步)。

  2. 計算秩 (Rank):

    • 給排序后的每個樣本分配一個秩 (Rank)

    • 規則:

      • 得分最高的樣本秩為?n?(總樣本數?n = P + N)。

      • 得分最低的樣本秩為?1

      • 關鍵:對于預測得分相同的樣本,它們的秩取這些樣本位置序號的?平均值

        • 例如,排序后第 3, 4, 5 位的樣本得分相同,那么它們的秩都是?(3 + 4 + 5) / 3 = 4

  3. 計算正樣本的秩和:

    • 將所有正樣本 (P個)?的秩加起來,得到?SumRank?

  4. 應用公式計算 AUC:

    • 使用以下公式:
      AUC = (SumRank? - P*(P+1)/2) / (P * N)

公式推導理解:

核心目標:計算正樣本得分 > 負樣本得分的概率

AUC 的物理意義是:隨機取一個正樣本和一個負樣本,正樣本預測得分高于負樣本的概率
等價于計算:
滿足?正樣本得分 > 負樣本得分?的 (正, 負) 樣本對數量 ÷ 所有可能的 (正, 負) 樣本對總數
其中:

所有可能的 (正, 負) 樣本對總數 =?P * N

關鍵思路:利用排序后的秩(Rank)

  1. 對所有樣本按得分從高到低排序(得分最高排最前面)

  2. 給每個樣本分配一個秩(Rank)

    • 排名第1的樣本 → Rank =?n?(總樣本數?n = P + N)

    • 排名第2的樣本 → Rank =?n-1

    • ...

    • 排名最后的樣本 → Rank =?1

    • 注:得分相同時,取平均秩(后面解釋)

  3. 計算所有正樣本的秩之和?→?SumRank?

為什么秩(Rank)能幫我們計算比較結果?

一個樣本的?Rank?值本質表示:有多少個樣本排在它后面(得分比它低)
因為:

  • 最高分樣本:后面有?n-1?個樣本 → Rank =?n

  • 最低分樣本:后面有?0?個樣本 → Rank =?1

對于任意一個正樣本,它的?Rank?值可拆解為:
Rank? = 排在其后的負樣本數 + 排在其后的正樣本數 + 1
(+1 是因為秩從1開始計數)

推導第1步:展開所有正樣本的秩和

把所有正樣本的 Rank 加起來:
SumRank? = Σ(每個正樣本的Rank) = Σ[ (排在其后的負樣本數) + (排在其后的正樣本數) + 1 ]

拆解成三部分:
=?Σ(排在其后的負樣本數)?+?Σ(排在其后的正樣本數)?+?Σ(1)

其中:

  • Σ(1)?= 正樣本總數 =?P

  • Σ(排在其后的正樣本數)?=?正樣本之間的比較次數
    (即每個正樣本后面還有幾個其他正樣本)

推導第2步:理解?Σ(排在其后的正樣本數)

想象所有正樣本的排序:

  • 最靠前的正樣本:后面有?(P-1)?個正樣本

  • 第二靠前的正樣本:后面有?(P-2)?個正樣本

  • ...

  • 倒數第二的正樣本:后面有?1?個正樣本

  • 最后的正樣本:后面有?0?個正樣本

所以:
Σ(排在其后的正樣本數) = 0 + 1 + 2 + ... + (P-1) = P(P-1)/2
(等差數列求和公式)

推導第3步:代回秩和公式

將上面結果代回:
SumRank? = Σ(排在其后的負樣本數) + P(P-1)/2 + P
化簡:
=?Σ(排在其后的負樣本數) + P(P+1)/2

因此移項得:
Σ(排在其后的負樣本數) = SumRank? - P(P+1)/2

核心洞見:Σ(排在其后的負樣本數)?就是我們要的答案!

Σ(排在其后的負樣本數)?的實際意義
遍歷每個正樣本,計算?有多少個負樣本排在該正樣本后面(即得分比該正樣本低)
這正是?所有滿足?正樣本得分 > 負樣本得分?的 (正, 負) 對的數量

最終得到AUC公式

滿足條件的正負對數 =?SumRank? - P(P+1)/2
總正負對數 =?P * N

所以:
AUC = [SumRank? - P(P+1)/2] / (P * N)

得分相同的情況如何處理?

當多個樣本得分相同時:

  1. 它們在排序中占據連續位置(比如位置 k, k+1, ..., k+m-1)

  2. 它們的秩取平均值:(k + (k+1) + ... + (k+m-1)) / m

為什么取平均秩?

  • 物理意義:如果1個正樣本和1個負樣本得分相同,我們認為正樣本 > 負樣本的概率是 0.5(即平局折半)

  • 平均秩的分配方式恰好保證了:
    正樣本Rank - 負樣本Rank = 0.5
    從而在公式中實現?+0.5?的計數效果

  • 最終計算概率:?(滿足條件的正負對數) / (總正負對數) = [SumRank? - P*(P+1)/2] / (P * N)

例子:
假設有 10 個樣本:3 個正樣本 (P=3),7 個負樣本 (N=7)。模型預測得分排序后樣本類型和計算的秩如下:

樣本位置 (得分高->低)

1

2

3

4

5

6

7

8

9

10

樣本類型

P

N

P

N

N

N

P

N

N

N

秩 (Rank)

10

9

8

7

6

5

4

3

2

1

  • 正樣本的秩:位置1: 10, 位置3: 8, 位置7: 4

  • SumRank? = 10 + 8 + 4 = 22

  • P*(P+1)/2 = 3*4/2 = 6

  • P*N = 3*7 = 21

  • AUC = (22 - 6) / 21 = 16 / 21 ≈ 0.7619

方法二:梯形積分法 (基于 ROC 曲線繪制)

這種方法在繪制出 ROC 曲線后,通過計算曲線下的面積來得到 AUC。步驟如下:

  1. 繪制 ROC 曲線:

    • 按預測得分從高到低排序樣本。

    • 設定初始閾值最大:(FPR, TPR) = (0, 0)

    • 依次降低閾值(或依次將每個樣本劃為正例):

      • 如果當前樣本是?真正例 (TP)TPR?增加?1/P,點在圖上?垂直向上?移動?1/P

      • 如果當前樣本是?假正例 (FP)FPR?增加?1/N,點在圖上?水平向右?移動?1/N

      • 關鍵:遇到預測得分相同的樣本時,將它們一起處理:

        • 計算這批得分相同的樣本中真正的正例數 (TP_batch) 和假正例數 (FP_batch)。

        • TPR?一次性增加?TP_batch / P

        • FPR?一次性增加?FP_batch / N

        • 在圖上從上一個點?(FPR_prev, TPR_prev)?移動到新點?(FPR_prev + FP_batch/N, TPR_prev + TP_batch/P)

    • 最終到達?(1, 1)

  2. 計算曲線下面積:

    • 將 ROC 曲線看作由一系列連續的點?(x_i, y_i)?連接而成(包括起點?(0, 0)?和終點?(1, 1))。

    • 使用?梯形法則 (Trapezoidal Rule)?計算曲線下的面積:
      AUC = Σ? [ (x??? - x?) * (y? + y???) / 2 ]

    • 這個公式計算的是相鄰兩點?(x?, y?)?和?(x???, y???)?之間形成的梯形面積,然后將所有梯形面積求和。

    • 也可以寫成:
      AUC = (1/2) * Σ? [ (x??? - x?) * (y? + y???) ]

例子:?(使用上例數據)
假設繪制 ROC 曲線得到以下關鍵點(按順序):
(x, y) = (0, 0), (0, 1/3), (1/7, 1/3), (1/7, 2/3), (2/7, 2/3), (2/7, 1), (1, 1)

  • 計算相鄰點間梯形面積:

    • (0,0) -> (0, 1/3):?(0-0)*(0 + 1/3)/2 + (1/3 - 0)*(0 + 0)/2??特殊處理:垂直移動,寬度為0,面積為0。

    • (0, 1/3) -> (1/7, 1/3): 水平移動?Δx = 1/7,?y? = y? = 1/3。面積 =?(1/7) * (1/3 + 1/3)/2 = (1/7) * (2/3)/2 = (1/7)*(1/3) = 1/21

    • (1/7, 1/3) -> (1/7, 2/3): 垂直移動?Δx=0, 面積為0。

    • (1/7, 2/3) -> (2/7, 2/3): 水平移動?Δx=1/7,?y?=y?=2/3。面積 =?(1/7) * (2/3 + 2/3)/2 = (1/7) * (4/3)/2 = (1/7)*(2/3) = 2/21

    • (2/7, 2/3) -> (2/7, 1): 垂直移動?Δx=0, 面積為0。

    • (2/7, 1) -> (1, 1): 水平移動?Δx=5/7,?y?=y?=1。面積 =?(5/7) * (1 + 1)/2 = (5/7)*1 = 5/7

  • 總 AUC = 0 + 1/21 + 0 + 2/21 + 0 + 5/7 = (1/21 + 2/21) + 15/21 = 3/21 + 15/21 = 18/21 = 6/7 ≈ 0.8571`

    • 注意:這個例子中的點序列和計算只是為了演示梯形法,結果與排序法例子的結果不同,因為樣本類型和順序是假設的。

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

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

相關文章

spring/springboot SPI(二)配合使用的接口

spring.factories 里&#xff0c;Spring 會根據接口來加載實現類&#xff0c;常見的幾個接口包括&#xff1a;一、org.springframework.context.ApplicationListener1、作用監聽 Spring 容器事件&#xff0c;如 ApplicationReadyEvent。2、使用方法項目結構Spring Boot 2.xSpri…

基于Zig語言,opencv相關的c++程序靜態交叉編譯

一、寫在前面 1.什么是zig? Zig 是一種通用編程語言&#xff1b; Zig 最初的定位就是代替C語言的系統級語言&#xff0c;它提供了與 C 語言幾乎 100% 兼容&#xff08;可直接調用 C 頭文件、鏈接 C 庫&#xff09;&#xff0c;同時不需要任何依賴構建系統。 Zig 同時附帶一…

基于 LSTM 與 SVM 融合的時間序列預測模型:理論框架與協同機制—實踐算法(1)

目錄 1、單一模型的局限性&#xff1a;混合架構的設計動機 2、LSTM 的時序特征提取&#xff1a;從原始序列到高階表征 2.1、門控機制的時序過濾能力 2.2、隱藏狀態的特征壓縮作用 2.3、預訓練的特征優化邏輯 3、SVM 的非線性映射&#xff1a;從高階特征到預測輸出 3.1、…

如何查看docker實例是否掛載目錄,以及掛載了哪些目錄

一條命令即可一次性列出當前容器里所有掛載點&#xff1a; docker inspect <容器ID或名稱> --format{{range .Mounts}}{{printf "%-8s %-35s -> %s\n" .Type .Source .Destination}}{{end}}示例輸出&#xff1a; bind /host/owrt/src …

Opentrons 模塊化平臺與AI技術助力智能移液創新,賦能AAW?自動化工作站

在生命科學領域加速擁抱自動化的關鍵節點&#xff0c;全球開源實驗室自動化領導者 Opentrons 攜手全球領先生命科學公司默克生命科學&#xff0c;重磅推出 AAW?智能自動化液體處理平臺。這一戰略合作的核心技術引擎 ——Opentrons Flex 第三代全自動移液工作站&#xff0c;正以…

C++學習筆記(八:函數與變量)

往篇內容&#xff1a; C學習筆記&#xff08;一&#xff09; 一、C編譯階段※ 二、入門案例解析 三、命名空間詳解 四、C程序結構 C學習筆記&#xff08;二&#xff09; 五、函數基礎 六、標識符 七、數據類型 補充&#xff1a;二進制相關的概念 sizeof 運算符簡介 補…

智慧施工:施工流程可視化管理系統

圖撲智慧施工全流程可視化管理系統&#xff0c;通過可視化界面&#xff0c;可直觀掌握各工序銜接進度、資源調配情況&#xff0c;快速識別違規作業、設備故障等風險點 —— 如塔吊運行半徑重疊、深基坑支護位移預警等。同時&#xff0c;系統支持施工方案模擬推演&#xff0c;對…

單鏈表的冒泡排序實現:從原理到代碼詳解

單鏈表的冒泡排序實現&#xff1a;從原理到代碼詳解 引言 單鏈表作為一種常見的數據結構&#xff0c;其排序操作因節點無法隨機訪問&#xff08;需通過指針遍歷&#xff09;而與數組排序存在差異。冒泡排序因其實現簡單、無需額外空間&#xff08;僅需指針操作&#xff09;&…

如何在 Ubuntu 24.04 或 22.04 上安裝和使用 GDebi

APT 是 Ubuntu 上安裝需要外部依賴項的 Debian 包的一種方式,但還有另一種選擇,即 GDebi。本文將介紹如何在 Ubuntu 24.04 上安裝 GDebi,以及如何使用它來安裝 .deb 包所需的依賴項。 什么是 GDebi? GDebi 是默認的 .deb 包安裝器 DPKG 的輕量級替代品。與 DPKG 不同,GD…

俄羅斯方塊游戲開發(面向對象編程)

摘要本設計基于MATLAB面向對象編程技術&#xff0c;開發了一款具備完整游戲邏輯的俄羅斯方塊游戲。通過類封裝實現游戲核心模塊&#xff08;方塊管理、游戲板狀態、碰撞檢測等&#xff09;&#xff0c;采用旋轉矩陣實現方塊變形&#xff0c;結合MATLAB圖形用戶界面&#xff08;…

背包DP之多重背包

背包DP之多重背包一、多重背包基礎認知1.1 問題定義1.2 核心特征二、基礎解法&#xff1a;暴力拆分2.1 核心思路2.2 代碼實現2.3 局限性分析三、優化解法&#xff1a;二進制拆分3.1 優化原理3.2 拆分步驟3.3 代碼實現3.4 復雜度分析四、二進制拆分過程五、多重背包的變種與應用…

Ansible 變量指南:聲明、優先級、作用域與最佳實踐(一)

Ansible 變量的聲明 前言 全面理解 Ansible 變量是編寫高效、可維護 Playbook 的關鍵。由于最近使用 Ansible 比較多&#xff0c;在變量問題上踩了不少坑&#xff0c;也因此對變量的聲明&#xff0c;優先級和作用域有了更深的理解。姑且總結一下&#xff0c;分享給大家&#…

[極客大挑戰 2019]FinalSQL--布爾盲注

直接看題可以看到題目給了提示盲注&#xff01;那么接下來就是尋找注入點了&#xff01;那么不能發現注入點就是id了&#xff01;注入類型為數值型注入&#xff01;這里直接嘗試盲注。但是這里and被過濾了&&也不行。問了幾個師傅說用or&#xff0c;但是空格被過濾了&am…

再談fpga開發(狀態機的應用)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】前面說過&#xff0c;fpga上面最基礎的部分是寄存器&#xff0c;而所有寄存器存在每一個clock下&#xff0c;都有被翻轉的可能性。至于這些寄存器是…

TCP如何解決網絡切換問題

一、傳統TCP的網絡切換問題核心問題&#xff1a;TCP 連接基于四元組&#xff08;源IP、源端口、目的IP、目的端口&#xff09;&#xff0c;IP 變化導致連接失效二、改進方案與技術演進1. MPTCP&#xff08;多路徑TCP&#xff09; - 主流解決方案核心機制&#xff1a;單連接多路…

【Linux】常用命令(一)

【Linux】常用命令 一1. ls1.1 ls -a 顯示所有文件及其目錄1.2 ls -A 不顯示當前目錄和父目錄1.3 ls -d 顯示目錄本身&#xff0c;而不是顯示其內部內容1.4 ls -i 顯示文件的inode屬性信息1.4.1 實際用途場景1.5 ls -l 顯示文件的詳細屬性信息1.6 ls -R 遞歸顯示所有子文件1.7 …

Window 部署 coze-stdio(coze 開發平臺)

參考鏈接 https://github.com/coze-dev/coze-studio/wiki/2.-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B https://github.com/coze-dev/coze-studio/wiki/3.-%E6%A8%A1%E5%9E%8B%E9%85%8D%E7%BD%AE 環境說明 Docker&#xff1a;28.3.2 系統&#xff1a;Window 11 配置要求 CP…

【Git】Git LFS的使用

一、簡介 Git LFS&#xff08;Git Large File Storage&#xff09;是由 GitHub 開發的一款 Git 擴展工具&#xff0c;旨在幫助開發者更高效地管理倉庫中的大文件。傳統 Git 會將文件的每個版本完整存儲在倉庫歷史中&#xff0c;導致大文件&#xff08;如音頻、視頻、數據集、二…

不坑盒子:Word里1秒制作“花括號”題目,多音字組詞、形近字組詞……

1. 30秒看懂它能干啥 用“不坑盒子”插件&#xff0c;在 Word 里輸入&#xff1a; 樂,l(快樂),yu(音樂);長,chng(長短),zhǎng(長大)點一下【總分關系】&#xff0c;瞬間出現左邊是“樂”右邊并列兩行拼音括號的花括號結構&#xff1b;再點【并列關系】&#xff0c;又能做出只…

Gateway網關層灰度方案—xx互聯網醫院系統灰度發布設計與思路詳解

通過之前技術的積累&#xff0c;終于開始了本文的編寫&#xff0c;如果對灰度、負載均衡、上下文傳遞、網關不太理解&#xff0c;可以先學習博主的以下博客內容。共勉&#xff1a; 企業級 Java 應用灰度發布設計方案與實踐全解析《Spring 中上下文傳遞的那些事兒》 Part 1&…