劉倫琿,吳麗萍
(昆明理工大學 信息工程與自動化學院,云南 昆明 650500)
隨著5G時代的序幕漸漸拉開,大數據流如同潮水一般涌入人們的生活,其中包含大量不同領域的專業知識和信息。用戶需要一種輔助工具,幫助他們從這些專業或者冗余的信息中篩選推薦得到符合用戶個性的產品或內容。目前為了得到準確的個性化推薦信息,依舊存在一些問題需要去解決,如在分析用戶歷史評論內容時,由于每條評論的長短不同,評論的方式不同。傳統的機器學習方法如協同過濾并不能很好地理解評論獲得更準確的推薦結果。因此輔助決策算法需要更好地去挖掘評論中的特征,理解評論中的上下文信息。
為了得到評論中用戶的情感極性,YIN ZHANG等人在文獻[1]中提出了一種為情感打分的方法,根據情感詞匯表對每一條評論進行打分,從而得到每一條評論的情感狀態。為了更好地挖掘數據中的深層和表層的信息,Google公司提出了Wide&Deep模型,其核心思想是結合廣義線性模型的記憶能力和深度前饋神經網絡模型的泛化能力,利用廣義線性模型從數據中學習特征相關性,再通過深度神經網絡結構去挖掘隱藏特征。但如CHEN J 等人在文獻[2]中所說,Wide&Deep模型在wide part部分的數據輸入依舊需要專業人工特征工程。為了使模型能夠更好地考慮數據中特征組合交叉的影響并且不需要人工特征工程,GUO H等人在文獻[6]中提出了DeepFM模型,可以更快地訓練并且更精確地學習。為了讓模型能夠更好地應用在醫療信息推薦領域,本文提出一種在DeepFM模型的基礎上融合了狄利克雷分配(Latent Dirichlet Allocation,LDA)主題模型和Doc2vec算法的方法。實驗表明,這種方法能較好地應對數據冷啟動問題,并且有較好的推薦性能表現。本文以真實的醫療評論數據集為例,驗證了所提出的改進DeepFM算法的優越性。
主題模型是針對文本數據中的隱藏主題的一種建模方法。以一條評論文本來說,可能以不同的概率包含了多個不同的主題,而每個主題中又以不同的概率包含著許多個不同的單詞詞匯。主題模型本質上起源于向量空間模型,將文本映射到向量空間中,可以更加方便地進行操作和計算相似度等。為了能更好地挖掘出醫療評論中的隱藏主題特征,本文采用了主題模型中的狄利克雷分配(Latent Dirichlet Allocation,LDA)方法。
狄利克雷分配(Latent Dirichlet Allocation,LDA) 是由BLEI等人在文獻[3]中提出的一種主題生成模型,通過無監督學習的方法發現文檔中隱藏的主題信息。一條文本評論可以看成一組有序的詞序列,而文本的生成過程可以簡單地理解為三步:首先對于每一篇文檔從主題分布中抽取一個主題,其次從上述被抽到的主題所對應的單詞分布中抽取一個單詞,最后一步就是重復上述過程直到遍歷文檔中的每一個單詞。LDA概率圖模型表示如圖1所示,可以看出,LDA為一個三層的貝葉斯模型。其中,K為假定的主題數,α為每篇文章的主題分布的先驗分布參數,β表示K個主題的詞分布,θ是一個m×K(m為文檔個數)的矩陣,表示文檔的主題分布,z表示文檔中的詞語被分配的主題向量,W表示文檔中的詞語。

圖1 LDA概率圖模型表示
首先選擇一個主題分布向量θ,得到每個主題被選擇的概率,在生成每一個單詞的同時從主題分布向量θ中抽取一個主題Z,按照主題Z中單詞的概率分布生成一個單詞。因此在給定先驗參數α和?的前提下,LDA聯合概率分布的公式如式(1)所示:

