等渗回归 模拟器 返回
非参数回归

等渗回归 模拟器 — 单调约束与PAV

仅假设单调性约束的非参数回归「等渗回归 (Isotonic Regression)」,可实时改变样本数、噪声水平、约束方向进行观察的工具。可视化 PAV (Pool Adjacent Violators) 算法的行为、违反点数、池块数、与 OLS 的 MSE 比。

参数设置
样本数 N
观测点 (x_i, y_i) 的总数
真实斜率 β
真实关系 y = β·x 的斜率
噪声标准差 σ
加性高斯噪声 ε ~ N(0, σ²)
单调约束
函数 f 应满足的顺序
损失函数
残差评估方法
平滑带宽
0 = 纯阶跃函数,>0 为相邻平均
计算结果
真实斜率 β
违反点数
池块数
平均块大小
MSE 比 vs OLS
单调约束
散点图 + 等渗回归阶跃函数(PAV 块突出显示)

蓝点:观测值 (x_i, y_i),红线:OLS 直线拟合,蓝阶跃:等渗回归输出。池化区间用浅青色带突出显示。

观测数据 vs 等渗回归结果
MSE 比 (等渗 / OLS) vs 样本数 N
理论·主要公式

$$\hat f = \arg\min_{f\,\uparrow} \sum_{i=1}^{N} (y_i - f(x_i))^2$$

f↑ 为单调递增(或递减)约束。PAV 在 O(N) 时间内提供最优解。

$$\hat f_{\text{block}}(x) = \frac{1}{|B|}\sum_{i\in B} y_i, \quad B\text{:保持单调性的最大池}$$

各块 B 的预测值为其平均值。相邻块如果破坏顺序则合并再平均。

$$\mathrm{MSE}_{\text{iso}} \sim \frac{\sigma^2}{N^{2/3}}, \qquad \mathrm{MSE}_{\text{OLS}} \sim \frac{\sigma^2}{N}$$

等渗回归的收敛速度为 N^(-2/3),比线性模型的 N^(-1) 较慢。但当形式假设偏离时无偏差。

等渗回归 (Isotonic Regression) — 单调约束非参数回归

🙋
「等渗回归」是我第一次听说,和普通线性回归有什么区别吗?
🎓
简单说,它不假设「直线」或「二次曲线」这样的形式,只假设「单调递增或递减」。线性回归固定 y = ax+b 的形式,但等渗回归只要求 y 关于 x 单调。因此无论是饱和曲线还是S形,只要单调就能完全拟合。输出是阶跃函数这是特点。
🙋
输出是阶跃函数?这和 PAV 算法有关系吗?
🎓
对,PAV 是 Pool Adjacent Violators 的缩写。从左往右扫描,当相邻两个违反单调性时就「池化」它们取平均。如果池化后的值比左邻更低,再继续合并……重复直到所有相邻对都满足单调性。最后分成若干块,每块内都是常数。L2 损失下 O(N) 时间给出精确解,这就是超强的地方。
🙋
左边面板里,「噪声 σ」增大时,违反点数和池块数都在变化。这是在看什么?
🎓
噪声越大,相邻 y 值倒序的情况越多。这就是「违反点数」,PAV 通过合并块来消除这些违反。所以违反多的话池块就减少,每块的平均大小就增加。极端情况,噪声压倒了真实的斜率 β,整个数据会塌成一个块变成「常函数」。我们设了 MSE 比超10倍就警告,就是这个原因。
🙋
MSE 比线性回归还大?这样等渗回归是不是很弱啊?
🎓
那是「真实关系确实是直线」的时候。直线模型对的话,OLS 以 N^(-1) 快速收敛。但实际现象如果是S形或饱和曲线,OLS 形式错了会永远留着偏差。等渗回归虽然慢(N^(-2/3)),但没偏差。小样本时 OLS 的 MSE 表面上好看,但增加 N 后真正的 MSE,等渗回归持续下降得更好。
🙋
实际工作中都用在哪里呢?
🎓
最出名的是机器学习的「概率校准」。分类器输出的 0.8 分数,不一定是真的 80% 概率,需要用等渗回归或 Platt scaling 校正。sklearn 的 IsotonicRegression 一行搞定。还有药物剂量反应、心理测量函数、结构劣化与寿命、生存分析的 Nelson-Aalen 估计。总之「单调但不知道形式」的现象都适用。

常见问题

