python Markov馬爾科夫網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)預(yù)測(cè)并篩選小樣本

之前寫(xiě)的基于馬爾科夫的小樣本節(jié)點(diǎn)檢測(cè)文章里的內(nèi)容~~

馬爾科夫決策過(guò)程是在隨機(jī)過(guò)程的基礎(chǔ)上提出來(lái)的,是對(duì)強(qiáng)化學(xué)習(xí)(RL)問(wèn)題的數(shù)學(xué)描述。

馬爾科夫性需要滿足:現(xiàn)在將來(lái)過(guò)去條件獨(dú)立:

定義:如果在t時(shí)刻的狀態(tài)xt的條件分布F滿足如下等式,那么這個(gè)狀態(tài)被稱為馬爾科夫狀態(tài),或者說(shuō)該狀態(tài)滿足馬爾科夫性,該隨機(jī)過(guò)程即是馬爾科夫過(guò)程。(其中F是條件分布,t為時(shí)間,xn為在時(shí)間tn時(shí)刻的狀態(tài))

馬爾科夫性條件分布表達(dá)式

如果這個(gè)馬爾科夫過(guò)程滿足:隨機(jī)變量X(t)(t={t1,...,tn})和時(shí)間{t1,...,tn}都是離散的,則這個(gè)馬爾科夫過(guò)程稱作為馬爾科夫鏈

馬爾科夫鏈?zhǔn)歉怕收撝杏脕?lái)描述動(dòng)態(tài)的隨機(jī)現(xiàn)象的數(shù)學(xué)模型。例如,我們將北京每天的最高氣溫看作{s1,s2,s3,...,st,...} ,這里面每個(gè)狀態(tài)st都是隨機(jī)的且是離散的。而這其中我們硬性假設(shè)s(t)只與它的前一個(gè)狀態(tài)s(t-1)有關(guān),即今天的最高氣溫只與昨天的最高氣溫有關(guān),而與前天甚至以前的天氣無(wú)關(guān)。這樣的硬性假設(shè)雖然不適用于所有應(yīng)用,但是對(duì)于一些問(wèn)題可以很好地給出近似解~

馬爾科夫過(guò)程中在tn時(shí)刻由前一狀態(tài)i變成當(dāng)前狀態(tài)j時(shí),我們將其稱之為狀態(tài)轉(zhuǎn)移,記作Pij(n)。接下來(lái)要介紹的是狀態(tài)轉(zhuǎn)移矩陣。
定義:狀態(tài)轉(zhuǎn)移概率是指從一個(gè)馬爾科夫狀態(tài)s跳轉(zhuǎn)到后繼狀態(tài)s'的概率。
如果狀態(tài)序列x為{x1,x2,...,xn},即狀態(tài)s可能的取值有n種,則狀態(tài)轉(zhuǎn)移矩陣為n x n矩陣為{P(x1x1),P(x1x2),...,P(x1,xn),...,P(xnxn)}:

狀態(tài)轉(zhuǎn)移概率矩陣

設(shè)L(i)為狀態(tài)Xi出現(xiàn)的總次數(shù);l(ij)^n表示在{t1,...,tn}時(shí)間序列中,由Xi轉(zhuǎn)移到Xj的總次數(shù),則狀態(tài)轉(zhuǎn)移概率為:


狀態(tài)轉(zhuǎn)移概率公式

則P(X=j)的概率為:


狀態(tài)轉(zhuǎn)移概率P(X=j)公式

即,狀態(tài)轉(zhuǎn)移矩陣的行向量。

然后對(duì)具體問(wèn)題進(jìn)行具體分析:
對(duì)于網(wǎng)絡(luò)節(jié)點(diǎn),我們現(xiàn)在拿到的數(shù)據(jù)如下圖:


網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)數(shù)據(jù)

這里網(wǎng)絡(luò)節(jié)點(diǎn)是采用的輪詢檢測(cè),然后橫軸是每一次輪詢檢測(cè)的情況(分值為1-10,越高節(jié)點(diǎn)風(fēng)險(xiǎn)值越高),縱軸表示的是第幾個(gè)節(jié)點(diǎn)。這里進(jìn)行了20次輪詢檢測(cè),然后我們要做的是預(yù)測(cè)第21次的情況(一步狀態(tài)預(yù)測(cè))。
這里的時(shí)間由于是每一次輪詢,故而是離散的,但是這里的節(jié)點(diǎn)狀態(tài)不是離散的,我們這里定義:網(wǎng)絡(luò)節(jié)點(diǎn)只有三個(gè)狀態(tài):安全,正常和待檢測(cè),即狀態(tài)序列{i, j, k},其中i:0-3.9,j:4.0-6.9,k:7.0-10.0。則每個(gè)節(jié)點(diǎn)的狀態(tài)轉(zhuǎn)移矩陣:

image.png

懶得碼字了,就是這樣

代碼使用python進(jìn)行實(shí)現(xiàn),純手打,基本沒(méi)用庫(kù)。
寫(xiě)的不是很完美但是注釋很豐富,過(guò)程每一步都print了,就不再做代碼的介紹了,代碼傳到我的GitHub上了:https://github.com/JerryLoveCoding/MarkovForecasting

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容