1. 程式人生 > >從零開始學推薦系統二:隱語義模型

從零開始學推薦系統二:隱語義模型

2. 隱語義模型

隱語義模型又可稱為LFMlatent factor model),從誕生到今天產生了很多著名的模型和方法,其中和該技術相關且耳熟能詳的名詞有pLSALDA、隱含類別模型(latent class model)、隱含主題模型(latent topic model)、矩陣分解(matrix factorization)。 本節將對隱含語義模型在Top-N推薦中的應用進行詳細介紹,並通過實際的資料評測該模型。

 

核心思想:

通過隱含特徵(latent factor)聯絡使用者興趣和物品。

舉例:

使用者A的興趣涉及偵探小說、科普圖書以及一些計算機

技術書,而使用者B的興趣比較集中在數學和機器學習方面 。對A和B推薦圖書時,根據第一篇文章,我們可以採用基於鄰域的演算法:UserCF 和ItemCF。 

UserCF:首先需要找到和他們看了同樣書的其他使用者(興趣相似的使用者),然後給他們推薦那些使用者喜歡的其他書。

ItemCF:需要給他們推薦和他們已經看的書相似的書,比如使用者B看了很多關於資料挖掘的書,可以給他推薦機器學習或者模式識別方面的書。 

還有一種是基於興趣分類的方演算法,也就是隱語義模型,隱語義模型通過如下公式計算使用者u對物品 i 的興趣:

其中,pu,k 和 qi,k 是模型的引數,其中 pu,k 度量了使用者u的興趣和第k個隱類的關係,而 

qi,k 度量了第k個隱類和物品 之間的關係。這樣,就可以通過隱類,把使用者u與物品 i 的興趣聯絡起來。

需要注意的是推薦系統的使用者行為分為顯性反饋和隱性反饋。 LFM在顯性反饋資料(也就是評分資料)上解決評分預測問題並達到了很好的精度。不過本章主要討論的是隱性反饋資料集,這種資料集的特點是隻有正樣本(使用者喜歡什麼物品),而沒有負樣本(使用者對什麼物品不感興趣) 。因此,需要構造負樣本資料。

構造負樣本時,要注意以下兩點:

  1. 對每個使用者,要保證正負樣本的平衡(數目相似)。
  2. 對每個使用者取樣負樣本時,要選取那些很熱門,而使用者卻沒有行為的物品。

LFM損失函式:

通過利用梯度下降來最小化損失函式C,從而求解出pu,k qi,k 。

LFM中,重要的引數有4個:

  • 隱特徵的個數F
  • 學習速率alpha
  • 負樣本/正樣本比例 ratio。 
  • 正則化引數lambda

舉例:

資料集包含的是所有的user, 所有的item,以及每個user有過行為的item列表,使用LFM對其建模後,我們可以得到如下圖所示的模型:(假設資料集中有3個user, 4個item, LFM建模的分類數為3) 

其中,R是user-item矩陣,矩陣值Rij表示的是使用者 i 對物品 j 的興趣度。對於一個使用者來說,當計算出他對所有物品的興趣度後,就可以進行排序並作出推薦。

LFM演算法從資料集中抽取出若干主題,作為使用者和物品 之間連線的橋樑,將R矩陣表示為P矩陣和Q矩陣相乘。其中P矩陣是user-class矩陣,矩陣值Pij表示的是使用者 i 對class j的興趣度;Q矩陣式class-item矩陣,矩陣值Qij表示的是物品 j 在class i中的權重,權重越高越能作為該類的代表。

 

 優點:

  1. 不需要關心分類的角度,結果都是基於使用者行為統計自動聚類的,全憑資料自己說了算。 
  2. 不需要關心分類粒度的問題,通過設定LFM的最終分類數就可控制粒度,分類數越大,粒度約細。 
  3. 對於一個物品,並不是明確的劃分到某一類,而是計算其屬於每一類的概率,是一種標準的軟分類。 
  4. 對於一個使用者,我們可以得到他對於每一類的興趣度,而不是隻關心可見列表中的那幾個類。 
  5. 對於每一個class,我們可以得到類中每個item的權重,越能代表這個類的item,權重越高。

總結:

LFM的研究一直是在評分預測問題上的,很少有人用它去生成TopN推薦的列表,而且也很少有人研究如何將這個資料用到非評分資料上。其實LFM在評分預測和在TopN上應用的道理是一樣的。

在TopN問題上,隱反饋資料集上R只有1和0,分別表示感興趣和不感興趣,並且原始資料中只有明確1類的正樣本,負反饋資料需要我們自己收集生成。通過獲取PQ矩陣,就可以向某個特定使用者推薦他喜歡的電影類內電影中權重最高的電影或者按權重從大到小排序推薦N個電影給此使用者。 

LFM和基於鄰域的方法的比較

LFM具有比較好的理論基礎,它是一種學習方法,通過優化一個設定的指標建立最優的模型。基於鄰域的方法更多的是一種基於統計的方法,並沒有學習過程。 

LFM在生成一個使用者推薦列表時速度太慢,因此不能線上實時計算。

ItemCF演算法支援很好的推薦解釋,它可以利用使用者的歷史行為解釋推薦結果。 但LFM無法提供這樣的解釋。