等渗回归是仅假设「单调性(递增或递减)」的非参数回归。与线性回归不同,它不假设直线或曲线形式(参数模型),而是对观测值 y_i 求最接近的阶跃函数 f(x_i),满足单调性并最小化平方误差。代表性算法是 PAV (Pool Adjacent Violators),计算复杂度为 O(N),非常高效。当不知道具体形式但「应该递增」或「应该递减」时效果强大。
按 x 升序排列数据后从左到右扫描,当相邻对违反单调性时「合并」两者并用平均值替换。如果合并后的块低于左邻,继续合并再平均,重复直到所有相邻对都满足单调性。停止时,每个块的平均值就是等渗回归的预测值。L2 损失时给出精确解,L1 损失基于中位数,Huber 损失提供鲁棒版本。
OLS(最小二乘线性回归)固定假设「直线」,当真实关系单调但弯曲(饱和曲线、S曲线等)时会产生大的偏差。等渗回归不假设模型形式,因此没有形状不匹配的偏差。但它只能输出每块的平均值,结果为阶跃状,需要平滑时可在等渗回归上应用样条线等后处理。样本数增加时,MSE 比会接近 OLS。
代表例是机器学习的概率校准。分类模型输出的分数需要转换为「真概率」时,等渗回归常用作 Platt scaling(逻辑回归拟合)的替代。sklearn 的 IsotonicRegression 广为人知。其他应用包括药物剂量反应曲线、心理物理学的心理测量函数、结构劣化指标与寿命关系、生存分析的 Nelson-Aalen 估计等——所有「单调但形式未知」的现象都适用。

实际应用

机器学习的概率校准(Calibration):SVM、随机森林等分类器输出的「预测分数」不一定等于真概率。0.8 分可能实际正确率是60%或90%。等渗回归以验证集的分数和正误为输入,学习「分数 → 真概率」的单调映射。Scikit-learn 的 IsotonicRegression 和 CalibratedClassifierCV(method='isotonic') 广泛应用,相比 Platt scaling(逻辑回归拟合)形式更灵活。

药理学的剂量-反应曲线:新药剂量越大反应率应单调增加,是医药统计的基本假设。但观测噪声会产生小的倒序。等渗回归可直接将「生物学上单调递增」这个先验知识编入模型,避免强的 Hill 方程假设,同时得到光滑的反应曲线。FDA 的剂量反应分析指南也提及这个替代方法。

结构劣化指标与剩余寿命:桥梁、管道、旋转机器的劣化评估中,累积指标(应变、振动等)与剩余寿命的关系是单调的。从有噪声的时间序列中提取指标→寿命的单调映射时,等渗回归最合适。线性 SN 曲线不适用的复杂疲劳行为,不需假设形式就能用。

生存分析·可靠性工程:Nelson-Aalen 估计和 Kaplan-Meier 估计的累积风险原则上单调递增,但样本少时估计波动很大。等渗回归平滑时保持单调性,消除噪声。可靠性工程的韦伯分布参数估计、医学统计的生存曲线绘制等应用范围广。

常见误解与注意事项

最大的陷阱是「等渗回归永远比 OLS 更好」的误解。真实关系确实是直线时,OLS 的收敛速度 N^(-1) 明显胜过等渗回归的 N^(-2/3)。本模拟器中,β 大、σ 小时 MSE 比会达到 5~10 倍。数据是直线的情况下要用 OLS,等渗回归的位置是「单调无疑但形式不明」时。实务标准做法是先看散点图判断直线性,形式不清楚才选等渗回归。

其次,「输出阶跃函数直接用于预测」会有问题。等渗回归的输出是块内平均,新的 x 值预测时会落在阶跃的「台阶」上,包含跳跃。需要连续预测值时,应在等渗回归输出上做样条插值或核平滑等后处理。本工具的「平滑带宽」滑块就伪代码这个后处理——0 时纯阶跃,>0 时取相邻块平均使平滑。

最后,「绝对不能外推」。等渗回归仅在观测 x 范围内定义。小于最小 x 或大于最大 x 的预测会卡在端块的值,没有线性回归那样的外推能力。这是「不假设形式」的代价——数据外的行为无法推断。需要外推时要用参数模型(线性、指数、Hill 方程等),或限定在数据区间内。

使用指南

  1. 设置样本数(numSamplesIR)。药物剂量反应试验一般 n=50~200
  2. 输入真实斜率(trueSlopeIR)和观测噪声标准差(noiseStdIR),生成回归数据
  3. PAV 算法自动执行,输出违反点数、池块数、平均块大小
  4. 检查 MSE 比(等渗 vs OLS),观察单调约束何时有改善效果
  5. 调整 smoothingBandwidth,验证约束强度和过拟合的权衡

具体计算例

抗癌药细胞存活率测定,真实斜率 β=−0.8,样本数 n=100,观测噪声 σ=0.12 的设置。运行 PAV 后,违反点数 12~18 个,池块数 8~12,平均块大小 8.3~12.5。MSE 比 0.88~0.92(等渗比 OLS 最多降低12%)。smoothingBandwidth=0.05 时单调约束严格保证,化妆品功效评估的校准曲线可信度提升。

实务注意事项