隨著互聯(lián)網(wǎng)的飛速發(fā)展,個性化推薦已經(jīng)成為各大網(wǎng)站、手機(jī)客戶端的必備服務(wù)。如何持續(xù)優(yōu)化、進(jìn)一步提高推薦的精準(zhǔn)度是一項復(fù)雜又令人興奮的工程。
主流的推薦系統(tǒng)有協(xié)同過濾、基于內(nèi)容的推薦、基于社交網(wǎng)絡(luò)的推薦等。
很多推薦算法沒有考慮到用戶的短期興趣,而用戶的興趣又是隨著時間動態(tài)變化的,所以有效地捕獲用戶的興趣偏好轉(zhuǎn)換對提高推薦的準(zhǔn)確性有著很大的輔助作用。
馬爾可夫模型通過觀察用戶短期的行為數(shù)據(jù),生成一個狀態(tài)轉(zhuǎn)移矩陣,根據(jù)該矩陣預(yù)測接下來一個時間點(diǎn)的用戶行為,有效地利用了用戶的短期興趣偏好信息。
概念
安德雷·安德耶維齊·馬爾可夫Андрей Андреевич Марков(1856.6.14-1922.7.20),俄國數(shù)學(xué)家。
1874年馬爾可夫入圣彼得堡大學(xué),師從切比雪夫,畢業(yè)后留校任教。
1886年當(dāng)選為圣彼得堡科學(xué)院院士。馬爾可夫的主要研究領(lǐng)域在概率和統(tǒng)計方面,他因提出馬爾可夫鏈的概念而享有盛名。
馬爾可夫鏈已經(jīng)成功應(yīng)用到物理、化學(xué)、語音識別、信息科學(xué)、金融等領(lǐng)域,谷歌所使用的網(wǎng)頁排序算法就是由馬爾可夫鏈定義的。
安德雷·安德耶維齊·馬爾可夫
馬爾可夫過程
對于一個隨機(jī)過程,如果其未來所處的狀態(tài)僅與其當(dāng)前狀態(tài)有關(guān),而與過去的狀態(tài)無關(guān),則該隨機(jī)過程被稱為馬爾可夫過程。
馬爾可夫鏈
假設(shè)馬爾可夫過程??的參數(shù)集T是離散的時間集合,?
則相應(yīng)??取值集合空間是離散的狀態(tài)集?
設(shè)有隨機(jī)過程??,
若對于任意的整數(shù)??和任意?
?,
條件概率滿足
則稱??為馬爾可夫鏈。?
簡單點(diǎn)就是說,時間和狀態(tài)都是離散的馬爾可夫過程即為馬爾可夫鏈。
轉(zhuǎn)移概率
為馬爾可夫鏈??在時刻n的一步轉(zhuǎn)移概率,其中?
?,簡稱為轉(zhuǎn)移概率。
轉(zhuǎn)移概率矩陣
設(shè)P表示一步轉(zhuǎn)移概率??所組成的矩陣,且狀態(tài)空間?
?,則

