版權聲明:本文爲博主原創文章,轉載註明出處 https://blog.csdn.net/u013142781/article/details/51119242算法
結合目前已存在的商品推薦設計(如淘寶、京東等),推薦系統主要包含系統推薦和個性化推薦兩個模塊。網絡
系統推薦: 根據大衆行爲的推薦引擎,對每一個用戶都給出一樣的推薦,這些推薦能夠是靜態的由系統管理員人工設定的,或者基於系統全部用戶的反饋統計計算出的當下比較流行的物品。框架
個性化推薦:對不一樣的用戶,根據他們的口味和喜愛給出更加精確的推薦,這時,系統須要瞭解需推薦內容和用戶的特質,或者基於社會化網絡,經過找到與當前用戶相同喜愛的用戶,實現推薦。機器學習
下面具體介紹系統推薦和個性化推薦的設計方案。分佈式
2.一、系統推薦目的工具
針對全部用戶推薦,當前比較流行的商品(必選) 或 促銷實惠商品(可選) 或 新上市商品(可選),以促進商品的銷售量。
PS:根據咱們的應用狀況考慮是否 選擇推薦 促銷實惠商品 和 新上市商品。(TODO1)oop
2.二、實現方式性能
實現方式包含:系統自動化推薦 和 人工設置推薦。學習
(1)系統自動化推薦考慮因素有:商品發佈時間、商品分類、庫存餘量、歷史被購買數量、歷史被加入購物車數量、歷史被瀏覽數量、降價幅度等。根據咱們當前可用數據,再進一步肯定(TODO2).net
(2)人工設置:提供運營頁面供運營人員設置,設置包含排行位置、開始時間和結束時間、推薦介紹等等。
因爲系統推薦實現相對簡單,所以不做過多的文字說明,下面詳細介紹個性化推薦的設計。
3.一、個性化推薦目的
對不一樣的用戶,根據他們的口味和喜愛給出更加精確的推薦,系統須要瞭解需推薦內容和用戶的特質,或者基於社會化網絡,經過找到與當前用戶相同喜愛的用戶,實現推薦,以促進商品的銷售量。
3.二、三種推薦模式的介紹
據推薦引擎的數據源有三種模式:基於人口統計學的推薦、基於內容的推薦、基於協同過濾的推薦。
(1)基於人口統計學的推薦:針對用戶的「性別、年齡範圍、收入狀況、學歷、專業、職業」進行推薦。
(2)基於內容的推薦:以下圖,這裏沒有考慮人對物品的態度,僅僅是由於電影A月電影C類似,所以將電影C推薦給用戶A。這是與後面講到的協同過濾推薦最大的不一樣。
(3)基於協同過濾的推薦:以下圖,這裏咱們並不知道物品A和物品D是否類似,僅僅考慮人對物品的喜愛進行推薦。
模式採用:這三種模式能夠單獨使用,也可結合使用。結合咱們實際狀況,採用基於協同過濾的推薦更加合適,看後期狀況是否結合另外兩種模式實現推薦。但基於協同過濾的推薦這種模式,會引起「冷啓動」問題。關於,冷啓動問題,後續會討論解決方案。
3.四、Mahout介紹
目前選擇採用協同過濾框架Mahout進行實現。
Mahout 是一個很強大的數據挖掘工具,是一個分佈式機器學習算法的集合,包括:被稱爲Taste的分佈式協同過濾的實現、分類、聚類等。Mahout最大的優勢就是基於hadoop實現,把不少之前運行於單機上的算法,轉化爲了MapReduce模式,這樣大大提高了算法可處理的數據量和處理性能。
Mahout 是一個布式機器學習算法的集合,可是這裏咱們只使用到它的推薦/協同過濾算法。
3.五、Mahout實現協同過濾實例
協同過濾在mahout裏是由一個叫taste的引擎提供的, 它提供兩種模式,一種是以jar包形式嵌入到程序裏在進程內運行,另一種是MapReduce Job形式在hadoop上運行。這兩種方式使用的算法是同樣的,配置也相似。
這裏咱們採用第一種引入jar包的單機模式。
3.5.一、依賴