王新武
(大連財(cái)經(jīng)學(xué)院,遼寧 大連 116000)
隱馬爾可夫模型(HMM)是由Baum等人于1966年率先提出來的[1]。HMM是馬爾可夫模型的延伸,是一個(gè)概率模型,可以用來預(yù)測序列問題。HMM最早應(yīng)用于語音識別中,并獲得了巨大的成功,之后被廣泛應(yīng)用于模式識別、圖像識別、生物信息科學(xué)、故障診斷等領(lǐng)域,取得了可喜的成績[2]。隨著研究的深入,HMM的應(yīng)用也越來越廣泛。
下面是以解碼問題為例的隱馬爾可夫模型建模過程:
(1)狀態(tài)集:定義一個(gè)狀態(tài)集合G={G1,G2,…,Gn}
(2)轉(zhuǎn)移集:每個(gè)狀態(tài)轉(zhuǎn)移元素集合(gi→gi+1)
(3)觀察集:輸出的觀察符號集:
從g1開始,轉(zhuǎn)移到新的狀態(tài)gi,可以觀測到一個(gè)輸出符號σi。經(jīng)過轉(zhuǎn)移到最終狀態(tài),會(huì)得到一個(gè)符號串:H=h1,h2,…,h i。每一個(gè)狀態(tài)轉(zhuǎn)移對應(yīng)的概率為P(gi→gi+1)。在任意狀態(tài)觀測到特殊符號的概率P(H|g)。在一個(gè)隱馬爾可夫模型O上,序列H被觀測到的概率是所有可能路徑的概率和,如式(1)所示:
建立隱馬爾科夫模型的目的就是找到能使觀察概率達(dá)到最大的狀態(tài)序列Q(H|O),如式(2)所示:
HMM用圖形表示如圖1所示。
圖1 HMM圖形
任意時(shí)刻狀態(tài)序列的產(chǎn)生:序列在某時(shí)刻的狀態(tài)是a1,在該狀態(tài)下得到的觀察值是e1,從a1轉(zhuǎn)移到a2,在a2狀態(tài)下得到觀察值e2。按照此種方法,會(huì)得到一個(gè)觀察值序列E={e1,e2,…ei,…,et}。因?yàn)樵谌我鈺r(shí)刻產(chǎn)生的觀察值e只依賴于狀態(tài)值a,所以可以得到在a狀態(tài)下出現(xiàn)e觀察值的概率為所有時(shí)刻狀態(tài)轉(zhuǎn)移概率和觀測概率的乘積,
(1)個(gè)性化推薦:基于隱馬爾可夫模型的偏好進(jìn)化學(xué)習(xí)和高維數(shù)據(jù)稀疏問題處理[3]。解決高維數(shù)據(jù)稀疏問題和因用戶偏好學(xué)習(xí)困難而難以高效反應(yīng)用戶的個(gè)性化需求的問題,從而突破上下文感知推薦系統(tǒng)的應(yīng)用瓶頸。利用評分分組,構(gòu)造轉(zhuǎn)移矩陣和觀察矩陣。為防惡意刷分引入權(quán)重因子,完成隱馬爾可夫的建模。
(2)文本分類:通過提取文本中的特征詞、特征詞頻、文檔數(shù)量、特征詞語義等信息,利用信息增益的方法進(jìn)行特征詞的合并和分類,通過分類分別建立隱馬爾可夫分類模。新文本的分類則是通過分類向量的交集,作為觀察序列輸入隱馬爾可夫模型,預(yù)測各分類輸出的概率,以概率大小作為分類標(biāo)準(zhǔn)[4]。
(3)輿情分析:以微博為平臺,考慮微博用戶的個(gè)人特征、感情走向,以具體的行為表現(xiàn)等為觀察序列,以及輿情的發(fā)展、波動(dòng)消亡等為狀態(tài)序列,建立隱馬爾可夫模型,預(yù)測和預(yù)警輿情的發(fā)展和一般規(guī)律,為最終決策提供科學(xué)高效的方法[5]。
(4)智能學(xué)習(xí):假設(shè)用戶擁有良好的學(xué)習(xí)習(xí)慣和效果,需要從用戶的學(xué)習(xí)序列中找到一個(gè)最優(yōu)的學(xué)習(xí)序列引導(dǎo)學(xué)習(xí)的目的。建立隱馬爾可夫模型,對模型進(jìn)行訓(xùn)練,尋找知識點(diǎn)間的關(guān)聯(lián)概率,利用模型預(yù)測知識點(diǎn)的遷移序列,找到最優(yōu)的狀態(tài)序列,智能引導(dǎo)用戶學(xué)習(xí),提升用戶的學(xué)習(xí)效率和學(xué)習(xí)效果[6]。
(5)時(shí)間序列預(yù)測:假設(shè)一系列的隱狀態(tài)構(gòu)成了一個(gè)時(shí)間序列,隱狀態(tài)間的轉(zhuǎn)換構(gòu)成系統(tǒng)運(yùn)行的根本。對時(shí)間序列分段后,根據(jù)先后發(fā)生的時(shí)間順序和發(fā)生時(shí)間的相似性等進(jìn)行聚類,以分類為隱含狀態(tài)得到狀態(tài)轉(zhuǎn)移矩陣,建立隱馬爾可夫模型,進(jìn)行時(shí)間序列的預(yù)測。
以在線視頻的評分為狀態(tài)序列,評分對應(yīng)的視頻內(nèi)容即為觀察序列。用戶某一次對在線視頻內(nèi)容的評分只與前一次的評分有關(guān),與下一次無關(guān),所以用戶的評分行為符合隱馬爾可夫隨機(jī)過程。
利用無監(jiān)督的學(xué)習(xí)法(EM算法),訓(xùn)練集中t時(shí)刻使用并給出所得到評分的用戶觀察集Y={Y1,Y2,Y3,…,Yt},隱含的狀態(tài)序列X={X1,X2,X3,…,Xt},通過對訓(xùn)練集參數(shù)的訓(xùn)練,得到基于隱馬爾可夫最大概率,即P(Y|λ)。訓(xùn)練方法如下[7]。
①根據(jù)向前-向后算法(訓(xùn)練HMM的標(biāo)準(zhǔn)算法是向前-向后算法(Forward-backward Algorithm)或者叫作鮑姆-韋爾奇算法(Baum-Welch algorithm),這是期望最大化(Expectation-Maximization algorithm,EM算法)的一種特殊情形),定義一個(gè)在T時(shí)刻處于狀態(tài)i的前向變量概率是(i),如果T+1時(shí)刻的狀態(tài)為j,根據(jù)前向算法,則有公式(3):
②根據(jù)向前-向后算法,定義一個(gè)在T時(shí)刻狀態(tài)是Si的后向變量概率是ηT(i),代表如果T+1時(shí)刻到t時(shí)刻觀察到序列Y={Y(T+1)Y(T+2)…Yt}的概率,根據(jù)向后算法則有公式(4):
③采用向前-向后算法完成計(jì)算后,計(jì)算P(Y|λ)見公式(5):
④假如已知某刻T的在線視頻概率變量σT(i,j)。代表在這一時(shí)刻T對在線視頻內(nèi)容的Yi的評分是Si,在下一時(shí)刻T+1時(shí)刻對視頻Yi+1的評分是Sj的概率,其中(1≤I,j≤m, 1≤T≤t)。把式(3)~(5)帶入式(6)可得:
⑤假如已知用戶在T時(shí)刻的在線視頻概率變量是T(i,j)(1≤I,j≤m, 1≤T≤t),代表在T時(shí)刻在線視頻Yi的評分是Si的概率。把式(3)~(5)代入式(7)可得:
⑥根據(jù)步驟④和⑤,得到Si轉(zhuǎn)移得到Sj狀態(tài)的期望值。評分值期望如式(8)所示:
由于Si轉(zhuǎn)移到Sj狀態(tài)的期望可以計(jì)算的出,那么Si轉(zhuǎn)移到其他狀態(tài)的方法也可以得到,如式(9)所示:
用戶在視頻網(wǎng)站上觀看視頻和評分的信息通過觀看時(shí)間戳的方式記錄,通過觀看評分記錄可以從中提取一個(gè)在線視頻評分路徑轉(zhuǎn)移序列。定義該序列為A={a1,a2,a3,…,an}。假如用戶選擇評分的在線視頻資源都是用戶喜歡的內(nèi)容,那么用戶選擇評分的某在線視頻中必然存在某些吸引用戶的信息,而吸引用戶選擇觀看并評分的信息就可以定義為該用戶的興趣點(diǎn)。通過一系列的用戶瀏覽記錄,就可以提取用戶的興趣集。這個(gè)興趣集就是隱馬爾可夫模型“隱”的內(nèi)涵。通過挖掘用戶的興趣集當(dāng)中興趣點(diǎn)并進(jìn)行加權(quán),找出符合用戶興趣點(diǎn)權(quán)重的視頻內(nèi)容,推薦給該用戶,那么就可以獲得好的用戶體驗(yàn)。
用戶在評分轉(zhuǎn)移的過程中,每一個(gè)評分對應(yīng)一個(gè)視頻內(nèi)容。而用戶評分對應(yīng)的在線視頻內(nèi)容就是隱馬爾可夫模型的觀察值,獲得觀察序列E={e1,e2,e3,…,en},觀察序列示意如圖2所示。
圖2 觀察值序列
在線視頻網(wǎng)站上的某個(gè)視頻內(nèi)容簡介,就是對該視頻內(nèi)容的簡單概括,如圖3所示。
圖3 豆瓣網(wǎng)站圖片
圖3中展示的是豆瓣網(wǎng)站上電影《流浪地球》的頁面截圖,從圖中可以發(fā)現(xiàn)每部電影的簡介信息結(jié)構(gòu)相同,但頁面的關(guān)鍵字不同,用戶選擇觀看電影會(huì)根據(jù)電影簡介的關(guān)鍵字進(jìn)行選擇,喜歡科幻或?yàn)?zāi)難題材電影的用戶可能會(huì)選擇觀看《流浪地球》。假設(shè)不同用戶因?yàn)樽约旱南埠貌煌x擇不同,那么用戶最終選擇觀看影片的出發(fā)點(diǎn)可能就是網(wǎng)頁中不同的關(guān)鍵字。
一部電影的簡介頁面中包含多個(gè)關(guān)鍵字,那么一部電影可以用一個(gè)關(guān)鍵字集合來表征,用戶最終所選擇觀看的某部電影,決定因素可能就是因?yàn)楸荒硞€(gè)電影中的關(guān)鍵詞吸引。為了找到用戶的興趣關(guān)鍵詞,決定采用Python定向爬取網(wǎng)站關(guān)鍵詞信息的方式實(shí)現(xiàn),具體步驟如下:
①確定爬取的目標(biāo)信息。因電影簡介頁面的標(biāo)準(zhǔn)化程度較高,所以決定定向的爬取有用的特征詞信息,建立興趣關(guān)鍵詞集。這里需要爬取的特征詞主要包含:電影名,電影上映時(shí)間、評分、導(dǎo)演、演員、產(chǎn)地、語言、影片類型等信息。建立一個(gè)特征詞集,F(xiàn)={f1,f2,f3,…,fn},fi(i表示自然數(shù)1…n)則表示視頻網(wǎng)站上爬取的一個(gè)特征詞,n表示特征詞的數(shù)量。
②特征詞出現(xiàn)的頻率計(jì)算:采用爬取后的信息建立起的特征詞集即為當(dāng)前影片的表征形式。由于電影的結(jié)構(gòu)化程度較高,關(guān)鍵詞的使用頻率較固定,所以用戶如果只存在觀看了一部影片記錄,那么并不能發(fā)現(xiàn)該用戶的關(guān)鍵詞興趣。所以需要用戶的一系列的瀏覽記錄集,建立一個(gè)多事務(wù)(觀看的影片)的關(guān)鍵詞集。通過觀看記錄關(guān)鍵詞的提取計(jì)算,才能發(fā)現(xiàn)用戶真正感興趣的關(guān)鍵詞。計(jì)算公式如下:
式中,Q1、Q2、Q3、Q4、Q5、Q6代表調(diào)整系數(shù)。
計(jì)算完特征詞的出現(xiàn)頻率,就可以算出每個(gè)特征詞對該用戶的權(quán)重值。計(jì)算公式如下:
通過公式(4)~(10),可以計(jì)算出每個(gè)特征詞對該用戶的興趣權(quán)重,根據(jù)該權(quán)重就可以計(jì)算出該用戶的對任何一部電影的感興趣的概率,根據(jù)概率值得大小既可以預(yù)測該用戶最可能感興趣的視頻資源。
豆瓣電影網(wǎng)的結(jié)構(gòu)化的數(shù)據(jù)可以利用Python進(jìn)行爬取。
基于隱馬爾可夫模型的在線視頻個(gè)性化推薦的最終目標(biāo)是滿足不同類型用戶的使用需要。第一層級的個(gè)性化推薦:非注冊用戶的個(gè)性化推薦,主要解決的問題是非注冊用戶的冷啟動(dòng)問題。第二層級的個(gè)性化推薦:注冊新會(huì)員用戶的個(gè)性化推薦,解決的問題是新用戶的用戶稀疏問題。第三層級的個(gè)性化推薦:針對網(wǎng)站的資深會(huì)員用戶的在線視頻個(gè)性化推薦服務(wù),提升用戶的使用滿意度。
3.6.1 第一層級的個(gè)性化推薦結(jié)果(表1)
表1 第一層級的個(gè)性化推薦輸出結(jié)果
3.6.2 第二層級的個(gè)性化推薦結(jié)果(表2)
表2 第二層級的個(gè)性化推薦輸出結(jié)果
本層的數(shù)據(jù)結(jié)果本應(yīng)是6個(gè)不同年齡段的輸出結(jié)果,但由于數(shù)據(jù)集中的年齡數(shù)據(jù)是隨機(jī)生成的,而隨機(jī)生成的數(shù)據(jù)對于各年齡段的輸出結(jié)果幾乎沒有差別,所以本輸出結(jié)果只對其中一個(gè)輸出結(jié)果進(jìn)行展示。
3.6.3 第三層級的個(gè)性化推薦結(jié)果(表3)
表3 第三層級的個(gè)性化推薦輸出結(jié)果
表3是基于隱馬爾可夫模型的個(gè)性化推薦結(jié)果展示,模型輸出7 120個(gè)結(jié)果,本文只截取前5個(gè)結(jié)果作為展示。由表3可以發(fā)現(xiàn),前5個(gè)用戶的興趣關(guān)鍵詞各不相同,所得到的推薦電影也各不相同,得到相應(yīng)預(yù)測評分的概率也相差較大。但各自獲得相應(yīng)預(yù)測評分的概率都是在各自興趣關(guān)鍵詞集中概率最高的結(jié)果。第三級個(gè)性化推薦完成。
基于對大型視頻網(wǎng)站用戶的觀看記錄數(shù)據(jù)的采集,建立基于隱馬爾可夫模型的個(gè)性化推薦系統(tǒng)。推薦分成三個(gè)推薦層級,分別針對不同的用戶類型,解決了不同用戶的實(shí)際需求,并提出用戶興趣時(shí)間閾值觀念,適時(shí)地滿足用戶的個(gè)性化需求,為在線視頻網(wǎng)站的發(fā)展奠定基礎(chǔ)。■