終於受不了有道雲筆記了...然而印象+馬克飛象的組合是要收費的呵呵噠,那就干脆來cnblog寫筆記好了。
Problem
問題還是那個問題,推薦系統萬變不離其宗:
給定一個用戶的歷史check-in行為數據,以及該用戶當前的時空坐標\((l,\tau)\),然后推薦用戶最可能感興趣的\(Top-k\)的POIs. 其中用戶的位置\(l\)被映射到了某一region,時間\(\tau\)被映射到了某一time slot,以便於找到它們的embedding表示。
后文會解釋時間片和區域時如何做embedding的。
Challenges
- 數據稀疏性:這里的稀疏,是相對於傳統的電影、音樂、商品等推薦系統而言的。其一,相較於前者,POI的訪問需要物理世界中的移動、消費,時間和物質成本都要更高;其二,即使用戶訪問了某POI,也有可能因為隱私、安全的考慮而不產生簽到(評價)行為,甚至我認為當用戶對POI的體驗比較中庸——既不喜歡也不討厭——的時候,他們也有可能懶得簽到(評價)。
- Context Awareness:翻譯成“對環境的感知性”比較合適,就是說做POI推薦時,用戶的時空位置對推薦的影響更大一些。
- 冷啟動:傳統推薦系統中的cold start分為用戶和商品兩種,這里的冷啟動對應后者,即POI的冷啟動問題。每天都會有新的POIs被添加到數據庫中,他們沒有被用戶訪問過。
- 用戶偏好的動態性:文章給的例子是,當一個用戶有孩子之前和之后,他對POI的喜好會發生重大變化。這個觀點的intuition來自於和電影、音樂推薦系統的比較,因為這類更加反映用戶精神偏高、高層次需求的商品,受到生活節奏變化的影響會比較小。但POI這類明顯更“接地氣”的商品,更會隨着用戶在物理世界中的活動而變化。
Factors/Features exploited
做POI推薦時利用到的特征也是近幾年常用的幾種。
- 簽到順序:用戶在POIs之間的遷移,往往表現出一定的順序規律。
- 地理位置:用戶當然更傾向於訪問位置更近的POI。
- 時間周期性:也好理解,一個人在一天中,早晨吃早飯趕公交,中午吃午飯,晚上購物娛樂回家,訪問的POI具有按天的周期性;周中家、公司、餐廳三點一線,周末去公園、健身房,又具有周的周期性。
- POI語義:作者從別人的研究中發現, 用戶訪問的POIs之間,存在語義(功能、性質等)上的相似性,這是廢話,但可能很有用。
Important Notations
這里面需要解釋一下的是\(W_v\),每個POI都會有分類、標簽,這些詞就構成了該POI的word set. 其余的notations均可通過表格理解。
Concepts of the 4 Graphs
作者用一個有向圖、三個二部圖描述了POI-POI、POI-Region、POI-Time、POI-Word之間的關系,其中POI-POI的有向圖也可以構造成一個二部圖。
- POI-POI Graph:有向圖,用來描述用戶訪問POIs的順序規律。圖中,一個節點代表一個POI,如果用戶依次連續訪問了\(POI_1,POI_2\),並且兩次訪問的時間間隔沒有超過閾值\(\Delta T\),那么在節點\(v_1,v_2\)之間添加一條指向后者的邊,邊的權重是這個pattern出現的次數。可以理解,時間間隔閾值\(\Delta T\)是一個時效性限制,如果兩次訪問間隔太久,那么沒有什么規律性可言。
- POI-Region Graph:二部圖,直接描述的是POI是否歸屬於某個區域;結合embedding,它最終描述的是,當用戶處於區域\(r_j\)時,訪問POI \(v_i\)的可能性。二部圖左側節點是regions,右側節點是POIs,如果POI歸屬於某region,那么它們的節點之間添加一條連線,並且權重值就是1.
- POI-Time Graph:二部圖,直接描述的是用戶在時間片\(t_j\)內訪問POI \(v_i\)的頻率。二部圖左側節點是time slots,右側節點是POIs,如果在時間片\(t_j\)內有POI \(v_i\)的訪問記錄,就連一條邊,權重就是訪問的次數。
- POI-Word Grapg:二部圖,描述的是POI的詞匯集\(W_{v_j}\)與所有詞匯的關系。二部圖左側是詞匯全集,右側是POIs,如果某詞匯出現在\(W_{v_j}\)當中,那么它和\(v_j\)間添加一條邊。邊的權重要靠tf.idf方法來計算,有時間再寫。注意,文章中的標號可能有問題,應該把\(D_{v_j}\)替換為\(W_{v_j}\),才能對應到表格中定義的notation.
Graph Embedding Model
- Bipartite Graph Embedding
如上文所言,將POI-POI的有向圖也轉換為二部圖之后,我們手里面就有了四張二部圖,因此它們做embedding的形式就可以統一。對於二部圖中左、右側的節點,我們分別用embedding vector \(v_i,v_j\)來表示。
接下來,我們構造兩種分布,來描述二部圖左側節點\(v_i\in V_A\)、右側節點\(v_j\in V_B\)的關系,首先是:
-
最小化目標
總體思路就是,令上面構造的兩種分布的\(KL-Divergence\)盡可能小,公式如下:
其中\(d(\cdot | \cdot)\)代表KL-Divergence,\(\lambda_i\)表示節點\(v_i\)的重要程度,在此我們以\(deg_i=\sum_j w_{ij}\)表示,即節點\(v_i\)處所有邊的權重之和。上式可整理為
通過優化目標函數,我們可以學習到最優的\(v_i\),得到POIs、regions、time slots、words的最佳embedding vector表示,這些嵌入向量,就是該模型的最終產出。 -
優化策略
優化的過程,就是所謂的“嵌入”的過程。事實上,我們有四張二部圖的embedding模型需要優化,最符合直覺的學習策略,就是將四張圖的向量嵌入過程合並,即構造一個新的目標函數:
其中
優化的過程涉及到了negative sampling,有時間可以整理一下。
最終,我們得到的是\(\{v_i\}, i=1,2,...,|V|\),\(\{r_i\},i=1,2,...,|R|\),\(\{t_i\},i=1,2,...,|T|\),以及\(\{w_i\},i=1,2,...,|W|\). 至此,我們就得到了各POI、各區域、各時間片、各個描述POI的詞匯的“嵌入向量”,在同一個embedding空間中來表征這些不同的要素。 -
用戶偏好的表征
系統的數據庫中,記錄着用某戶訪問過的POI,及其時間戳信息。這里,作者將這些用戶訪問過POI的嵌入向量求加權和,用加權和來表示用戶對POIs的偏好:
其中的權重,是一個時間衰減因子,可以看出用戶訪問POI時間越早,則該POI的嵌入向量權重越小,反之訪問時刻離現在越近,那么該POI權重越大。 -
用Graph Embedding Model推薦POI
終於,我們來到了收獲的時刻。用之前構造的四類嵌入向量,以及用戶偏好描述,我們可以對單個用戶對每個POI的感興趣程度打分:
之后,按分數降序排序,得到分數最高的\(k\)個點,作為推薦的POIs.
Experiment and Conclusion
關於測試結果,比較有價值的是作者通過實驗,定量地給出了各個Feature對POI推薦准確率的影響(貢獻),文章給出的結果是:\(Sequential\gt Temporal\gt Content\gt Geographical\). 這一點對於該領域后續的工作有很強的指導意義。
讀完文章再回顧,在我看來它的Contributions主要就是:用四個二部圖模型,將POI check-in sequential patterns、check-in frequency in different time slots、distributions of in different regions、semantic contents of POIs這些用來做推薦的feature,embed到同一個低維空間中,分別得到向量表示。這樣一來,不僅方便了表示用戶的偏好,也方便了對“用戶-POI”的關聯度打分,從而便捷地得到推薦結果。
Todo List
- tf.idf
- negative sampling
Reference
Xie M, Yin H, Wang H, et al. Learning graph-based poi embedding for location-based recommendation[C]//Proceedings of the 25th ACM International on Conference on Information and Knowledge Management. ACM, 2016: 15-24.
歡迎轉載交流,請注明出處。