cp分解实现_如何用贝叶斯高斯张量分解修复缺失数据?(Jupyter notebook - Python)
生活随笔
收集整理的這篇文章主要介紹了
cp分解实现_如何用贝叶斯高斯张量分解修复缺失数据?(Jupyter notebook - Python)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文來源于BGCP Imputation - transdim,主要討論如何利用貝葉斯高斯張量分解(Bayesian Gaussian CP decomposition, BGCP) 估計矩陣中的缺失元素,其中,貝葉斯概率矩陣分解是以高斯分布為基本假設,并采用Gibbs采樣做參數估計。另外,感興趣的讀者可在transdim - GitHub項目中下載數據集和Jupyter notebook。
數據集下載鏈接2:Urban Traffic Speed Dataset of Guangzhou, China
準備階段
在進行貝葉斯高斯張量分解之前,需要調用一些常用的package,如numpy等。以scipy.stats中的Wishart分布和numpy.random中的多元正態分布為基礎,設計貝葉斯高斯張量分解采樣過程中會遇到的Gaussian-Wishart分布。
另外,在矩陣分解過程中,為了加快采樣過程的計算效率,需要用到一種特殊的矩陣運算規則 - Khatri-Rao積,即
Khatri-Rao積的函數 (kr_prod) 和實例:
定義CP分解的組合結構 (cp_combination):
定義張量展開(將張量展開成矩陣, ten2mat):
貝葉斯高斯張量分解原理
張量元素被假設服從高斯分布,為了求解矩陣分解的隱性因子矩陣,依據貝葉斯準則,需進一步對模型參數和超參數設置共軛先驗。具體如下:
在所設計的貝葉斯網絡中,對模型參數和超參數求后驗分布,交替更新即可完成貝葉斯高斯張量分解。
編譯實現貝葉斯高斯張量分解的Python代碼:
缺失數據修復實驗
以廣州路網車速數據集為基礎,設計面向時空交通數據的缺失值修復實驗。
數據集下載鏈接1:https://github.com/xinychen/transdim/tree/master/Guangzhou-data-set數據集下載鏈接2:Urban Traffic Speed Dataset of Guangzhou, China
主要參考
BGCP Matlab代碼:https://github.com/lijunsun/bgcp_imputation
總結
以上是生活随笔為你收集整理的cp分解实现_如何用贝叶斯高斯张量分解修复缺失数据?(Jupyter notebook - Python)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: png变成矢量图_[PPT]如何将图片背
- 下一篇: oc引导win方法_[拯救老机型]机械革