日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

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

發布時間:2024/1/3 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 机器学习:保序回归(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()

總結

以上是生活随笔為你收集整理的机器学习:保序回归(IsotonicRegression):一种可以使资源利用率最大化的算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。