稱為系統(tǒng)狀態(tài)的一步轉(zhuǎn)移概率矩陣,它具有的性質(zhì):
(1)??;
(2)??.
n步轉(zhuǎn)移概率、轉(zhuǎn)移矩陣
為馬爾可夫鏈??的n步轉(zhuǎn)移概率,并稱?
?為馬爾可夫鏈的n步轉(zhuǎn)移矩陣。
舉個栗子
說到這里,可能還會有人問“隨機(jī)過程是啥玩意兒”,“馬爾可夫鏈到底是什么鬼”。
數(shù)學(xué)定義總是簡單、精準(zhǔn)、嚴(yán)謹(jǐn),幾乎沒有邏輯漏洞,但可能不是特別容易理解,那么這個小節(jié)我們舉幾個栗子,更形象的解釋下這些概念。
隨機(jī)過程,就是一系列隨機(jī)變量的集合。
比如,每丟一次硬幣,便產(chǎn)生一個隨機(jī)變量X,那么一次又一次的丟下去,便產(chǎn)生一系列的隨機(jī)變量X1,X2,…,Xi,…。隨機(jī)變量序列集合起來就是一個隨機(jī)過程。
那么馬爾可夫鏈又是什么呢?
它其實是隨機(jī)過程的一種,具體是什么還是舉個例子吧。
無忌是達(dá)觀數(shù)據(jù)的員工,每天下午4點(diǎn)到5點(diǎn)有仨狀態(tài):吃水果(公司免費(fèi)提供的、各種管飽)、寫代碼、技術(shù)交流,這就是傳說中的狀態(tài)分布。那么明天的這個時間段無忌會做什么呢?后天呢?大后天呢?假如他的狀態(tài)轉(zhuǎn)移是有概率的,比如今天吃水果,那么明天還吃水果的概率是0.3,寫代碼的概率是0.6,技術(shù)交流的概率是0.1。
直接看下表:
無忌的狀態(tài)轉(zhuǎn)移概率
左邊一列是今天的狀態(tài),上面一行是明天的狀態(tài)。
圖中的0.1表示的是無忌今天吃水果,第二天技術(shù)交流的概率。
這就構(gòu)成了一階轉(zhuǎn)移概率矩陣。
這個例子中,無忌明天的狀態(tài)僅僅與今天的狀態(tài)有關(guān),與過去無關(guān),同時三種狀態(tài)是離散的,構(gòu)成了一個馬爾可夫鏈。
推薦應(yīng)用
用戶行為分析
為了讓推薦結(jié)果符合用戶口味,我們需要深入了解用戶。如何才能了解一個人呢?
《論語 · 公冶長》中,
“聽其言,觀其行?!?/p>
也就是說,可以通過用戶留下的文字和行為了解用戶的需求。
用戶行為數(shù)據(jù)最簡單的存在方式就是日志,用戶的每次瀏覽、點(diǎn)擊、購買、收藏等都記錄在日志中,這些行為數(shù)據(jù)對于接下來的構(gòu)建轉(zhuǎn)移概率矩陣有著至關(guān)重要的作用。
假如在某購物網(wǎng)站中,對某物品的一次購買,稱作一個狀態(tài)。
某用戶在??時刻購買了物品a,這里我們定義為狀態(tài){a};
在接下來時刻??該用戶又購買了物品b和c,則由狀態(tài){a}轉(zhuǎn)移到了狀態(tài)或{c};
這時在??時刻購買了d,狀態(tài)轉(zhuǎn)移到了{(lán)d},這樣的話用戶不停的購買,狀態(tài)也不停地轉(zhuǎn)移。
形成了一條購買鏈,如圖。
某用戶的購買鏈
在這個例子中,我們僅僅討論了針對單個用戶如何構(gòu)建購買鏈,對于所有用戶來說,道理一樣,只不過狀態(tài)集擴(kuò)大了而已。
轉(zhuǎn)移矩陣的構(gòu)建及使用
我們先討論下非個性化馬爾可夫模型,即假設(shè)每一個用戶的轉(zhuǎn)移矩陣是相同的,這樣的話個性化推薦只能體現(xiàn)在將轉(zhuǎn)移矩陣應(yīng)用在用戶的最后一次行為操作。
繼續(xù)舉個例子,通過對某段時間內(nèi)所有用戶行為進(jìn)行分析,抽取出這些狀態(tài)轉(zhuǎn)移樣本數(shù)據(jù):(a,b,c)->(b,c)、(b,c)->(a,b),然后我們可以得到如下轉(zhuǎn)移矩陣M:
轉(zhuǎn)移矩陣
假如某個用戶當(dāng)前的操作物品是a、c,那么根據(jù)上面得出的轉(zhuǎn)移矩陣,我們就可以計算出接下來該用戶操作各個物品的程度,對這些結(jié)再進(jìn)行標(biāo)準(zhǔn)化后就可以認(rèn)為是接下來對各個物品進(jìn)行操作的概率,

