Feature-Based Matrix Factorization

前記

上一篇講到libFM的作者對(duì)比了libFM和SVDFeature,認(rèn)為SVDFeature也是一種通用的矩陣分解模型,但是各有優(yōu)缺點(diǎn):

  • 缺點(diǎn):SVDFeature有限制條件,只能對(duì)兩個(gè)類別型的特征進(jìn)行分解;只能用SGD算法來(lái)優(yōu)化,MCMC更好用
  • 優(yōu)點(diǎn):在有限制條件下的情況可以使用更高效的優(yōu)化算法

所以,我們看看為什么作者這么說(shuō)?

SVDFeature

SVDFeature作者是大神陳天奇,也是XGBoost和cxxnet的作者。本文主要參考資料為論文https://arxiv.org/pdf/1109.2271.pdf和SVDFeature的手冊(cè)

由Apex Data & Knowledge Management Lab在KDD CUP11競(jìng)賽中開(kāi)發(fā)出來(lái)的工具包。它的目的是有效地解決基于特征的矩陣分解.

論文組成部分

  • 基礎(chǔ)的矩陣分解有什么問(wèn)題
  • 什么是基于特征的矩陣分解
  • 什么信息能夠加入到模型
  • 怎么更有效的訓(xùn)練SVD++
  • 能處理多少數(shù)據(jù)

矩陣分解要解決什么問(wèn)題

  • 需要能處理大數(shù)據(jù)
  • 需要加上收集到的其他特征信息,而不是只用顯示或者隱式反饋

什么是基于特征的矩陣分解

  • 通用的模型定義為


    圖片.png

其中\alpha表示為用戶特征,\beta表示物品特征,\gamma表示全局特征
可以轉(zhuǎn)換成基礎(chǔ)的矩陣分解模型,如果我們定義
\gamma = \emptyset , \quad \alpha_k = \begin{cases}1\quad k=u\\0\quad k\neq u \end{cases} ,\quad \beta_k=\begin{cases}1\quad k=i\\0\quad k\neq i \end{cases}

  • 激活函數(shù)和損失函數(shù)定義
    • 原始的矩陣分解:恒等函數(shù)和L2損失
    • 邏輯回歸版本的矩陣分解:sigmoid函數(shù)和似然損失
    • 二分類問(wèn)題的矩陣分解:恒等函數(shù)和平滑鉸鏈損失
  • 模型訓(xùn)練


    圖片.png

哪些信息能給加入到模型來(lái)

  • 原始的矩陣分解
    • y = u + b_u + b_i + P^T_uq_i
    • \gamma = \emptyset , \quad \alpha_k = \begin{cases}1\quad k=u\\0\quad k\neq u \end{cases} ,\quad \beta_k=\begin{cases}1\quad k=i\\0\quad k\neq i \end{cases}
  • pairwise-rank模型
    • P(r_{ui} > r_{uj}) = sigmoid(u + b_i - b_j + p^T_u(q_i - q_j))
    • \gamma = \emptyset , \quad \alpha_k = \begin{cases}1\quad k=u\\0\quad k\neq u \end{cases} ,\quad \beta_k=\begin{cases}1\quad k=i\\-1\quad k=j\\0\quad k\neq i,k\neq j \end{cases}
  • 時(shí)序信息
    • TODO
  • 領(lǐng)域信息
    • TODO
  • 層次信息
    • TODO

高效的SVD++訓(xùn)練

使用對(duì)每個(gè)用戶將數(shù)據(jù)group倒一起,每一個(gè)用戶共享同樣的隱式和顯示反饋信息來(lái)進(jìn)行加速,具體的原理TODO


圖片.png

處理大規(guī)模數(shù)據(jù)

  • 使用外存
  • 用單獨(dú)的線程進(jìn)行讀取,多線程來(lái)進(jìn)行訓(xùn)練
  • KDDCUP11的比賽只用了2G的數(shù)據(jù)處理Yahoo! Music 2億的打分記錄

SVDFeature的操作指南

圖片.png

r k n m (global features) (user features) (item features)
r表示預(yù)測(cè)值
k表示全局feature的維度
n表示用戶feature的維度
m表示物品feature的維度
5 0 1 1 0:1 10:1表示user0對(duì)item10打分5

如果原始數(shù)據(jù)ua.base的格式為每行uid iid rate, generate feature from ua.base.shuffle
svdpp_randorder ua.base ua.svdpporder
line_reorder ua.base ua.svdpporder ua.base.shuffle

user feedback file
This file contains one line for each user, the order is same as the user order of the user grouped feature file. The first column gives the number of lines in grouped feature file of corresponding user. Then it specifies the implicit feedback information using the sparse feature format.
assume user 3 have rated item 2,4,6,7, and he has 3 lines in the grouped training file, then the extra file for implicit feedback is formatted as follows:
3 4 2:0.5 4:0.5 6:0.5 7:0.5

Summary for User Grouped Input Generation

  • create a file obeying the rule of user grouped format
  • generate feature file according to feature format
  • generate user feedback file if necessary
  • generate binary buffer file.

Usage Example Summary

  • model training:
    svd_feature config.conf num_round=10
  • continue training:
    svd_feature config.conf num_round=10 continue =1
  • rmse evaluation:
    svd_feature_infer config.conf
  • test prediction:
    svd_feature_infer config.conf pred=6 name_pred=pred.txt

http://dataera.org/2013/04/%E7%AE%80%E5%8D%95%E8%AF%B4%E8%AF%B4%E6%8E%A8%E8%8D%90%E6%A8%A1%E5%9E%8B/
我的理解是:非latent部分:feature本身對(duì)于rating分?jǐn)?shù)是會(huì)有一定作用的,比如用戶對(duì)于所有物品的打分的平均分,物品收到的平均打分,這就是上述公式的前兩項(xiàng);latent部分,首先假設(shè)有N維的latent factor,被用戶與產(chǎn)品共享,(所以\mathbf{p}, \mathbf{q}的維度是一致的),所有的feature都可以在latent factor上進(jìn)行分解,比如,不同的用戶本身在latent factor上的“響應(yīng)值”分布是不同的,不同的物品也是這樣,而對(duì)于其他feature,比如標(biāo)簽或類別:“動(dòng)作片”,也將其在latent factor空間進(jìn)行分解(學(xué)出來(lái)的latent factor空間的“響應(yīng)”應(yīng)該在“動(dòng)作片”相關(guān)的一個(gè)或幾個(gè)factor上特別大)。如此以來(lái),一對(duì)user-item pair對(duì)應(yīng)的feature在latent空間分解后相乘(上述公式的第三項(xiàng))就代表了latent factor各處的rating的預(yù)期。對(duì)于social relation,可以直接認(rèn)為是一種feature,用上述公式就能融入。但是還有些更加sophisticated的方法(請(qǐng)自行用recommendation+social relation谷歌),但是,本質(zhì)上也沒(méi)有太大的差別。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 俗話說(shuō)得好:萬(wàn)事開(kāi)頭難!我開(kāi)始青椒學(xué)習(xí)之初,感覺(jué)自己當(dāng)時(shí)什么都不懂,心中有些著急,自己怎么也不能弄明白,不...
    文山029孔慶燕閱讀 350評(píng)論 0 2
  • 當(dāng)別人不知道我的時(shí)候,我很生氣,為什么呢?因?yàn)槲遗聞e人不知道我,怕被別人覺(jué)得自己做的不好。其實(shí)想想別人不知道我只是...
    Dr魏閱讀 214評(píng)論 0 1

友情鏈接更多精彩內(nèi)容