浅谈保序回归

一,保序回归的定义

数学定义: 给定一个有限的实数集合

Y = y 1 , y 2 , . . . y n Y=y_1,y_2,...y_n Y=y1,y2,...yn 代表观察到的响应,以及 X = x 1 , x 2 , . . . x n X=x_1,x_2,...x_n X=x1,x2,...xn 代表未知的响应值,训练一个模型最小化下列方程:

f ( x ) = ∑ i = 1 n w i ( y i − x i ) 2 f(x)=\sum_{i=1}^n{w_i{(y_i-x_i)}^2} f(x)=i=1nwi(yixi)2

其中 x 1 ≤ x 2 . . . ≤ x n , w i x_1\le x_2...\le x_n,w_i x1x2...xn,wi 为权重是正值,其结果称之为保序回归,而且其解是唯一的。

翻译一下:给出一个有向图 边 ( u , v ) (u,v) (u,v) 表示一种偏序关系要求权值 y u ≤ y v y_u \le y_v yuyv 可以修改每个点的权值 费用为修改前后贡献的平方差 要求修改后的点满足偏序关系

二,套路做法

整体二分

整体二分时给点分类时是这样一个过程

每个点只能取 m i d , m i d + 1 mid,mid+1 mid,mid+1 要求满足偏序关系 且费用最小

有一个结论是
m i d mid mid 的点的答案取值为 [ l , m i d ] [l,mid] [l,mid] m i d + 1 mid+1 mid+1 的点的取值为 [ m i d + 1 , r ] [mid+1,r] [mid+1,r]

怎么求每个点取 m i d mid mid 还是 m i d + 1 mid+1 mid+1 呢?

最大(小)权闭合子图:
“闭合子图”就是某个点集 V V V ,满足对于任意 u ∈ V u \in V uV,对于任意 ( u , v ) ∈ E (u,v)\in E (u,v)E 都有 e ∈ V e\in V eV。用人话说就是从 V V V中的每个点开始遍历,
能够遍历到的每个点都在 V V V 中。每个点上有个权值 w i w_i wi,要选出一个闭合子图使得点权最大。
一般套路:网络流,建个新图。对于每个点i ,如果 w i > 0 w_i>0 wi>0 就连边 ( S , i , w i ) (S,i,w_i) (S,i,wi) ,如果 w i < 0 w_i<0 wi<0 就连边 ( i , T , − w i ) (i,T,-w_i) (i,T,wi) 。原图中的每一条边都在新图中对应地连,容量无穷。
答案为 ∑ w i > 0 w i − 最 小 割 \sum_{w_i>0} w_i-最小割 wi>0wi
理解:如果不考虑限制,则贪心地选所有正权点是最优的。加入限制,对于一个点 u u u ,如果它不选,则所有 v v v ,满足从 v v v 开始遍历可以走到 u u u ,这些 v v v 都不能选。显然所有 u u u 满足这个条件是充分必要条件。
放在图中来看:割掉边 ( u , T ) (u,T) (u,T) ,即选 v v v ,或者割掉边 ( S , v ) (S,v) (S,v) ,即不选 v v v 。 —A1847225889

简单说就是把每个点权值设为 − ( w ( i , m i d + 1 ) − w ( w , m i d ) ) -(w(i,mid+1)-w(w,mid)) (w(i,mid+1)w(w,mid))

w ( i , f ) w(i,f) w(i,f) y i y_i yi 变为 f f f 时的代价

然后跑网络流

选了的点就是 m i d + 1 mid+1 mid+1 不选的点是 m i d mid mid

割掉边 ( u , T ) (u,T) (u,T) ,即选 v v v ,或者割掉边 ( S , v ) (S,v) (S,v) ,即不选 v v v

例题 P6621 [省选联考 2020 A 卷] 魔法商店

三,拓展

我们上述讨论的是 f ( x ) = ∑ i = 1 n w i ( y i − x i ) 2 f(x)=\sum_{i=1}^n{w_i{(y_i-x_i)}^2} f(x)=i=1nwi(yixi)2 的问题

其实可以拓展到 f ( x ) = ∑ i = 1 n w i ( y i − x i ) p f(x)=\sum_{i=1}^n{w_i{(y_i-x_i)}^p} f(x)=i=1nwi(yixi)p 的情况上

做法一摸一样(你会发现我们求解时根本没用到多少次幂

四,证明

  1. 证明做法中一个结论

m i d mid mid 的点的答案取值为 [ l , m i d ] [l,mid] [l,mid] m i d + 1 mid+1 mid+1 的点的取值为 [ m i d + 1 , r ] [mid+1,r] [mid+1,r]

这个我不会证但是论文里面有 大佬们可以取看看 (2018集训队论文高睿泉《浅谈保序回归问题》)

  1. 时间复杂度 O ( n 2 l o g n ) O(n^2logn) O(n2logn)

整体二分一个 log

然后网络流感性理解 每次平均 O ( n ) O(n) O(n)

posted @ 2022-10-10 20:19  缙云山车神  阅读(42)  评论(0编辑  收藏  举报