SVD矩陣分解考慮時間因素
推薦系統種矩陣分解有著不錯的效果,其中SVD(Singular Value Decomposition)奇異值矩陣分解也是常用的一種方法,通過對原始矩陣進行SVD分解後,可以將原始高緯資料對映到低維空間,在降維過程中,其關注的是如何去除噪聲和保留更多有效資訊。
其優點:簡化資料,去除噪聲,提高演算法結果
缺點:分解過程和實際業務執行過程匹配不上
適用資料型別:數值型
SVD的原理文章有很多,這裡主要談加入時間因素的矩陣如何做分解。以我正在研究的雲平臺下虛擬機器效能預測為背景,利用TSVD(time)預測除下一時刻虛擬機器效能的實用情況。這裡效能是指:CPU、記憶體、I/O負載和頻寬。
步驟如下:
● 建立負載資訊矩陣S
考慮四種資源資料:CPU、記憶體、I/O負載和頻寬,儲存過去一段時間T的四種資源資料,建立負載資訊矩陣S,其中行表示每個時刻(或每個小週期)四種資源的監測量,列表示四種資源在時間T內的使用情況。
● SVD分解
然後,根據SVD分解原理,將負載資訊矩陣S分解為U、E、V。其中U為時間資訊矩陣,E為奇異值對角矩陣(矩陣S和其轉置乘積的特徵值的平方根),V為資源資訊矩陣。(U和V都是正交矩陣,E的對角元素從大到小排列)
● 時間向量相似性計算
假設當前時刻為t0,要預測下一時刻tf的負載。方法是在U中,找t0之前的所有時刻中找和t0最相似的時間向量(行向量)tc,通過點積運算(由於)找最相似,由於U是正交陣,故t0和tc的模為1,故只需找夾角即可,越小,相似度越高。
● 將來時刻tf的負載預測
tc找到後,tc的下一刻tc-1和當前時刻ti是影響tf時刻的關鍵向量。取兩者線性組合。(本質就是認為將來時刻的負載和當前和歷史最相似向量兩者有關。)
● 奇異值對角矩陣E重要特徵選取
並不是所有的奇異值都可以表示資料的重要特徵,對於排名靠後的奇異值要剔除(干擾因子),本文只刪除了最後一個。其實,常用方法是選取矩陣E中總能量的90%的資訊。
總能量:所有奇異值平方和
90%資訊:從大往後依次取奇異值平方相加,直到第一次大於90%為止。則取前幾個奇異值。
● 下一時刻預測出的負載使用量為:
注意:V’是根據E’的變化而變化的,最終目的是保證矩陣大小和原始一樣。
SVD也是通過將|S-Sf|作為目標函式,通過SGD等方法求得U(tf)、E、V。
這篇論文作為一種效能預測的思路,其實挺簡單的,而且實現起來也很容易。但是它也只是在單個虛擬機器上進行預測,沒有考慮分散式的需求。
相關文章
- 強大的矩陣奇異值分解(SVD)及其應用矩陣
- 矩陣分解矩陣
- 選用住宅代理時要考慮的因素
- 機器學習中的數學(5):強大的矩陣奇異值分解(SVD)及其應用機器學習矩陣
- 邱怡軒:R中大規模矩陣的SVD與矩陣補全矩陣
- 矩陣分解--超詳細解讀矩陣
- 矩陣分解(MF)方法及程式碼矩陣
- 實際技術選型的考慮因素
- 團隊結構應該考慮的因素
- 伺服器託管需要考慮這些因素伺服器
- ML.NET 示例:推薦之矩陣分解矩陣
- 推薦系統-矩陣分解原理詳解矩陣
- 2023 年 MQTT Broker 選型時需要考慮的 7 個因素MQQT
- PHP的垃圾回收機制-效能方面考慮的因素PHP
- 選擇 JS 圖表庫的 13 個考慮因素JS
- 文字主題模型之非負矩陣分解(NMF)模型矩陣
- 基於概率的矩陣分解原理詳解(PMF)矩陣
- 選擇Linux發行版時要考慮的6個重要因素!Linux
- 系統構架設計時應考慮的一些必要性因素
- 搭建Prometheus平臺,你必須考慮的6個因素Prometheus
- 物聯網裝置的5個關鍵考慮因素
- 大資料分析平臺選擇考慮哪些因素大資料
- 資料庫備份策略需要考慮的幾大因素資料庫
- .NET多執行緒操作需要考慮的兩大因素執行緒
- oracle 中並行度的設定需要考慮的因素Oracle並行
- 用Spark學習矩陣分解推薦演算法Spark矩陣演算法
- ML.NET 示例:推薦之One Class 矩陣分解矩陣
- MongoDB何時考慮使用分片MongoDB
- 網站建設前應該考慮的最佳化因素網站
- 雲伺服器如何選購,要考慮哪些因素(下)伺服器
- 成品油定價新機制將考慮國內因素
- 選擇成長型積體電路sap系統時一定要考慮的因素
- 人工智慧-機器學習-演算法:非負矩陣分解(NMF)人工智慧機器學習演算法矩陣
- NMF 非負矩陣分解(Non-negative Matrix Factorization)實踐矩陣
- 基於矩陣分解的協同過濾演算法矩陣演算法
- 機器學習_用SVD奇異值分解給資料降維機器學習
- 關於UPDATE中關聯查詢的執行時間考慮
- 表空間設定考慮事項