根據式(1)可以估計出θ和β的值,而本文的實驗需要用到的參數是主題分布向量。
將主題數K設置為10,利用LDA對yelp醫療評論數據進行建模,將醫療評論劃分為10個隱藏主題。表1為劃分出的十個隱藏主題中概率最高的9個關鍵詞。根據關鍵詞可以對每一個隱藏主題進行合理的解釋。

表1 K=10時LDA挖掘隱藏主題情況
由表1中的關鍵詞可知,10個隱藏主題大體為:(1)眼部醫療服務;(2)預約等待時間;(3)運動護理損傷康復;(4)保險;(5)口腔牙部護理; (6)醫院醫藥基礎設施環境;(7)專業的醫療水平,友好的服務態度;(8)手術及手術護理;(9)按摩,放松,減壓;(10)美容,女性皮膚護理。

表1 幾種方法的均方差比較
LDA主題模型雖然能夠挖掘到醫療評論中的隱藏主題和特征,但在實驗中發現由于每一次生成的隱藏主題不同,使得這種方法很難調整。當挖掘到的隱藏特征不夠好時,會使最后的推薦準確度降低。為了讓模型的性能更加穩定,本文利用Doc2vec方法來保留更多表層特征和信息,使模型更好地理解評論的語義。
Doc2vec又叫做段向量(Paragraph Vector),是由MIKOLOV在文獻[4]中基于word2vec提出來的。Doc2vec是一種無監督的學習方法,可以使用不同句子長度的數據作為訓練樣本,最終目標是用預測的向量來表示不同的文檔。Doc2vec的訓練方法和詞向量的訓練方式十分相像,其本質就是根據每個單詞的上下文進行預測,其結構框架如圖2所示。

圖2 Doc2vec結構框架圖
用矩陣D中的某一列向量代表一句話,每一個單詞也用一個唯一的向量即矩陣W中的某一列來表示。其主要過程主要分成兩步:第一步為訓練模型,通過已知的訓練數據得到詞向量以及句向量/段向量;第二步則是推斷過程,對于新的段落,利用梯度下降的方法更新矩陣D,增加新的列,從而得到新的段落向量。經過訓練后,段落向量可以當做段落的特征,可以將這些段落特征直接輸入到后面的模型中。Doc2vec算法本身有兩個關鍵點:一是無監督訓練得到字向量W,二是推理階段得到段落向量D。Doc2vec算法的主要優勢在于:首先,Doc2vec能夠從未經過標簽處理的文本數據中學到特征,同時能夠很好地應對有時數據不夠豐富的問題;其次,繼承了詞向量在向量空間中對于單詞語義的理解;最后,Doc2vec算法保留了很多的文本信息比如詞語之間的序列信息等。這些優勢能夠使最后推薦的性能變得更加穩定且能夠在一定程度上提高推薦的準確度。本文將在第2部分對融合了Doc2vec后對于模型的影響進行分析 和對比。
1.4.1 因子分解機
因子分解機(Factorization Machines,FM)是由RENDLE在文獻[5]中提出的一種與支持向量機(Support Vector Machine,SVM)類似的預測器,但因子分解機能很好地應對數據稀疏的情況,即使在數據高稀疏的情況下也能估計得到可靠的參數。FM具有線性復雜度,并且能夠考慮特征之間的相互關系。普通的線性模型如式(2)所示:

式中:y為目標值,w0為偏置項,wi為每一個特征的權重,xi為第i個特征。由式(2)可知,普通的線性模型獨立地考慮每一個特征的影響,對于特征2階及以上的交叉情況并未考慮。而FM模型則對此進行了改進,如式(3)所示:

式中:n表示輸入數據經過OneHot處理(將評論文本通過獨熱編碼轉換成向量表示)后的數據維度,xi表示第i個特征,wij是特征組合的參數。當數據十分稀疏的時候,特征xi和xj都不為0的情況較少,導致特征組合的參數比較難訓練。為了更好地求解得到特征組合參數wij,FM對于每一個特征xi引入了輔助向量Vi=(Vi1,Vi2,Vi3,…,Vik),然后利用向量之間的內積得到特征組合參數wij,如式(4)所示:

