推荐算法-协同过滤
1.什么是推薦算法?
? ? 分析大量數據,最后計算出各種關聯性從而進行預測,比如Amazon的商品推薦,今日頭條的信息流媒體推薦,甚至是你看個視頻右側的相似推薦等等。這些都需要涉及到推薦算法,隨著近幾年數據的存儲、計算、獲取成本不斷降低,企業或者是平臺所擁有的的數據量也在飛速增加,這么大的數據量需要更好的使用才能發揮出他的價值,這種價值也會成為產品能力甚至是競爭壁壘。而大數據的使用過程中,一個重要的方向就是預測,預測里面一個重要的應用就是推薦。推薦算法會伴隨著大數據和AI的發展越來越重要。
2.推薦算法的條件
? ? 1.根據和你共同喜好的人來給你推薦。
? ? 2.根據你喜歡的物品找出和它相似的來給你推薦。
? ? 3.根據給出的關鍵字來給你推薦,這實際上就退化成了搜索算法。
? ? 4.上面的組合來給你推薦。
3.推薦算法分類(大致可以分三類)
? ? 1.基于內容的推薦算法
? ? ? ? 就是根據用戶平時自己的行為,比如關注的內容、搜索的內容、收藏的內容等等,根據這些內容去數據集合里面查找相似東西,比如你看了變形金剛Ⅰ,基于內容的推薦算法可以發現變形金剛Ⅱ并且推薦給你。根據的是內容的關聯性。優勢是可以解決冷啟動問題(假如變形金剛Ⅱ沒被人關注過,系統自動把Ⅰ和Ⅱ關聯上,用戶依然可以看到Ⅱ的推薦)。缺點是推薦的內容可能會重復,你看了地震的新聞,后期推薦的全是災難相關的東西,甚至是有很多地震的;另一個弊端就是一些多媒體(比如音樂、電影、圖片等)由于很難提取內容特征,則很難進行推薦,一種解決方式則是人工給這些內容打標簽(人工標注的成本比較高)。
? ? 2.協同過濾算法
? ? ? ? 原理是先把個體大體分為兩個集合,一個是用戶,一個是物品。對于關系的話,每
個用戶都會和一些物品產生關聯,這樣就把兩個點連上了一條邊(當然根據實際情況我? 們可以設計權重,通常也應該設計權重)。最后建立一個包含兩個集合的圖。這個圖里 面同一個集合中的兩個點雖然沒有兩邊,但是可以通過另一個集合的一些點來聯通過 來。再根據邊的權值來算關聯度,當然這個地方常見的協同過濾都是使用相關算法,比 如說是把個點映射到多維空間上,然后計算歐幾里得距離,或者是計算皮爾遜相關系數 等,這個下面再細說。簡單來說就是通過中間聯通集合來計算兩個沒有直接連接的兩個 點的相關性,同時以不同的集合為參照點的到的結果也是不一樣的,這就涉及到了協同 過濾的兩個不同方式user-based 和item-based。也是下面細說。
? ? 3.基于知識的推薦算法
? ? ? ? ?有點類似與基于內容,當然也可以分到里面去。基于知識的推薦算法就是制定一些 規則規定,然后根據這些我們把一些新的東西自動就關聯上了,也就是利用先驗知識建? 建立一個先驗模型,在冷啟動或者是數據比較疏松的時候都是比較好的方式。OK下面 整理協同過濾。
?
|-----------------------------------------------------------------------
1.什么是協同過濾(百度百科)Collaborative?Filtering
? ? 協同過濾簡單來說是利用某興趣相投、擁有共同經驗之群體的喜好來推薦用戶感興趣的信息,個人通過合作的機制給予信息相當程度的回應(如評分)并記錄下來以達到過濾的目的進而幫助別人篩選信息,回應不一定局限于特別感興趣的,特別不感興趣信息的紀錄也相當重要。
算法分類和細節、可以分為兩類,一類是基于用戶的User-based另一類是基于項目的Item-based。
? ? 1.基于用戶的User-based協同過濾算法:
? ? ? ? 基于用戶的協同過濾算法是通過用戶的歷史行為數據發現用戶對商品或內容的喜好進行度量打分。根據不同用戶對相同商品或內容的態度和偏好程度計算用戶之間的關系。在有相同喜好的用戶間進行商品推薦。例如如果A、B兩個用戶都購買了X、Y、Z三本書,并且給了好評,那么A和B就屬于同一類用戶。可以將A看過的圖書W也推薦給用戶B。
? ? 1.1?尋找偏好的相似用戶
? ? ? ? 模擬5個用戶對兩件商品的評分,來說明如何通過用戶對不同商品的態度和偏好尋找相似的用戶,5個用戶分別對兩件商品進行評分。這里的分值可能表示真實購買,也可能表示用戶對商品不同行為的量化指標。例如瀏覽次數、推薦、搜索、收藏、分享、評論等等。這些行為都可以表示用戶對商品的態度和偏好程度。
??
? ? 根據商品是2,建立一個二維的坐標系
? ? 然后看上面的圖,就很容易發現A?C?D是一類,E?B?是一類。實際過程中怎么通過數值來表示兩點之間的相似程度?方法也很多,最基本的能想到的就是直接求歐幾里得距離。這 個方法雖然簡單,但是在機器學習算法中(比如圖像特征提取)或其他很多復雜問題中 經常會用到。?
二維的歐幾里得距離公式:
算完之后得到的數值越小的兩個點之間關聯性約到,通常可以取到數這樣方便觀察出來關聯程度。上面數據算完是這樣:
還有就是用皮爾遜相關系數來表示關聯程度,(百度百科)
再或者是求向量的內積外積,方法很多。
? ? 1.2為相似的用戶提供推薦物品
? ? ? ? 當我們需要對用戶C推薦商品時,首先我們檢查之前的相似度列表,發現用戶C和用戶E的相似度較高。換句話說這三個用戶是一個群體,擁有相同的偏好。因此,我們可以對用戶C推薦D和E商品。但這里有一個問題。我們不能直接推薦前面商品1和5的商品。因為這些商品用戶C已經瀏覽或者購買過了。不能重復推薦。因此我們要推薦用戶C還沒有接觸過的商品。
? ? ? ? 提取了用戶D和用戶E評價過的另外5件商品A-F。并對不同商品的評分進行相似度加權。按加權后的結果對5件商品進行排序,然后推薦給用戶C。這樣,用戶C就獲得了與他偏好相似的用戶D和E評價的商品。而在具體的推薦順序和展示上我們依照D和用戶E與用戶C的相似度進行排序。
? ? ? ? 以上是基于用戶的協同過濾算法,這個算法依靠用戶的歷史行為數據來計算相關度。也就是說必須要有一定的數據積累(冷啟動問題)。對于新網站或者數據量較小的網站,還有一種方法基于物品的協同過濾算法。
????
2.基于物品的協同過濾算法Item-based
????基于物品的協同歐過濾算法與基于用戶的協同過濾算法很想,將商品和用戶角色互???? 換。通過計算不同用戶對不同物品的評分獲得物品的關系。基于物品間的關系對用戶進
? ? 相似物品推薦。這里的評分代表用戶對商品的態度和偏好。簡單來說如果用戶A同時 購買了商品1和商品2,那么說明商品1和商品2的相關度較高。當用戶B也購買了商
1時,可以推薦他商品2。
? ? 實現過程和上面的user-based幾乎一樣,只是互換角色,細節就不說了。但是一定要注意這兩者的區別,數據松散、數據量小、冷啟動等問題上。Item比user好很多。建議在紙上畫圖理解。
?
優缺點
與傳統文本過濾相比,協同過濾的優點是:
缺點:
所以說現實中,都是用很多種方法混合這來進行推薦。
總結
- 上一篇: 设计模式复习-模板方法模式
- 下一篇: 推荐算法-矩阵分解