先推薦幾篇關于推薦的文章,個人感覺對于入門很有實際意義,是IBM的工程師寫的,如下:
探索推薦引擎內部的秘密,第 1 部分: 推薦引擎初探
探索推薦引擎內部的秘密,第 2 部分: 深入推薦引擎相關算法 - 協同過濾
探索推薦引擎內部的秘密,第 3 部分: 深入推薦引擎相關算法 - 聚類
推薦,就是把你可能喜歡的商品,推到你的面前。構建一個推薦系統,就是構建如何把商品推到你面前的過程。
經常聽到人說,推薦就是算法,在接觸推薦系統之前,我也以為推薦就是算法,一說到算法,可能就以為很高深了,也很唬人,立馬產生一種膜拜之感,也就變得神秘起來了。
當我真正完完整整的接觸到推薦系統,達到一個入門級水平,可以獨立構建一個千萬級PV電子商務網站的推薦系統之后,以前的認知也改變了,我現在的觀點是:
推薦是一個整體的計算過程,在編碼中,關于算法的部分所占的工作量可能1%都不到;
構建一個千萬PV級別的推薦系統相對容易,一天的日志不過幾百M,計算過程中的數據,單臺機器的內存可以存下,當PV達到幾億幾十億時,就需要進行稍微復雜一點的分布式計算了;
推薦的計算方法很多,如何選擇,效果難以預料,只有通過橫向和縱向多做效果分析,才有意義。
Web訪問日志、購買、收藏,這些實際是用戶的行為數據;
用戶,這是分析的基礎數據;
商品,這是分析的基礎數據;
如何標記同一個未登陸用戶;如何找出未登陸用戶和登陸用戶是用一個人。
這是很重要的,這是以后日志分析計算的基礎。
根據用戶行為數據,分析出用戶和商品的關系;用戶<-->瀏覽、用戶<-->購買、用戶<-->收藏等。
根據第一步計算的數據,分析中常用的推薦結果,比如根據瀏覽數據,計算出“看了又看”,根據購買數據,計算出“買了又買”等。
算法,是廣義的,數學公式;規則,是小眾的,公司自己定義的,復雜自己場景的業務規則,在計算過程的第二步,計算最終的推薦結果時,大部分使用的都是自行定義的業務規則。
以推薦“看了又看”為例,根據一個商品,如何推薦出其他商品呢:
可以就根據這個推薦類型的基本含義,一個商品 ---> 看了這個商品的很多人,又看了 ---> 很多的商品,這就是推薦結果了,但是這個推薦結果有非常非常多,如何推薦呢?
可以推薦購買次數最終的,推薦最新的,推薦兩個商品的View人群最相似的......
這就沒有什么了,都是通用的。
基于業務的,推薦效果的評價體系;
基于技術的,大數據量時的分布式計算
前置項目:這個相關項目就比較多了,網站、商品、訂單,都有相關性。
最新源碼:git clone git@github.com:pumadong/cl-recommend.git 。