天天看點

基于偏好推薦的資源回收系統

背景

在私有雲環境下,對于業務線所使用的計算和存儲資源媒體可能會出現老化、遷移等問題需要進行退還處理。但随着業務數和機器數的增多,退還機器的數量也随之增大。然而并不可能将業務中的所有機器全部退還,有效的機器退還不僅能夠節約成本,也能提高業務的穩定性與效率。是以需要設計一個算法,用于判斷機器是否需要退還。

這個問題很容易把它想象成一個機器的分類問題,即設計一個分類器用于判斷機器是否需要退還。實際上,該問題不僅僅可以用分類的方法進行解決,也可以設計一個推薦系統,為使用者(即業務)推薦最應該退還的機器。

面臨挑戰

為退還機器設計推薦系統時,将業務作為使用者,機器作為物品。但是分析資料時發現,一台機器一般隻屬于一個業務,不會屬于另一個業務,即一件物品隻屬于一個使用者,它隻能被一個使用者所得,其他使用者無法得到;此外,一個業務所有的機器是特定的,推薦時隻能推薦業務現有的機器作為退還機器。

上述兩個問題使得退還機器推薦與傳統的音樂、電影,或者物品推薦有很大的差別,不能直接運用現有算法解決,需要自行構造共享物品,進行推薦。

考慮到上述問題,本文提出基于K-Means聚類和ItemCF算法的推薦方法,進而解決了退還機器的推薦問題。

方法研究

本章節一共分為兩個部分:K-Means聚類和ItemCF算法,下面将詳細介紹:

K-Means聚類

由于一台機器一般隻屬于一個業務,不會屬于另一個業務,是以機器是業務獨有的,而不是共享物品。是以可以利用聚類分析的方法,将現有的機器分為幾類,則這幾類機器就是所有使用者共享的了。

進行推薦時,首先進行機器類别的推薦,每個類别都有一個推薦分數,分數越高,則退還機器越容易出現在該類别中。其次,針對目标業務所擁有的機器進行推薦,此時計算每個現有機器與該業務已經退還的機器的平均形似度,平均相似度越高,則代表該機器越容易退還。綜合上述兩步,可以得到每個機器的最終的推薦分數,再按照該分數進行排序,進而得到目标業務具體的推薦機器。

本文中對于機器的聚類,選擇的是:CPU空閑率等5個特征。K-Means聚類在Python中有現有的算法包,隻需要調用即可,具體如下:

基于偏好推薦的資源回收系統
基于偏好推薦的資源回收系統

本文經過實驗發現聚類時K值的選擇對最終的結果影響不大,但是經過分析可知,K取值應當适中,過大或者過小都不好。過小則無法分類,推薦誤差比較大;過大則會出現某些業務中有很多機器類别都沒有機器的現象。綜合考慮上述情況,最終K值取為4。

ItemCF算法

ItemCF算法是協同過濾算法中比較經典的一種算法,該方法基于物品的相似度對使用者進行物品推薦。在推薦時主要考慮了一下兩個假設:

興趣相近的使用者可能會對同樣的東西感興趣;

使用者可能較偏愛與其已購買的東西相類似的商品。

也就是說考慮進了使用者的曆史習慣,對象客觀上不一定相似,但由于人的行為可以認為其主觀上是相似的,就可以産生推薦了。

ItemCF算法的關鍵步驟:

計算物品之間的相似度

基于偏好推薦的資源回收系統

其中N(i)是喜歡物品i的使用者的集合。

根據物品的相似度和使用者的曆史行為給使用者生成推薦清單

基于偏好推薦的資源回收系統

其中p_ui是使用者u對物品i的喜好程度,T(u)是使用者u曾經偏好的物品的集合, S(j,k)是和物品j最相似的k個物品的集合,r_ui使用者u對物品i的興趣。

對于隐回報資料集,如果使用者u對物品i有過行為則r_ui=1,本推薦中是業務u對機器類别i曾經退還過的機器個數。ItemCF算法在Python中沒有算法包,需要自行實作。

總結

本文利用K-Means聚類和ItemCF算法進行了退還機器的推薦,現在推薦精度為79%左右,但是需要主業務中至少有2個子業務,但是實際操作中有很多業務不滿足條件,是以不能進行推薦。而且推薦精度也不夠高,也能使算法比較粗糙,也可能是機器的特征選擇不夠好,還需進一步優化。

原文釋出時間為:2018-07-18

本文來自雲栖社群合作夥伴“

DBAplus社群

”,了解相關資訊可以關注“