最后對
進(jìn)行標(biāo)準(zhǔn)化即可得到接下來對a、b、c的操作概率。
其中A是用戶當(dāng)前的行為矩陣,M為計算出來的轉(zhuǎn)移矩陣,對結(jié)果F進(jìn)行標(biāo)準(zhǔn)化后即可得到未來用戶行為的概率預(yù)測矩陣。有了當(dāng)前行為以及概率預(yù)測矩陣,我們就可以根據(jù)概率大小進(jìn)行排序,優(yōu)先推出概率大的物品,達(dá)到個性化的目的。
而對于個性化馬爾可夫模型,可以怎么處理呢?
這里我們可以將對物品的偏好轉(zhuǎn)化為對特征的偏好,假如某個物品的特征是「娛樂、影視」,那么對該物品的一次行為操作可以轉(zhuǎn)化為對「娛樂」、「影視」的操作。
這樣,通過對某個用戶的歷史行為日志進(jìn)行挖掘分析,就可以得出用戶在操作「娛樂」特征的情況下,下個時間段操作「影視」的概率,也就構(gòu)成了用戶的特征喜好狀態(tài)轉(zhuǎn)移矩陣。
這樣的話,可以計算出每個用戶的特征喜好狀態(tài)轉(zhuǎn)移矩陣,達(dá)到真正意義上的個性化。
多行為加權(quán)融合
上面提到的轉(zhuǎn)移矩陣的計算是基于用戶的某一種行為操作,即通過用戶的單一行為來得到用戶的偏好轉(zhuǎn)換。
為了能更好的表示用戶的喜好狀態(tài)轉(zhuǎn)換,可以通過多行為加權(quán)融合的方式來解決。
假如用戶的行為操作有點(diǎn)擊、購買、收藏、點(diǎn)贊,那么可以對每種行為類型計算出特征喜好狀態(tài)轉(zhuǎn)移矩陣,并得出用戶在下個時刻的操作列表,也就是推薦列表,最后將多個推薦列表進(jìn)行加權(quán)融合得出最終的列表結(jié)果。
多階馬爾科夫融合
考慮到用戶操作行為的隨機(jī)性,用戶從狀態(tài)s1到狀態(tài)s5可能受到s2、s3或者其他因素的影響。并且在個性化推薦長尾現(xiàn)狀的部分影響下,單個用戶在極短時間內(nèi)興趣偏好不會發(fā)生太大變化。
這里可以通過采用多階馬爾可夫模型融合的方式進(jìn)行對這種情況進(jìn)行優(yōu)化。比如一段時間內(nèi)用戶從狀態(tài)s1到s2,再到s5,即s1->s2->s5,那么這次的狀態(tài)轉(zhuǎn)移記為s1->s5的二階轉(zhuǎn)移次數(shù)。
通過計算用戶行為的多階狀態(tài)轉(zhuǎn)移矩陣,基于相關(guān)矩陣得出預(yù)測列表,最后加權(quán)融合即可得到我們需要的推薦列表。
這里具體采用幾階模型,可以根據(jù)實際場景進(jìn)行效果測試,階數(shù)越高,預(yù)測的結(jié)果更大的基于用戶長期的興趣偏好,階數(shù)約低,預(yù)測的結(jié)果更大的是基于用戶短時間內(nèi)的興趣偏好。
總結(jié)
本文首先簡單介紹了馬爾可夫相關(guān)的數(shù)學(xué)概念,然后通過例子形象地解釋了隨機(jī)過程、馬爾可夫、轉(zhuǎn)移概率等實際含義。
在推薦系統(tǒng)的應(yīng)用上,分析了如何通過用戶操作記錄進(jìn)行構(gòu)建狀態(tài)轉(zhuǎn)移矩陣以及轉(zhuǎn)移矩陣的使用。
考慮到推薦的效果,我們又進(jìn)一步介紹了多行為加權(quán)融合以及多階馬爾可夫融合的兩個方案。
作者簡介
張可,達(dá)觀數(shù)據(jù)推薦算法工程師,負(fù)責(zé)達(dá)觀數(shù)據(jù)個性化推薦引擎的研發(fā)、優(yōu)化,以及推薦系統(tǒng)中機(jī)器學(xué)習(xí)算法的具體應(yīng)用。一直在路上。