猜你喜歡
今天在做項目中,發現了一個特別有意思的模塊,叫做猜你喜歡,
先給大家介紹一下商城里的推薦和猜你喜歡是怎么實現的,首先你要知道,給你推薦的商品,肯定不是隨便給你推的,那些都是經過算法,然后顯示到你的推薦區域
為什么需要推薦系統?
因為信息過載,人們從主動獲取信息變成了被動獲取信息,每天早晨打開手機……. ,很多時候有效的獲取數據顯得極其重要,所有針對性的需求也就自然的出現了,推薦系統應用而生.
最早的推薦系統因該是亞馬遜為了銷售商品而產生的,亞馬遜上在線銷售的商品數量龐大,但是在首頁展示的商品寥寥無幾.
在亞馬遜的商品展示頁面,經常會看到:瀏覽此00用戶同時也瀏覽***商品. , 這就是非常簡單的一種推薦.
冷啟動問題:
推薦系統必須要有龐大的數據作為支撐,但是我們的產品再啟動的時候,沒有大量的用戶數據,這時候就會遇到冷啟動問題,
解決冷啟動問題:
既然前期沒有用戶數據,那我們就可以利用商品本身的數據來推薦,比如同價格商品,同品牌商品,
基於內容的推薦:
1,給商品打上標簽: 食品,運動,衣服,等等越詳細越好,越詳細就越精確.
但根據這些商品推薦還會出問題,今天晚上小明在我們的產品中搜索法拉利汽車的模型,明天早晨我們的系統通過法拉利這個關鍵字,給小明推薦了一款500萬的法拉利.
當然,使用商品推薦只是前期的沒有用戶數據是使用,而到了后期,用戶越來越多,我們就要開始使用用戶行為數據.
用戶行為數據到底記錄了什么?
小明打開亞馬遜瀏覽器,點擊了幾個熱銷西裝,然后再搜索欄搜索了nike鞋,在看了10幾雙鞋后,買了一雙安踏的鞋.
這就是用戶行為數據.當這個數據越多的時候,我們能夠做到事情也就越大.
加權算法:
User-time 用戶偏好矩陣: 這其中用戶發生了查看,購買,分享商品的行為。這些行為是多樣的,所以需要加權算法來計算出用戶對某一商品的偏好程度,然后形成user-item用戶偏好矩陣。
用戶行為中會產生噪音和用戶誤操作.我們拿到了數據之后,應該先去洗數據,其中最重要的那就是降噪與歸一化.
減噪:。比如因為網絡中斷,用戶在短時間內產生了大量點擊的操作。通過一些策略以及數據挖掘算法,來去除數據中的噪音。
歸一化:清理數據的目的是為了通過對不同行為進行加權,形成合理的用戶偏好矩陣。最簡單的歸一算法就是將各類數據來除以此類數據中的最大值,以此來保證所有數據的取值范圍都在[0,1]區間內。
降維算法——SVD奇異值分解
通過用戶行為數據越來越多,這個時候數據越來越稀疏,有效的數據越來越少,這個時候,SVD算法就誕生了,據我所知,淘寶用的推薦就是這種
做了折磨多鋪墊,就是為了講清楚協同算法.協同算法俗稱SF , 如今廣泛的用於如今的推薦系統中,通過協同算法,
為什么叫做協同過濾?因為這兩個矩陣都是通過對方算出來的.
協同過濾算法(collaborative filtering)的目標是基於用戶對物品的歷史評價信息,向目標用戶(active user)推薦其未購買的物品。協同過濾算法可分為基於物品的,基於用戶的和基於矩陣分解,本文實現基於物品和基於矩陣分解的協同過濾算法。
協同過濾算法總覽
輸入數據:典型的協同過濾問題輸入數據為m個用戶list,n個物品list,同時每個用戶有一個已評價的物品list。
推薦過程:
1. 計算similarity(用戶間或物品間相似度):通常采用pearson相關系數或余弦相似度。
2. 計算prediction(目標用戶未購買物品對目標用戶的吸引力):目標用戶對未購買商品的預測評分。
3. 計算recommendation:向目標用戶推薦前K個吸引力最大的物品。
基於用戶的協同過濾算法
基於用戶的協同過濾算法旨在尋找相似的用戶,然后在相似的用戶間推薦物品。
1. similarity:計算用戶間的相似度。上文說到每個用戶都有一個已評價的物品list,那么該list就是用戶的一個屬性向量,用戶的相似度就是該向量間的相似度。
2. prediction:假設用戶A和B、C是相似用戶。假設Item1, Item2, Item3三個物品是B、C購買過但A未購買過的物品。那么我們就可以向A推薦 這些物品。如何計算這三個物品對用戶A的吸引力呢?以B、C和A的相似度為權重,計算B、C對物品的評分均值即可。
基於用戶的協同過濾算法實際上面臨很大的問題,例如稀疏性問題,畢竟一個用戶購買的物品是非常少的。
關於代碼特別復雜,放到這里也不好理解 .大家可以去晚上搜一下 :: 協同過濾的代碼,再細細理解.