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

作者: lc19861217 2017-09-27 11:04:03

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.实验代码

  1. import numpy as np 
  2. import matplotlib.pyplot as plt 
  3. from matplotlib.collections import LineCollection 
  4. from sklearn.isotonic import IsotonicRegression 
  5. from sklearn.utils import check_random_state 
  6.  
  7. n = 100 
  8. ##产生一个0-99的列表 
  9. x = np.arange(n) 
  10. ##实例化一个np.random.RandomState的实例,作用是每次取的随机值相同 
  11. rs = check_random_state(0) 
  12. ##randint(-50, 50):产生-50到50之间的整数 
  13. ##np.log  求以e为低的对数 
  14. y = rs.randint(-50, 50, size=(n,)) + 50. * np.log(1 + np.arange(n)) 
  15.  
  16. ##设置保序回归函数 
  17. ir = IsotonicRegression() 
  18. ##训练数据 
  19. y_ = ir.fit_transform(x, y) 
  20.  
  21. ##绘图 
  22. segments = [[[i, y[i]], [i, y_[i]]] for i in range(n)] 
  23. ##plt.gca().add_collection(lc),这两步就是画点与平均直线的连线 
  24. lc = LineCollection(segments) 
  25.  
  26. fig = plt.figure() 
  27. plt.plot(x, y, 'r.', markersize=12) 
  28. plt.plot(x, y_, 'g.-', markersize=12) 
  29. plt.gca().add_collection(lc) 
  30. plt.legend(('Data''Isotonic Fit'), loc='lower right'
  31. plt.title('Isotonic regression'
  32. plt.show() 
保序回归 资源 算法
上一篇:使用反向传播训练多层神经网络的原理 下一篇:如何看待「机器学习不需要数学,很多算法封装好了,调个包就行」这种说法?
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

未来,人工智能将以何种方式发展?

早在20世纪初期,人们就已经开始思考机器人能否像人一样开始思考。在各类文学作品和科幻电影中,我们看到的“能够思考的机器人”,其实就是人工智能的起源。直到20世纪50年代,人工智能的概念正式被提出。

静心科技 ·  2019-09-29 14:35:11
使机器学习更容易采用的6种工具

所有这些功能都为那些使用数字、电子表格和数据的人们开启了机器学习的世界,消除了对编程和数据科学的巨大需求。下面的六个选项简化了用户使用机器学习算法在数字海洋中找到答案。

Peter Wayner ·  2019-09-23 10:59:31
AI数据存储设备选型的6个关键要素

人工智能(AI)和机器学习将成为帮助企业利用其核心数字资产创造竞争优势的最重要工具之一。但在选购AI数据存储设备之前,企业必须考虑机器学习平台在获取、处理和保留数据时的一系列需求。

谢涛 ·  2019-09-19 17:46:37
PageRank、最小生成树:ML开发者应该了解的五种图算法

在互联世界中,用户不能被视为独立的实体。他们之间存在一定的关系,我们有时希望在构建机器学习模型时考虑到这些关系。

佚名 ·  2019-09-09 14:33:17
民主化与自动化:降低机器学习门槛的六大工具

以下介绍的六种机器学习工具为那些使用数字、电子表格和数据的人们打开了通向机器学习世界的大门,而且不需要他们成为编程和数据科学方面的专家。

CashCat ·  2019-09-06 09:00:33
真正的大数据问题以及为什么只有机器学习才能解决它

为什么很多公司仍在努力构建从采集数据到获得洞察力的平稳运行的管道?他们希望投资和采用机器学习算法来分析数据,并做出商业预测。

SHARE ·  2019-08-16 10:38:23
机器人在人机协作团队中成“领导”?工作原理为何?

我们的生活大多围绕着团队协作。例如,我们在与人群协作或影响人群时,既能够以显而易见的方式(如一起做饭时),也能够以不易察觉的方式(如在高速公路上共享车道时)。随着机器人越来越融入社会,它们应该能够很好地与人类群体协作。

晟炜 ·  2019-08-05 14:34:59
谷歌高级研究员Nature发文:避开机器学习三大「坑」

本文将介绍谷歌 Accelerated Science 团队在使用机器学习分析时所面临并解决了的三个问题,以说明展示这种做法。

机器之心 ·  2019-08-01 08:15:06
Copyright©2005-2019 51CTO.COM 版权所有 未经许可 请勿转载