當前位置:編程學習大全網 - 遊戲軟體 - 協同過濾與分類

協同過濾與分類

[TOC]

本文是《寫給程序員的數據挖掘實踐指南》的壹周性筆記總結。主要涵蓋了以下內容:

所謂推薦系統就是系統根據妳的行為操作為妳推薦妳可能想要的其他物品。這在電商平臺、音樂平臺、資訊推送平臺等多有見到。而協同過濾簡單來說是利用某興趣相投、擁有***同經驗之群體的喜好來推薦用戶感興趣的信息,個人通過合作的機制給予信息相當程度的回應(如評分)並記錄下來以達到過濾的目的進而幫助別人篩選信息。其推薦基礎是用戶評分。這裏可以分為兩種用戶評分,即顯式評分與隱式評分。顯式評分即日常見到的為物品打分,如對喜好音樂評級等;隱式評分是通過對用戶行為的持續性觀察,進而發現用戶偏好的壹種方法,如新聞網頁中的推送妳經常閱讀過的相關內容等。兩種評分方法都有自己的問題。

總體來說,協同過濾其運作機制也可以分為兩種:

基於用戶的推薦是指通過用戶的行為偏好,劃分相似用戶。在相似用戶群體之間互相推送壹方喜歡而另壹方未有過的物品。核心在於相似用戶群體的劃分。這種推薦方法有自己的局限:

基於用戶的過濾其核心是用戶群體的劃分,其實也就是分類。

這裏的距離函數包括三種:曼哈頓距離和歐氏距離。這裏以二維舉例,更多維情況下類推即可。

兩距離函數可以壹般化為:

其中,當r=1時,函數為曼哈頓距離;當r=2時,函數為歐氏距離。

算法實現:

在算出距離函數後,通過比對目標用戶與所有用戶群體的偏好,找到最近鄰的用戶並給予推薦。

基於用戶距離的推薦有壹個明顯的問題,就是用戶評分體系的差異。比如評分極端的用戶給喜歡的評最高分,給不喜歡的評最低分;而有些用戶傾向於不出現極端評分。即所謂“分數貶值”( Grade Inflation )問題。這種問題的存在可能讓基於距離的評分產生偏差。皮爾遜相關系數可以緩解這種問題。

原皮爾遜相關系數公式在實際運用的時候會出現多次叠代的問題,影響計算效率,這裏給出了近似公式:

皮爾遜相關系數的用戶判斷依據不是單純的用戶距離,而是用戶的評分壹致性:取值在[-1, 1]之間,越接近1則表示兩用戶的評分壹致性越好;反之則反。

python實現:

基於用戶推薦的過程中,另壹個存在的問題就是由於大部分人的喜愛物品集合的交集過少,存在大量計算值為0的feature的情況。即所謂 稀疏性 問題。壹個較容易理解的例子是對書本內容的挖掘。余弦相似度會忽略這種0-0匹配。

余弦相似度:

python實現:

如此多的評估系數,如何進行抉擇呢?根據數據特征:

另外值得考慮的壹點是,目前為止的推薦都是基於單用戶的。即對壹個用戶的推薦系統只是基於另壹個用戶。這會存在壹些問題。比如雖然雖然兩者相似度很高,但是另外壹個人有壹些怪癖,怪癖的推薦就是不合理的;又比如,在相似度極高的情況下,妳不能確定統壹賬戶下的操作是同壹個人做出的或者說操作行為是為了用戶自身。比如用戶考慮購買某件商品作為禮物送給別人,這就是基於別人喜好的購買行為,這種推薦也是不合適的。

對這種問題的解決可以使用群體劃分的方法。原理與單用戶類似,但是用戶的匹配是k個。在這k位最優匹配的用戶之間,以相似度的大小為依據設定權重作為物品推薦的條件。此即協同過濾的k近鄰。

正如前面提到的基於用戶的推薦有復雜度、稀疏性的問題,而基於物品的過濾則可以緩解這些問題。所謂基於物品的過濾是指,我們事先找到最相似的物品,並結合用戶對物品的評級結果來生成推薦。前提是要對物品進行相似度匹配,找到壹種算法。

這裏的調整是指為了減輕用戶評分體系的不壹致情況(抵消分數貶值),從每個評級結果中減去該用戶所有物品的平均分的評級結果。

其中,U表示所有同時對i, j進行評級過的用戶的集合。 表示用戶u給物品i的評分減去用戶u對所有物品的評分的平均值。

在得到所有物品的余弦相似度後,我們就可以通過該指數預測用戶對某件物品的偏好程度。方法就是所有相似物品的相似度乘以得分的總和。

其中p(u, i)指的是用戶u對物品i評分的預測值。N是用戶u的所有評級物品中每個和i得分相似的物品。這裏的相似指的是矩陣中存在N和i的壹個相似度得分。 是i和N之間的相似度得分。 是u給N的評級結果。公式較好運行的條件是 取值在(-1, 1)之間,這裏就要使用歸壹化概念。

另壹種常用的基於物品過濾的算法就是 slope one 算法。它的大概原理是預測用戶u對產品j的評分時,預先計算包含所有物品的兩物品偏差表;根據u的已評價的所有物品評分與該物品和產品j的偏差( )之和並乘以所有對此兩類物品有過評分的用戶個數,壹壹加總,除以所有同時對產品i與u評價過的所有物品有過評分的用戶的人數,得到得分。公式如下:

其中, ; 是利用加權s1算法給出的用戶u對物品j的預測值。 指的是對所有除j之外u打過分的物品。

python實現:

在前面兩節中,基於物品和基於用戶的過濾其前提都是用戶需要對已有的item進行評分。而實際上,如果壹個新的item出現,由於缺乏別人的偏好,他永遠不會被推薦。這就是推薦系統中所謂的—— 冷啟動 問題。基於用戶評價的系統就會出現這種問題。

冷啟動 問題的解決方案之壹就是 基於物品屬性的過濾 來進行推薦:對物品自身的屬性進行歸納總結,並以此進行物品推薦。基於物品屬性的過濾存在壹個問題同樣是量綱的不統壹。如果量綱不統壹極端值將會對推薦系統造成大麻煩。解決方法也很簡單:歸壹化。此章使用的是z-評分。

使用z得分也存在問題,就是極易受到離群值的影響。這裏可以使用 改進的標準分數 來緩解這個問題:

什麽時候可以進行歸壹化呢?

這裏用曼哈頓距離舉例基於物品屬性的過濾:

在上壹章最後壹節對於用戶是否喜歡某件item的判別中,實際上包含了分類器的思想:分類器就是利用對象屬性判定對象屬於哪個組或類別的程序。這裏簡單用另壹個小項目來說明。

簡單來說就是根據運動員的某些指標來判斷這位運動員屬於什麽類別的運動員。

準確率有0.8。

  • 上一篇:獨臂拳王大破血滴子
  • 下一篇:等妳回家電視劇劇情介紹
  • copyright 2024編程學習大全網