互聯網公司中,推薦系統都是怎麼開發的?

現在很多互聯網公司,每個人進去首頁看到的內容都是不一樣的,這是怎麼做到的?推薦系統的架構是怎麼樣的?
1 個回答
会点代码的大叔
2019-04-12

沒有真正的做過推薦系統,大部分的知識都是學習過、瞭解過,所以一些內容認識的比較淺顯,很多算法在我看來,都比較高深。下面我就把自己有限的知識分享一下:

  • 在N多年前,用戶進入一個購物網站的時候,看到的商品都是一樣的,而現在每個用戶進入首頁的時候,看見的商品列表可能是不相同的;

  • 在N多年前,用戶進入一個新聞網站的首頁,看到的新聞都是一樣的,而現在,每個用戶進入今日頭條的時候,看到的新聞(文章)是不相同的;這些都要歸功於推薦系統。

推薦系的分類

  • 熱門推薦:相當於一個排行榜功能,銷售排行、好評排行、閱讀排行等等;

  • 相關推薦:用戶買了一個商品,系統會告訴你類似的商品;用戶閱讀了一條新聞,這時候系統提示與此相關的內容。

  • 個性化推薦:根據用戶的歷史行為,推薦給用戶想要的內容;和相關推薦不同,相關推薦的前提是,要現有一個內容。前兩種推薦都比較容易實現,這裡主要說一說個性化推薦(直說整體的架構,至於一些細節,比如推薦算法,我也涼涼)。

個性化推薦系統的組成

  • 日誌系統:不要想象成應用日誌、Log,這裡的日誌系統可以看做對用戶信息和用戶行為的蒐集,這是個性化推薦系統的基礎數據。

  • 推薦算法:個性化推薦算法的核心,根據數據,分析得到推薦的結果。

  • 推送服務:得到推薦的結果之後,作用於用戶;如在什麼場景、時機下推薦。

互聯網公司中,推薦系統都是怎麼開發的?

推薦算法的基本流程

  • A:從數據庫中拿到用戶行為和屬性等數據,通過分析不同行為,生成當前用戶的特徵向量;比如用戶特徵屬性(如性別)、用戶關係屬性(如好友關係)、用戶偏好屬性(如喜歡看足球);每個行業關注的用戶特徵是不相同的;
  • B:不同的物品,也有不同的特徵屬性,比如對於視頻來說,包含地區、導演、演員、類型等;這個模塊要做的事情就是連接用戶和內容;比如用戶喜歡某些特徵的內容;利用用戶喜歡的內容,尋找與這些內容相似的內容;根據用戶特徵尋找相似的用戶,然後看這些用戶喜歡的內容等等;
  • C:對初始的推薦列表進行過濾,排名等處理,生成最終的推薦結果。

互聯網公司中,推薦系統都是怎麼開發的?

  • 舉個比較好理解的例子,你平時使用今日頭條,看了那些文章、每篇的停留時間、閱讀進度、是否回覆和點贊,然後推斷出你的閱讀偏好,進而給你推薦你感興趣的新聞(當然頭條的算法應該更復雜)。

  • 再舉個比較出名的例子,就是【啤酒與尿布】的案例,大概意思是年輕的父親去超市買尿布,父親在購買尿布的同時,往往會順便為自己購買啤酒,所以超市嘗試將啤酒與尿布擺放在相同區域,結果提升商品銷售收入;推薦算法也會挖掘出來事物之間隱藏的關係。

互聯網公司中,推薦系統都是怎麼開發的?

我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。

互聯網公司中,推薦系統都是怎麼開發的?

相關推薦

推薦中...