與詞向量的表現形式類似,詞向量是將一個詞轉換成一個向量,而在FM中則是將一個特征轉換成了一個向量。利用輔助向量對特征組合參數矩陣進行分解的主要優勢在于:首先,求解的參數數量降低,從本來的n(n-1)/2個參數變成了求解矩陣V,即參數數量變成了n×k;其次,削弱了高階參數間的數據獨立性,k值越大,輔助向量對于特征的表現能力越強,而高階參數間的數據獨立性越強,模型則越精細,而較小的k值則會使模型獲得更好的泛化能力。因此在實驗中選擇較小的k值以獲得較好的醫療推薦效果。
1.4.2 DeepFM
DeepFM模型由GUO H等人于2017年提出[6],可以將其看成是因子分解機FM的衍生,將深度神經網絡(Deep Neural Networks,DNN)與FM相結合,利用FM挖掘低階特征組合的同時利用DNN挖掘高階特征組合,通過并行的方式將兩種方式組合。其模型框架如圖3所示。

圖3 DeepFM框圖
由結構圖可以看出DeepFM由FM和DNN兩部分構成,模型最終的輸出也由這兩部分構成,如式(5)所示:

本文的上一部分已經詳細地介紹了FM部分,DeepFM模型中DNN部分的具體結構如圖4所示。

圖4 DNN部分結構圖
DNN部分的作用是構造高維的特征,挖掘高階特征相互作用的影響。其輸入與FM層一樣,是嵌入層的嵌入向量,這也是DeepFM模型的特點之一即權值共享。在Wide&Deep模型之后,很多模型都延續了雙模型組合的結構。DeepFM相對于谷歌公司提出的Wide&Deep[7]模型而言,用FM部分替換了原來的Wide部分,加強了淺層網絡部分特征組合的能力,使Wide部分具有了自動的特征組合能力,其主要過程就是利用FM部分對不同的特征域的Embedding進行了兩兩交叉,最后將FM的輸出與DNN部分的輸出一同輸入最后的輸出層,參與最后的目標擬合。
DeepFM模型的優勢主要在于結合了廣度模型和深度模型的優點,在訓練了FM模型的同時也訓練了DNN模型,同時學習到了低階組合特征和高階組合特征[8]。DeepFM模型并不像Deep&Wide模型一樣在輸入層需要進行人工特征工程。
通過實驗對比發現,DeepFM模型在真實的醫療數據集上的推薦性能優于傳統的機器學習方法和普遍使用的深度學習方法。本文在DeepFM模型的基礎上,利用LDA主題模型和Doc2vec方法進行了優化,使最后的推薦性能有了一定的提升,其框架結構如圖5所示。

圖5 融合LDA主題模型以及Doc2vec方法的DeepFM模型框架圖
利用LDA主題模型挖掘評論信息中的潛在主題和特征,同時利用Doc2vec方法保留文本淺層的特征,使模型能夠更好地理解文本語義信息并增加模型推薦效果的穩定性。將LDA模型挖掘出的特征和段向量拼接后輸入DeepFM模型,得到預測的評分并與實際評分擬合。
該方法相較于DeepFM方法增強了模型對于隱藏特征和隱藏特征交叉情況的學習和挖掘,同時相比傳統的OneHot方法,LDA主題模型和Doc2vec拼接的方法可以降低輸入層的維度。經過實驗發現,該方法在醫療評論數據集上的推薦性能相對于DeepFM模型有了一定的提高。
本文的實驗旨在驗證融合了LDA主題模型和Doc2vec的DeepFM模型相較于傳統的機器學習方法和深度學習方法有更好的準確性和穩定性。本文所有的實驗都運行在一臺具有8 GB內存、3.6 GHz主頻 Intel(R)Core(TM)CPU的機器上。實驗主要分為兩個部分:第一部分對比DeepFM模型、傳統協同過濾方法、寬深網絡結構(Deep&Wide)方法以及經典的循環神經網絡(Rerrent Neural Network,RNN)深度學習方法的準確率;第二部分對比DeepFM模型和分別加入LDA主題模型、Doc2vec的DeepFM模型以及將三者結合的模型的準確率和穩定性。
實驗使用的數據來源于Yelp數據集。Yelp數據集是一個經典的推薦數據集,因擁有大量的真實數據而被廣泛地使用。從Yelp數據集中篩選抽取134 701條有關醫療評論的數據記錄進行整合和預處理。將預處理后的數據集的80%抽取作為訓練集,并將其中20%的數據抽取為驗證集。剩余的20%的數據抽取為測試集,用來檢測算法的效果。實驗使用的評價標準為均方根誤差(Root Mean Square Error,RMSE)。RMSE是推薦領域最常見的評價標準之一,其計算如式(6)所示:

