cp分解实现_如何用贝叶斯高斯张量分解修复缺失数据?(Jupyter notebook - Python)
準(zhǔn)備階段
在進(jìn)行貝葉斯高斯張量分解之前,需要調(diào)用一些常用的package,如numpy等。以scipy.stats中的Wishart分布和numpy.random中的多元正態(tài)分布為基礎(chǔ),設(shè)計(jì)貝葉斯高斯張量分解采樣過(guò)程中會(huì)遇到的Gaussian-Wishart分布。
另外,在矩陣分解過(guò)程中,為了加快采樣過(guò)程的計(jì)算效率,需要用到一種特殊的矩陣運(yùn)算規(guī)則 - Khatri-Rao積,即
Khatri-Rao積的函數(shù) (kr_prod) 和實(shí)例:
定義CP分解的組合結(jié)構(gòu) (cp_combination):
定義張量展開(將張量展開成矩陣, ten2mat):
貝葉斯高斯張量分解原理
張量元素被假設(shè)服從高斯分布,為了求解矩陣分解的隱性因子矩陣,依據(jù)貝葉斯準(zhǔn)則,需進(jìn)一步對(duì)模型參數(shù)和超參數(shù)設(shè)置共軛先驗(yàn)。具體如下:
在所設(shè)計(jì)的貝葉斯網(wǎng)絡(luò)中,對(duì)模型參數(shù)和超參數(shù)求后驗(yàn)分布,交替更新即可完成貝葉斯高斯張量分解。
編譯實(shí)現(xiàn)貝葉斯高斯張量分解的Python代碼:
缺失數(shù)據(jù)修復(fù)實(shí)驗(yàn)
以廣州路網(wǎng)車速數(shù)據(jù)集為基礎(chǔ),設(shè)計(jì)面向時(shí)空交通數(shù)據(jù)的缺失值修復(fù)實(shí)驗(yàn)。
數(shù)據(jù)集下載鏈接1:https://github.com/xinychen/transdim/tree/master/Guangzhou-data-set數(shù)據(jù)集下載鏈接2:Urban Traffic Speed Dataset of Guangzhou, China
主要參考
BGCP Matlab代碼:https://github.com/lijunsun/bgcp_imputation
總結(jié)
以上是生活随笔為你收集整理的cp分解实现_如何用贝叶斯高斯张量分解修复缺失数据?(Jupyter notebook - Python)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: png变成矢量图_[PPT]如何将图片背
- 下一篇: python入门与实践在线阅读_Pyth