实时个性化推荐系统简述
傳統的個性化推薦系統,都是定期對數據進行分析,然后對模型進行更新,進而利用新的模型進行個性化推薦。由于是定期更新模型的,推薦模型無法保持實時性,推薦的結果可能不會非常精準。
例如網易云音樂的用戶,假如用戶這會兒無意中聽到了一種曲風,覺得這種曲風很好聽,連續聽了好幾首這樣子的歌曲。如果我們的推薦系統沒有做到實時性,那么給用戶推薦的依然是他過去愛聽的,無法立即推薦給用戶他剛剛聽的那些歌的曲風,這就沒有很好的符合用戶的需求。
再舉個例子,比如用戶新訪問一個網站,如果網站能夠做到實時性,就可能根據用戶訪問網站的這一小段時間內的行為給用戶推薦到用戶需要的信息。
實時性很大的好處在于,一方面更準確的為用戶進行推薦,另一方面是用戶可以根據實時性的推薦結果更快進行反饋,進而可以對推薦模型進行盡快更新,使得推薦模型更加精確。
實時個性化推薦系統,與傳統個性化推薦系統,不僅在算法上有部分差別,更主要是系統架構上有很大差別。
首先在算法上。由于實時性的要求,使得算法本身在實時計算的部分不能太復雜,否則無法快速得到結果。在算法設計上,可以將推薦算法拆分成兩部分——實時部分和離線計算部分。可以利用離線部分將算法中可以離線計算的部分盡可能多的預先計算好,一般是數據量大并且是復雜的全局計算模型。然后將少量的增量更新計算留給實時計算部分,一般是輕量級的指定用戶模型訓練或者更新邏輯。
對監督式學習,傳統的分類方法不太合適,Matrix Factorization的方法是一個較好的方法,因為它的部分因子可以預先離線計算,其他部分可以實時增量更新來獲取最新的結果。
對無監督式學習,一般指聚類,也是可以提前離線計算出聚類的中心的,然后供實時計算使用。
?然后講一下架構。下圖是NetFlix的實時推薦系統系統架構圖。
?系統被分為3部分,?online,nearLine和離線部分(offLine)。Online和nearLine部分一起認為是實時部分。
離線部分就是傳統的個性化推薦系統的主體,定期將大量存儲的數據拿出來進行批處理運算,然后對模型進行建立與更新,這里就不詳細介紹了。
nearLine部分,是將用戶產生的事件,利用流式計算得到一些中間結果,這些中間結果一方面發送給online部分用于實時更新推薦模型,另一方面將中間結果存儲起來,例如存儲在MemCached、Cassandra、MySql等可以快速查詢的存儲中作為備份。在NetFlix的系統中,他們的流式計算是通過一個叫做NetFlix.Manhattan來實現的,它是一個類似于Storm的實時流式計算框架,只是針對他們自己的應用有一定的特異性,不是通用的實時計算框架。
然后是online部分。這一部分利用離線部分的主體模型并考慮nearLine部分的實時數據對模型進行增量更新,然后可以得到一個實時的推薦模型,進而根據用戶的行為來對用戶進行實時推薦。
個性化推薦系統架構的關鍵問題,就是如何以無縫方式實現在線和離線計算過程,說到底,也是算法的設計,如何將算法的計算步驟合理分配到各個部分,使得得到的模型既可以非常準確,又可以快速計算出來以滿足實時性的要求。
轉載地址:http://backend.blog.163.com/blog/static/20229412620136553130281/
轉載于:https://www.cnblogs.com/iplus/p/4489927.html
總結
以上是生活随笔為你收集整理的实时个性化推荐系统简述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 2282 Chocolate
- 下一篇: 解决bash: mysql: comma