式中:n為測試的總數量,p為模型預測的評分,r為用戶的真實評分。顯然,RMSE的值越小越好。
首先需要找到LDA主題模型中最優的隱含主題數K值和Doc2vec中段落嵌入向量的大小M,如圖6、圖7所示。

圖6 尋找最優K

圖7 尋找最優M
由實驗結果可以發現,當LDA主題模型中的隱藏主題數目K設置為20時實驗效果接近最優,當Doc2vec嵌入向量大小設置為300維時實驗效果接近最優。
為了驗證DeepFM模型方法能夠提高評分推薦的準確度,分別使用傳統的協同過濾方法、經典的深度學習RNN方法、近幾年提出的寬深網絡模型方法以及DeepFM模型方法在數據集上進行試驗。實驗結果如圖8所示。在該數據集上,DeepFM方法相較于另外三種方法,對于評分推薦的準確度有了一定的提升。

圖8 DeepFM和其他方法結果的對比情況
融合LDA主題模型和Doc2vec的DeepFM模型與普通的DeepFM模型對比實驗結果如圖9和圖10所示。可以看出,融合了LDA的模型收斂速度更快,且在推薦性能上表現更好。但在實驗過程中發現,由于LDA主題模型每一次生成的隱藏主題不同,當隱藏主題劃分情況較好時推薦性能較好,反之推薦性能會受到一定的影響。因而在多次實驗的過程中,評估標準RMSE值表現出一定的波動性和不穩定性。但當加入了Doc2vec段落嵌入后,測試結果的穩定性增加。結果如圖11所示。

圖9 訓練時RMSE下降情況

圖10 在測試集上模型的RMSE比較情況

圖11 多次實驗中兩個模型的穩定性比較情況
實驗結果對比顯示,DeepFM模型相較于經典的機器學習方法和目前常用的深度學習方法在醫療推薦方面具有一定的優勢。根據RMSE評估,融合了LDA主題模型后,其推薦性能又得到了一定的提高但穩定性下降。結合了Doc2vec段落嵌入后,雖然其RMSE值比只融入了LDA主題模型的DeepFM模型上升了3%,但該模型的穩定性得到了提高,使得模型更好操控和調整。
現實生活中為用戶實現個性化的推薦是一個難題和挑戰。為了解決這個問題,本文提出了融合LDA主題模型和Doc2vec的DeepFM模型來挖掘用戶評論中的隱藏主題和隱藏特征,并且學習其中淺層和深層的特征,為輔助用戶決策得到較為準確的推薦結果。實驗結果表明,本文提出的方法在真實數據集上的醫療推薦性能比傳統的協同過濾方法、寬深網絡模型(Wide&Deep)、RNN以及一般DeepFM方法表現更優。未來,希望能夠從社交網絡數據中抽取出更多的特征并且盡可能實時地為用戶提供更準確、更可靠、更個性化的推薦內容。