Deep Matrix factorization Models for Recommender System

轉載請註明出處:All Minable團隊的搬磚日常

論文來源:ijcai 2017

論文鏈接:Deep Matrix Factorization Models for Recommender Systems

論文原作者:Hong-Jian Xue, Xin-Yu Dai, Jianbing Zhang, Shujian Huang, Jiajun Chen;

(侵刪)

Abstract

作者將基於矩陣分解(Matrix Factorization)的推薦系統以輸入為標準分為了兩類,一種是基於隱式反饋(implicit feedback)為輸入的推薦系統,另一種則是基於顯式反饋(explicit feedback)為輸入的推薦系統。隱式反饋輸入往往是無法表達用戶具體情感的數據,最常見的表達形式就是0-1矩陣,比如用戶對物品的瀏覽情況,可以通過以用戶為行,物品為列,構造一個0-1矩陣表達用戶是否與物品存在交互。而顯式反饋輸入則往往比較明顯了量化了用戶的情感,最常見的就是評分矩陣,這種矩陣是通過以用戶為行,物品為列,矩陣的元素為評分的形式構造。光從數字上看,一般隱式反饋比較適合與做提高召回率(recall)的模型輸入。而由於推薦系統的數據集通常都是關於評分的,因此有一種比較特殊的隱式反饋輸入,即將評分全都視為1, begin{equation} R_{ij}= begin{cases} 1 &mbox{if user i rated item j} 0 &mbox{otherwise} end{cases} end{equation}

可以看到,這種變化會引起信息丟失的問題。

在這篇文章中,作者通過結合顯式反饋和隱式反饋這兩種輸入,有效的解決了信息丟失的問題。不僅如此,作者還通過結合神經網路,提出了一種新型的矩陣分解模型,稱為Deep Matrix Factorization (DMF).

Introduction

該部分主要回顧了近幾年來數據科學家們將深度學習與推薦系統相結合得出的模型,作者發現很多模型都只用到了隱式反饋。(可能是因為很多情況下推薦系統的目的都是為了預測用戶是否會對一個物品感興趣,因此隱式反饋這種0-1矩陣的形式更加契合)

作者認為顯式反饋是非常有意義的,因此即便在預測是否感興趣的問題上也需要利用上該信息。為了實現上述條件,作者通過結合深度學習和矩陣分解模型的方式,提出了一種稱為深度矩陣分解(DMF)的模型。

總的來說,該文章的貢獻如下:

  1. 利用DMF將顯示反饋輸入中包含的用戶和物品信息非線性地映射到了一個低維空間
  2. 提出一種既包含顯式反饋又包含隱式反饋的損失函數
  3. 在多個數據集上跑出來的效果都非常可觀

Algorithm

DMF

上圖非常明了的表示了該文章的演算法。

和絕大多數的深度學習+矩陣分解的方法不同,該模型並沒有引入其他信息(side information)來輔助描述用戶和物品。作者巧妙地利用評分矩陣的行向量作為用戶信息,列向量作為物品信息,分別輸入到兩個多層神經網路中,進行特徵提取,大致步驟如下:

  1. 初始化兩個神經網路
  2. 將行、列向量 Y_{i,*}Y_{*,i} 分別輸入到兩個神經網路中,一層層進行特徵提取,並且確保兩個神經網路輸出特徵的維度一樣,此時輸出的就是用戶特徵 p_i 和物品特徵 q_i
  3. 計算兩個特徵的相似度,相似度越高,那麼用戶i越有可能對物品j感興趣,作者選用餘弦相似度描述兩者的相似程度: Y_{ij}=frac{p_i^Tq_i^T}{Vert p_iVertVert q_iVert}

預測的概率值便是 Y_{ij} ,那麼誤差如何描述呢?

作者首先提出了一個general function:

L=sum_{ij}l({Y_{ij},hat{Y}_{ij}})+lambda Omega(Theta)

其中 l(cdot) 描述的是誤差, Omega(cdot) 描述的是正則化項

和大多數論文一樣,作者將主要精力用於尋找一個合適的 l(cdot)

作者首先想到的是平方誤差,即

sum_{ij}w_{ij}Vert Y_{ij}-hat{Y}_{ij}Vert_F^2

但是由於 hat{Y}_{ij} 是一個預測的概率,並不適用於顯式反饋(評分)。因此和大多數機器學習方法一樣,作者選用了資訊理論中的交叉熵(cross-entropy)來描述誤差。最原始的形式如下:

l=-sum_{ij}{Y_{ij}log{hat{Y}_{ij}}+(1-Y_{ij})log(1-hat{Y}_{ij})}

為了能讓上述式子滿足交叉熵的定義, Y_{ij} 必須是隱式反饋,但是為了滿足論文初衷,作者認為顯式反饋會得到更好的表達, 因此為了能夠引入顯式反饋,作者將評分歸一化,得到如下損失函數:

l=-sum_{ij}{frac{Y_{ij}}{max{(R)}}log{hat{Y}_{ij}}+(1-frac{Y_{ij}}{max{(R)}})log(1-hat{Y}_{ij})}

上面的式子不再是純粹的交叉熵,歸一化的評分可以理解為權重,評分越高的誤分類到0的懲罰越高,反之,評分越低無分類到1的懲罰也越高,這符合我們的認知,因此該轉化是合理的。

得到誤差之後,便可以分別反向傳播回神經網路,用以更新權重信息。

整體演算法如下:

個人理解:

該演算法的想法並不是很難,但是卻非常巧妙,雖然沒有像很多演算法一樣用side information來彌補評分矩陣的稀疏性,但是直接通過深度學習對評分矩陣進行特徵提取是別的論文中沒有見過的,直覺上來看,直接通過評分矩陣提取的特徵應該是要比從side information中提取出來的信息要更為適用於描述一個用戶和物品。


推薦閱讀:

2017摩拜杯演算法挑戰賽 第三名團隊解決方案
誰來用最通俗易懂的語言跟我講一下k平均演算法(k means clustering)??
R實戰案例:利用演算法識別糖尿病患者(R語言實現)
紅包都送不出去了?教你看懂數據,不再懷疑人生
我們只談自己,不談友商

TAG:推荐系统 | 数据挖掘 |