Platt scaling

Platt Scaling是一种将机器学习模型输出转换为概率分布的方法。通过逻辑回归校准分类得分,能够提供预测类别的同时给出置信度估计。这种方法适用于二分类问题,通过对分类得分应用逻辑回归转换,从而获得更准确的概率估计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在机器学习中,platt scaling 或者 platt calibration 是把模型的输出转化成一种基于类别的概率分布的方法。这个方法代替了早期的Vapnik提出的方法,但是这个方法可以应用于其他的分类模型。platt是把一个逻辑回归模型拟合分类分数的方法。

在二分类中,对于输入x,我们想要知道它属于两类中的哪一类,我们假定这个分类任务可以用一个函数f解决,预测y=sign(f(x)),对于many问题,很方便获得P(y=1|x),例如一个分类器不仅给出预测的结果,而且给出置信度。但是有的模型却没有给出。

platt scaling 是一个解决上述问题的算法:

对分类的分数f(x)进行了逻辑回归转化,A和B是分类器学习得到的两个参数。转化后,由P(y=1|x)>0.5

可以预测y=1,如果B不等于0,和之前的y=sign(f(x))相比,概率估计包含了一个纠正项,

使用最大似然法估计A和B,和分类器f用同样的训练集,为了防止过拟合,可以保留calibration set 或者使用交叉验证,并且应该把标签y转化成目标概率:


N+和N-分别表示正样本和负样本的个数,This transformation follows by applying Bayes' rule to a model of out-of-sample data that has a uniform prior over the labels.[1]

在二分类任务中实现 **“概率输出”**(即预测样本属于正类的概率,如“是裂解酶的概率”),核心是通过 **模型结构设计、损失函数选择** 让输出自然体现“置信度”,以下从原理到实践逐步解析: ### **一、核心逻辑:用“Sigmoid+交叉熵”实现概率预测** 二分类的概率输出,本质是让模型学习 **“正类的置信度”**(范围0~1),而非直接输出0/1的硬分类。关键在于 **输出层的激活函数** 和 **损失函数的配合**: #### **1. 模型输出层设计:Sigmoid激活函数** - **结构**:最后一层设 **1个神经元**,输出经 **Sigmoid函数** 压缩到 (0, 1) 区间,记为 \( p \)(代表“属于正类的概率”)。 - **数学公式**: \[ p = \sigma(z) = \frac{1}{1 + e^{-z}} \] 其中 \( z \) 是最后一层的线性输出(未激活的原始值),Sigmoid将 \( z \) 映射到0~1,**数值上可解释为“正类的概率”**(工程上的近似,严格概率需校准,见下文)。 #### **2. 损失函数:二元交叉熵(BCE)** 为了让模型学习“概率与真实标签的匹配度”,需用 **二元交叉熵损失(Binary Cross Entropy, BCE)**,公式: \[ \text{Loss} = -\frac{1}{N} \sum_{i=1}^N \left[ y_i \cdot \log(p_i) + (1-y_i) \cdot \log(1-p_i) \right] \] - **\( y_i \)**:样本i的真实标签(0=负类,1=正类); - **\( p_i \)**:模型预测的正类概率(Sigmoid输出)。 - **作用**: - 若样本是正类(\( y_i=1 \)),损失主要惩罚 \( p_i \) 偏小(如 \( p_i=0.1 \) 时,\(\log(0.1)\) 很小,损失很大); - 若样本是负类(\( y_i=0 \)),损失主要惩罚 \( p_i \) 偏大(如 \( p_i=0.9 \) 时,\(\log(0.1)\) 很小,损失很大)。 最终模型会调整参数,让 \( p_i \) 尽可能接近真实标签 \( y_i \)。 ### **二、关键细节:从训练到推理的全流程** #### **1. 训练阶段:模型如何学习“概率”?** - **数据输入**:蛋白序列→特征(如ProtT5嵌入、理化特征)→输入模型。 - **前向传播**:特征经网络层计算,最后一层输出 \( z \),再经Sigmoid得到 \( p \)(概率)。 - **反向传播**:BCE损失的梯度会指导模型调整参数,让 \( p \) 更接近真实标签(如正类样本的 \( p \) 趋近于1,负类趋近于0)。 #### **2. 推理阶段:如何解释“概率”?** 模型输出的 \( p \) 是 **“模型对正类的置信度”**,可直接作为“是裂解酶的概率”,但需注意: - **工程近似**:Sigmoid输出的 \( p \) 并非严格的统计概率(如所有 \( p=0.8 \) 的样本,实际正类比例可能不是80%),若需严格概率解释,需 **校准**(见下文)。 - **决策灵活**:保留概率值可支持动态阈值调整(如高风险场景设 \( p>0.8 \) 才判定为正类,降低误判;低风险场景设 \( p>0.5 \),提高召回)。 ### **三、进阶优化:概率校准(可选但重要)** 若需让 \( p \) 更接近**统计意义的概率**(如 \( p=0.8 \) 代表“100个这样的样本中,约80个是正类”),需进行 **概率校准**,常用方法: #### **1. Platt ScalingPlatt 缩放 )** - **原理**:对Sigmoid输出的 \( p \) 做线性变换,拟合真实概率: \[ p_{\text{calibrated}} = \frac{1}{1 + e^{-(a \cdot p + b)}} \] - **训练**:用验证集的预测 \( p \) 和真实标签,拟合参数 \( a \) 和 \( b \)(最小化BCE损失)。 - **优势**:计算简单,适合小数据。 #### **2. Isotonic Regression( 保序回归 )** - **原理**:非参数方法,直接拟合预测 \( p \) 和真实正类比例的单调关系,保证校准后 \( p_{\text{calibrated}} \) 随原始 \( p \) 单调递增。 - **优势**:校准更精准,适合大数据; - **缺点**:计算成本高,可能过拟合(需正则化)。 ### **四、对比:为什么不用MSE做“概率回归”?** 若强行用 **均方误差(MSE)** 作为损失(把概率预测当回归任务),会存在以下问题: 1. **优化目标错位**: MSE优化“数值误差”(如 \( p=0.8 \) 和 \( y=1 \) 的误差是0.04),但分类任务更关注“是否判对”(如 \( p=0.9 \) 比 \( p=0.6 \) 更接近正类,但若真实是负类,\( p=0.6 \) 比 \( p=0.9 \) 误差更小,这与分类逻辑矛盾)。 2. **梯度消失问题**: 当 \( p \) 接近0或1时,MSE的梯度(\( 2(p-y) \))会非常小(如 \( p=0.99, y=1 \) 时,梯度=0.02),导致模型难以收敛到明确的分类边界;而BCE的梯度(\( \frac{y-p}{p(1-p)} \))在极端值时更大(如 \( p=0.99, y=1 \) 时,梯度≈1.01),更利于模型学习。 ### **五、总结:二分类概率输出的实现路径** | 步骤 | 核心动作 | |---------------------|--------------------------------------------------------------------------| | **模型结构** | 输出层用1个神经元 + Sigmoid激活,输出 \( p \in (0,1) \) | | **损失函数** | 二元交叉熵(BCE),让 \( p \) 逼近真实标签 | | **推理与解释** | 直接用 \( p \) 作为“正类概率”,灵活调整决策阈值 | | **进阶优化(可选)** | 用Platt Scaling或Isotonic Regression校准概率,提升统计解释性 | 通过以上设计,你的模型既能输出“裂解酶的概率评分”(满足任务需求),又能利用二分类的成熟方法(如ASL处理类别不平衡,见前文分析),实现性能与解释性的平衡。
最新发布
07-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值