当前位置: 首页 > news >正文

机器学习(重学版)基础篇(概念与评估)

 本篇参考周志华老师的西瓜书,但是本人学识有限仅能理解皮毛,如有错误诚请读友评论区指正,万分感谢。

一、基础概念与评估方法

本节目标:建立理论基础框架​

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/7y₁ = 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/7y₁=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/7y₁=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.dtcms.com/a/300211.html

相关文章:

  • 算子推理是什么
  • GStreamer中Pipeline(管道)
  • 速通python加密之base64
  • 《C++》模板详解
  • odoo代码分析(二)
  • 一键实现推送服务:Docker部署ntfy开源通知系统指南
  • STM32-定时器的基本定时/计数功能实现配置教程(寄存器版)
  • 数据结构习题--删除排序数组中的重复项
  • Linux内核设计与实现 - 第13章 虚拟文件系统(VFS)
  • TCP如何解决网络切换问题
  • Flutter开发实战之原生平台集成
  • FROM stakater/java8-alpine 构建cocker镜像
  • React入门学习——指北指南(第三节)
  • 【星野AI】minimax非活动时间充值优惠漏洞
  • 数据存储:OLAP vs OLTP
  • java基础(day16)set-map
  • 从0到1学Pandas(七):Pandas 在机器学习中的应用
  • AI Agent开发学习系列 - langchain之LCEL(5):如何创建一个Agent?
  • React入门学习——指北指南(第五节)
  • java集合框架面试点(2)
  • [2025CVPR-图象合成、生成方向]ODA-GAN:由弱监督学习辅助的正交解耦比对GAN 虚拟免疫组织化学染色
  • 《每日AI-人工智能-编程日报》--2025年7月26日
  • 四大主流AI Agent框架选型梳理
  • 零基础学习性能测试第三章:jmeter性能组件应用(事件,并发,定时器)
  • DriverManager在rt.jar里,凭什么能加载到classpath下的驱动?
  • CPA战略-4.1-公司战略与组织结构
  • 人形机器人_双足行走动力学:弹性势能存储和步态能量回收
  • 聚类里面的一些相关概念介绍阐述
  • 杰理蓝牙耳机开发--三轴加速度传感器与IIC通信
  • Python:PyAutoGUI模拟鼠标移动点击事件,程序运行后,如何获取鼠标控制权了?