机器学习:保序回归(IsotonicRegression):一种可以使资源利用率最大化的算法

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

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
from sklearn.isotonic import IsotonicRegression
from sklearn.utils import check_random_state

n = 100
##产生一个0-99的列表
x = np.arange(n)
##实例化一个np.random.RandomState的实例,作用是每次取的随机值相同
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)

##绘图
segments = [[[i, y[i]], [i, y_[i]]] for i in range(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‘, ‘Isotonic Fit‘), loc=‘lower right‘)
plt.title(‘Isotonic regression‘)
plt.show()
时间: 2024-11-17 16:44:52

机器学习:保序回归(IsotonicRegression):一种可以使资源利用率最大化的算法的相关文章

Spark机器学习(3):保序回归算法

保序回归即给定了一个无序的数字序列,通过修改其中元素的值,得到一个非递减的数字序列,要求是使得误差(预测值和实际值差的平方)最小.比如在动物身上实验某种药物,使用了不同的剂量,按理说剂量越大,有效的比例就应该越高,但是如果发现了剂量大反而有效率降低了,这个时候就只有把无序的两个元素合并了,重新计算有效率,直到计算出来的有效率不大于比下一个元素的有效率. MLlib使用的是PAVA(Pool Adjacent Violators Algorithm)算法,并且是分布式的PAVA算法.首先在每个分区

scikit-learn: isotonic regression(保序回归,非常有意思,仅做知识点了解,但差点儿没用到过)

http://scikit-learn.org/stable/auto_examples/plot_isotonic_regression.html#example-plot-isotonic-regression-py 代码就不贴了,參考上面链接. 看代码,给人的直观感受类似于CART,具有分段回归的效果. 只是非常少见人用这种方法,还是推荐使用CART吧,只是了解一下思想罢了. .. 给个简单的样例: 问题描写叙述:给定一个无序数字序列y,通过改动每一个元素的值得到一个非递减序列 y' ,问

scikit-learn: isotonic regression(保序回归,很有意思,仅做知识点了解,但几乎没用到过)

http://scikit-learn.org/stable/auto_examples/plot_isotonic_regression.html#example-plot-isotonic-regression-py 代码就不贴了,参考上面链接. 看代码,给人的直观感受类似于CART,具有分段回归的效果.不过很少见人用这个方法,还是推荐使用CART吧,不过了解一下思想罢了... 给个简单的例子: 问题描述:给定一个无序数字序列y,通过修改每个元素的值得到一个非递减序列 y' ,问如何使y和

Spark MLlib 保序回归

"C:\Program Files\Java\jdk1.8.0_181\bin\java" "-javaagent:D:\Software\IntelliJ IDEA 2017.2.2\lib\idea_rt.jar=64070:D:\Software\IntelliJ IDEA 2017.2.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_181\jre\li

MLlib--保序回归

转载请标明出处http://www.cnblogs.com/haozhengfei/p/24cb3f38b55e5d7516d8059f9f105eb6.html 保序回归 1.线性回归VS保序回归    ? 线性回归->线性拟合    ? 保序回归->保序的分段线性拟合,保序回归是拟合原始数据最佳的单调函数 1.1保序回归     保序回归是特殊的线性回归,如果业务上具有单调性,这时候就可以用保序回归,而不是用线性回归. 1.2保序回归应用场景 药剂和中毒的预测,剂量和毒性呈非递减函数 1.

机器学习实战-逻辑回归

什么是回归? 假设现在有些数据点,我用直线对这些点进行拟合(该线叫做最佳拟合直线),这个拟合的过程就叫做回归. Logistic回归? 这里,Logistic回归进行分类的主要思想:根据现有数据对分类的边界线建立回归公式,以此边界线进行分类.这里的回归指的是最佳拟合,就是要找到边界线的回归公式的最佳拟合的参数集.训练时使用最优化算法寻找最佳拟合参数. 基于Logistic回归和Sigmoid函数的分类 对于边界线建立的回归函数,能够接受所有的输入然后预测出类别.例如,对于二分类的情况下,上述函数

【机器学习】逻辑回归(Logistic Regression)

注:最近开始学习<人工智能>选修课,老师提纲挈领的介绍了一番,听完课只了解了个大概,剩下的细节只能自己继续摸索. 从本质上讲:机器学习就是一个模型对外界的刺激(训练样本)做出反应,趋利避害(评价标准). 1. 什么是逻辑回归? 许多人对线性回归都比较熟悉,但知道逻辑回归的人可能就要少的多.从大的类别上来说,逻辑回归是一种有监督的统计学习方法,主要用于对样本进行分类. 在线性回归模型中,输出一般是连续的,例如$$y = f(x) = ax + b$$,对于每一个输入的x,都有一个对应的y输出.模

【火炉炼AI】机器学习006-用决策树回归器构建房价评估模型

[火炉炼AI]机器学习006-用决策树回归器构建房价评估模型 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 ) 最近几十年,房价一直是中国老百姓心中永远的痛,有人说,中国房价就像女人的无肩带文胸,一半人在疑惑:是什么支撑了它?另一半人在等待:什么时候掉下去? 而女人,永不可能让它掉下来.就算快掉下来了,提一提还是又上去了..... 虽然我们不能预测中国房价什么时候崩盘,但是却可以用机器学

4.机器学习之逻辑回归算法

理论上讲线性回归模型既可以用于回归,也可以用于分类.解决回归问题,可以用于连续目标值的预测.但是针对分类问题,该方法则有点不适应,因为线性回归的输出值是不确定范围的,无法很好的一一对应到我们的若干分类中.即便是一个二分类,线性回归+阈值的方式,已经很难完成一个鲁棒性很好的分类器了.为了更好的实现分类,逻辑回归诞生了.逻辑回归(Logistic Regression)主要解决二分类问题,用来表示某件事情发生的可能性.逻辑回归是假设数据服从Bernoulli分布的,因此LR也属于参数模型,他的目的也