1.15. Isotonic regression(保序回归)
一、描述
保序回归,正如它的名字,是一种对预测值施加了“保序”约束的一种回归分析。“保序”的严格定义我们暂且不表,可以简单的理解为一种“对任意 X i ≤ X j X_i\le X_j Xi≤Xj,必须有 y i ≤ y j y_i \le y_j yi≤yj”的一种约束。
在它的目标函数 ∑ i ω i ( y i − y i ^ ) 2 \sum_i\omega_i(y_i-\hat{y_i})^2 ∑iωi(yi−yi^)2 中,mse部分很好理解,代表损失,参数 ω i \omega_i ωi是基于“保序”的要求,对预测的一种修正。
保序回归,本质上就是针对实践环境中保序的情况提出的一种回归
二、应用场景(举例)
在这里,我们举一个典型的例子,并借此介绍一下PAVA算法
1. 药用环境
动物园有老虎逃了出来,我们要用麻醉针将其麻醉。想要找到一个合适的药用剂量使我们能麻醉老虎并让其不受伤害,我们要探究不同药用剂量的麻醉剂在老虎身上的作用。
在这里,自变量是麻醉剂的剂量,应变量是麻醉剂在老虎群众起作用的比例。拟合函数,我们得到的是一定剂量的麻醉剂在一只老虎身上起作用的概率。
定义一下变量,对于剂量 x i x_i xi,我们手上 n i n_i ni只老虎的有效数据,其中 t i t_i ti有只老虎被麻醉,比例为 p i ^ \hat{p_i} pi^,而我们要求该剂量下的单只老虎被麻醉的概率为 p i p_i pi
2.PAVA
无约束
在没有约束条件的情况下,根据最大似然,我们可以求得, p i = p i ^ p_i=\hat{p_i} pi=pi^,证明如下:
对于剂量 x i x_i xi,我们设观测到在实际概率 p i p_i pi下, n i n_i ni只老虎中有 p i ^ \hat{p_i} pi^比例被麻醉的概率,是一个不考虑顺序的二项分布。所以我们可以列出似然函数 L ( p i ) = p i n i p i ^ ( 1 − p i ) n i ( 1 − p i ^ ) L(p_i)=p_i^{n_i\hat{p_i}}(1-p_i)^{n_i(1-\hat{p_i})} L(pi)=pinipi^(1−pi)ni(1−pi^)
取对数得
l
n
L
(
p
i
)
=
n
i
p
i
^
l
n
(
p
i
)
+
n
i
(
1
−
p
i
^
)
l
n
(
1
−
p
i
)
lnL(p_i)=n_i\hat{p_i}ln(p_i)+n_i(1-\hat{p_i})ln(1-p_i)
lnL(pi)=nipi^ln(pi)+ni(1−pi^)ln(1−pi)
求导数得
l
n
′
L
(
p
i
)
=
n
i
(
p
i
^
p
i
−
1
−
p
i
^
1
−
p
i
)
=
n
i
(
p
i
^
−
p
i
)
p
i
(
1
−
p
i
)
ln'L(p_i)=n_i(\frac{\hat{p_i}}{p_i}-\frac{1-\hat{p_i}}{1-p_i})=\cfrac{n_i(\hat{p_i}-p_i)}{p_i(1-p_i)}
ln′L(pi)=ni(pipi^−1−pi1−pi^)=pi(1−pi)ni(pi^−pi)
求得在
p
i
=
p
i
^
p_i=\hat{p_i}
pi=pi^时,似然函数取极大值即最大值。
所以,在 p i ^ ≤ p i + 1 \hat{p_i}\le p_{i+1} pi^≤pi+1时,我们可以直接让 p i = p i ^ p_i=\hat{p_i} pi=pi^
有约束
在 p i ^ > p i + 1 ^ \hat{p_i}>\hat{p_{i+1}} pi^>pi+1^时,有约束 p i ≤ p i + 1 p_i \le p_{i+1} pi≤pi+1,此时一个自然而然的想法是,让 p i = p i + 1 = n i p i + n i + 1 p i + 1 n i + n i + 1 p_i=p_{i+1}=\cfrac{n_ip_i+n_{i+1}p_{i+1}}{n_i+n_{i+1}} pi=pi+1=ni+ni+1nipi+ni+1pi+1,证明如下:
我们写出带拉格朗日子项的对数似然函数 l n L ( p i , p i + 1 ) = n i p i ^ l n ( p i ) + n i ( 1 − p i ^ ) l n ( 1 − p i ) + n i + 1 p i + 1 ^ l n ( p i + 1 ) + n i ( 1 − p i + 1 ^ ) l n ( 1 − p i + 1 ) + λ ( p i + 1 − p i ) lnL(p_i,p_{i+1})=n_i\hat{p_i}ln(p_i)+n_i(1-\hat{p_i})ln(1-p_i)+n_{i+1}\hat{p_{i+1}}ln(p_{i+1})+n_i(1-\hat{p_{i+1}})ln(1-p_{i+1})+\lambda(p_{i+1}-p_i) lnL(pi,pi+1)=nipi^ln(pi)+ni(1−pi^)ln(1−pi)+ni+1pi+1^ln(pi+1)+ni(1−pi+1^)ln(1−pi+1)+λ(pi+1−pi)
求偏导得
{
σ
l
n
L
(
p
i
,
p
i
+
1
)
σ
p
i
=
n
i
(
p
i
^
−
p
i
)
p
i
(
1
−
p
i
)
σ
l
n
L
(
p
i
,
p
i
+
1
)
σ
p
i
+
1
=
n
i
(
p
i
+
1
^
−
p
i
+
1
)
p
i
+
1
(
1
−
p
i
+
1
)
σ
l
n
L
(
p
i
,
p
i
+
1
)
σ
λ
=
p
i
+
1
−
p
i
\left\{ \begin{aligned} \cfrac{\sigma lnL(p_i,p_{i+1})}{\sigma p_i}=\cfrac{n_i(\hat{p_i}-p_i)}{p_i(1-p_i)} \\ \cfrac{\sigma lnL(p_i,p_{i+1})}{\sigma p_{i+1}}=\cfrac{n_i(\hat{p_{i+1}}-p_{i+1})}{p_{i+1}(1-p_{i+1})} \\ \cfrac{\sigma lnL(p_i,p_{i+1})}{\sigma \lambda}=p_{i+1}-p_i \end{aligned} \right.
⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧σpiσlnL(pi,pi+1)=pi(1−pi)ni(pi^−pi)σpi+1σlnL(pi,pi+1)=pi+1(1−pi+1)ni(pi+1^−pi+1)σλσlnL(pi,pi+1)=pi+1−pi
求解方程可得, p i = p i + 1 = n i p i + n i + 1 p i + 1 n i + n i + 1 p_i=p_{i+1}=\cfrac{n_ip_i+n_{i+1}p_{i+1}}{n_i+n_{i+1}} pi=pi+1=ni+ni+1nipi+ni+1pi+1时,似然函数取最大值。
有了这两种局部情况,我们就可以一步步的讲不保序的序列转换为保序的序列,并得到最终的回归分析。
三、部分性质
在sklearn的实例中,我们可以看到,保序回归和由一般最小二乘估计的线性回归在后期差别并不大,只是做了保序的约束。
保序回归得到的结果,是局部线性的。