作者del680202 (HANA)
看板DataScience
標題[問題] 推薦系統除了預先準備結果有更好的方法嗎
時間Sun Apr 1 19:49:17 2018
不確定這個版適不適合問這問題
想了下應該還算跟機器學習相關就決定PO這裡了
最近在研究怎麼作個人化的推薦系統
目前看到的流程大致分成
蒐集user/item清單 -> 建模 -> 打分 -> 排序 -> 儲存到某個DB給人呼叫
也就是預先作好推薦清單然後給人使用
之後就是一個建立一個batch定期更新這個清單
建模方法目前常看到的就相似度計算/MF/FM等等
當user/item清單非常龐大的時候這是一個很重的作業
產出的結果檔案也很龐大
想問問推薦系統的結果交付除了像這樣預先做出推薦清單之外
其他還有什麼好的交付方式嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.199.17.235
※ 文章網址: https://webptt.com/m.aspx?n=bbs/DataScience/M.1522583359.A.12B.html
1F:推 lucien0410: 這是機器學習的問題沒錯 04/02 01:30
2F:推 Wush978: 如果運用如Linear Regression的模型,可以考慮即時算 04/02 22:51
有想過使用可以即時運算的模型 還沒試過不知道效果如何
之前有想過作成real time預測的形式,預想問題大概就是item很多
每次用SGD更新後都要重頭打分在排序後輸出可能效能不會很好
不過這也只是自己在猜測而已
3F:推 minikai: 利用分散式運算勒,這類協同過濾運算,很常被Spark這類 04/02 23:23
4F:→ minikai: 的分散式運算當成火力展示的範例。 04/02 23:23
嗯...治標不治本 我現在的環境就是spark
使用100個worker去跑MF 1000萬使用者base,從建模到輸出結果要幾個小時
光是輸出結果檔這個動作都很花時間
5F:推 yogi: user/item set很大的時候, 可以用UV/SVD這些矩陣分解的方法 04/03 09:28
6F:→ yogi: 來做dim. reduction 04/03 09:28
7F:→ yogi: 特別是SVD 如果能夠找到適當的singular values, 其對應的向 04/03 09:36
8F:→ yogi: 量通常能給交付的內容增添除了黑盒子般的模型以外的insight 04/03 09:37
後來跟一個朋友聊天他也是說用降維來輔助
另外準備一個real time更新用的矩陣
也就是把batch跑的矩陣跟real time的矩陣ensemble後作real time預測
這招還在研究中
麻煩的可能還是在於item多的時候,想到還要重新排序就感覺有盲點
※ 編輯: del680202 (61.199.17.235), 04/03/2018 20:06:36
9F:推 bruce3557: 有考慮用bandit來解一些的new item的方法嗎 04/11 17:37
10F:推 chaselsu: 我的經驗是通常都是多層filtering or ANN的方法噎 04/17 13:30
11F:→ chaselsu: 前面幾層偏offline, 後面可以用複雜的模型 通常不會只用 04/17 13:31
12F:→ chaselsu: MF/FM/SLIM這種, 大多數都是多種模型blending 去避免推 04/17 13:32
13F:→ chaselsu: 薦系統常見的問題 04/17 13:32
14F:推 chaselsu: 覺得MF/FM這種可能是問題已經被定義好的最佳解 但實際上 04/17 13:35
15F:→ chaselsu: 問題是自己定義的 你可以拿更多不同面向資料的時候 MF這 04/17 13:36
16F:→ chaselsu: 種就不是最佳解 我印象最深的是我剛畢業的時候做FM 竟然 04/17 13:37
17F:→ chaselsu: 會推輸以很簡單的方式做的推薦 04/17 13:38
18F:→ chaselsu: 只因為簡單的方式考慮了"category" 04/17 13:38