当前位置: 首页 > 科技观察

保序回归:一种可以最大化资源利用率的算法

时间:2023-03-14 09:48:28 科技观察

1。数学定义保序回归是一种回归算法。基本思想是:给定一个有限的实数集,训练一个模型来最小化下式:并且满足如下约束条件:2.算法过程描述从序列的第一个元素向后观察,一旦出出现乱序现象,停止本轮观察,从乱序元素中一个一个吸取元素,形成一个序列,直到序列中所有元素的平均值小于或等于下一个要吸取的元素.例子:原序列:<9,10,14>结果序列:<9,10,14>分析:从9开始观察,一直到***的第14个元素都没有乱序,不需要处理用它。原序列:<9,14,10>结果序列:<9,12,12>分析:从9开始观察,观察到14时出现紊乱(14>10),停止本轮观察,转移到吸收元素处理,吸收元素10后的子序列为<14,10>,序列中所有元素的平均值为12,所以用序列<12,12>代替<14,10>。吸收10个达到最大值的元素后,处理操作完成。原序列:<14,9,10,15>结果序列:<11,11,11,15>分析:从14开始观察,观察到9时,出现乱序(14>9),停止本轮观察进入吸收元处理,吸收元9后的子序列为<14,9>。计算序列中所有元素的平均值为12.5。由于12.5大于下一个要吸收的元素10,再吸收10得到序列<14,9,10>。求序列中所有元素的平均值为11,由于11小于下一个要吸收的元素15,停止吸收操作,用序列<11,11,11>代替<14,9,10>。3.举例说明下面实验的原理。以某种药物的剂量为例:假设药物的剂量是一个数组X=0,1,2,3,4...99,患者对药物的反应是Y=y1,y2,y3…..y99,并且由于个体原因,Y不是单调函数(即有波动),如果按照药物反应排序,对应的X就会乱序,意义研究将丢失。我们研究的目的是观察随着药物剂量增加患者的平均反应状态。在这种情况下,使用保序回归,即不改变X的顺序,求Y的平均值。如下图所示:从图中可以看出,最长的绿线x的值大约在30到60之间,在这个范围内,Y的平均值是一样的。考虑到经济性和患者耐药性等因素,使用30单位的剂量是最理想的。目前,虚拟化在IT行业很流行。利用这种方法,找到合适的判断参数,利用这种算法使资源得到最合理的利用。4.实验代码importnumpyasnpimportmatplotlib.pyplotaspltfrommatplotlib.collectionsimportLineCollectionfromsklearn.isotonicimportIsotonicRegressionfromsklearn.utilsimportcheck_random_staten=100##生成一个0-99的列表x=np.arange(n)##每次实例化一个np.random.Random取一个实例,随机的rs=check_random_state(0)##randint(-50,50)的值:生成-50到50之间的整数##np.log求以e为最低对数的对数y=rs.randint(-50,50,size=(n,))+50.*np.log(1+np.arange(n))##设置保序回归函数ir=IsotonicRegression()##训练数据y_=ir.fit_transform(x,y)##Drawingsegments=[[[i,y[i]],[i,y_[i]]]foriinrange(n)]##plt.gca().add_collection(lc),这两步是绘制点与平均直线之间的线lc=LineCollection(segments)fig=plt.figure()plt.plot(x,y,'r.',markersize=12)plt.plot(x,y_,'g.-',markersize=12)plt.gca().add_collection(lc)plt.legend(('Data','IsotonicFit'),loc='lowerright')plt.title('等渗回归')plt.show()