机器学习算法--协同过滤算法
0. 關鍵詞
- 推薦算法
- 長尾理論
- UserCF
- ItemCF
1. 推薦算法
????互聯網的飛速發展使我們進入了信息過載的時代,搜索引擎可以幫助我們查找內容,但只能解決明確的需求。為了讓用戶從海量信息中高效地獲得自己所需的信息,推薦系統應運而生。
????推薦系統可以通過分析用戶的歷史記錄來了解用戶的喜好,從而主動為用戶推薦其感興趣的信息,滿足用戶的個性化推薦需求。推薦系統是自動聯系用戶和物品的一種工具,和搜索引擎相比,推薦系統通過研究用戶的興趣偏好,進行個性化計算。推薦系統可發現用戶的興趣點,幫助用戶從海量信息中去發掘自己潛在的需求。
2. 長尾理論
????推薦系統可以創造全新的商業和經濟模式,幫助實現長尾商品的銷售。“長尾” 用來描述以亞馬遜為代表的電子商務網站的商業和經濟模式,電子商務網站銷售種類繁多,雖然絕大多數商品都不熱門,但這些不熱門的商品總數量極其龐大,所累計的總銷售額將是一個可觀的數字。
????熱門推薦是常用的推薦方式,廣泛應用于各類網站中,如熱門排行榜。但熱門推薦的主要缺陷在于推薦的范圍有限,所推薦的內容在一定時期內也相對固定。無法實現長尾商品的推薦。因此,可以通過發掘長尾商品并推薦給感興趣的用戶來提高銷售額。這需要通過個性化推薦來實現。
3. 協同過濾
協同過濾是應用最早和最為成功的推薦方法之一,利用與目標用戶相似的用戶已有的商品評價信息,來預測目標用戶對特定商品的喜好程度
分為
基于用戶的協同過濾(UserCF)
基于物品的協同過濾(ItemCF)
4. 基于用戶的協同過濾
????UserCF算法符合人們對于“趣味相投”的認知,即興趣相似的用戶往往有相同的物品喜好:當目標用戶需要個性化推薦時,可以先找到和目標用戶有相似興趣的用戶群體,然后將這個用戶群體喜歡的、而目標用戶沒有聽說過的物品推薦給目標用戶。
UserCF算法的實現主要包括兩個步驟:
第一步:找到和目標用戶興趣相似的用戶集合;
第二步:找到該集合中的用戶所喜歡的、且目標用戶沒有聽說過的物品推薦給目標用戶
下面,我們來討論一下,這需要如何進行實現?
根據算法的大綱來看,肯定是需要找到相似用戶,如何判斷用戶之間的相似程度呢?
相似度算法判斷用戶相似度
目前較多使用的相似度算法有:泊松相關系數、余弦相似度、調整余弦相似度。
余弦相似度,N(u)N(u)N(u)表示用戶 u 感興趣的物品集合,N(v)N(v)N(v)表示用戶 v 感興趣的物品的集合,那么用戶 u, v的相似度權重 ωuv\omega_{uv}ωuv? 為
????給出了算法,我們如何快速求出公式中的參數呢?(不難得知,這里最難計算的是分子,也就是區間的交,這是優化重點)
????倘若服務器需要存儲 所有用戶之間的相似度的話,對時間的復雜度要求是極高的!倘若我們 先對 u 遍歷,再對 v 遍歷,然后再遍歷 u 感興趣的商品,是否在 v 感興趣的商品中,那這基本就是爆炸了,所以說,正解的優化算法是:
????首先,倘若用戶 a 需要商品 X,那么就將它放在商品 X 的集合里面,經過對所有用戶預處理之后,每個商品都對應一個集合,集合內部兩兩成對即可。
如下圖所示:(物品到用戶的倒排表)
量化用戶對物品的興趣程度
從上面的分析中,可知用戶直接的相似度ωu,v\omega_{u,v}ωu,v?,下面,我們進一步計算出用戶對物品的興趣程度:
p(u,i)p(u,i)p(u,i)表示用戶 u(user) 對物品 i (item)的興趣程度,S(u,k)S(u,k)S(u,k)是和用戶 u 興趣最為接近的用戶的集合(對ωu,x\omega_{u,x}ωu,x?排序,取前 k 個 x)
????其中,S(u, K)是和用戶u興趣最接近的?K?個用戶的集合,N(i)是喜歡物品?iii?的用戶集合(含義變了),ωuv\omega_{uv}ωuv?是用戶u和用戶v的相似度,rvir_{vi}rvi?是隱反饋信息,代表用戶vvv對物品i的感興趣程度,為簡化計算可令rvir_{vi}rvi?=1(為了追求更高準確率是不應該都為一個數值的,比如說看客戶對商品的評價等等)。
????對所有物品計算p(u,i)后,可以對p(u,i)進行降序處理,取前N個物品作為推薦結果展示給用戶u(稱為Top-N推薦)。
具體的步驟
1.收集用戶信息
????收集可以代表用戶興趣的信息。一般的網站系統使用評分的方式或是給予評價,這種方式被稱為“主動評分”。另外一種是“被動評分”,是根據用戶的行為模式由系統代替用戶完成評價,不需要用戶直接打分或輸入評價數據。電子商務網站在被動評分的數據獲取上有其優勢,用戶購買的商品記錄是相當有用的數據。
2.最近鄰搜索(Nearest neighbor search, NNS)
????以用戶為基礎(User-based)的協同過濾的出發點是與用戶興趣愛好相同的另一組用戶,就是計算兩個用戶的相似度。例如:查找n個和A有相似興趣用戶,把他們對M的評分作為A對M的評分預測。一般會根據數據的不同選擇不同的算法,較多使用的相似度算法有Pearson Correlation Coefficient、Cosine-based Similarity、Adjusted Cosine Similarity。
3.產生推薦結果
????有了最近鄰集合,就可以對目標用戶的興趣進行預測,產生推薦結果。依據推薦目的的不同進行不同形式的推薦,較常見的推薦結果有Top-N 推薦和關系推薦。Top-N 推薦是針對個體用戶產生,對每個人產生不一樣的結果,例如:通過對A用戶的最近鄰用戶進行統計,選擇出現頻率高且在A用戶的評分項目中不存在的,作為推薦結果。關系推薦是對最近鄰用戶的記錄進行關系規則(association rules)挖掘。
UserCF小結
- userCF首先是根據相似度算法,求出每個用戶之間的相識度衡量標準(ωu,v\omega_{u,v}ωu,v?),得出的結果回用于求 與用戶 u 相似的 前 k 個人
- 得到 ωu,v\omega_{u,v}ωu,v? 數組之后,我們需要進一步計算 用戶 u 對于 物品 i (item) 的興趣程度pu,ip_{u,i}pu,i?,這個是通過 與用戶 u 相似的前 k 個用戶 v(基于用戶) ωu,v?rv,i\omega_{u,v}*r_{v, i}ωu,v??rv,i?求和得到。
- 然后對pu,ip_{u,i}pu,i?進行排序,得到個性化推薦的商品。
5. 基于物品的協同過濾
????基于物品的協同過濾算法(簡稱ItemCF算法)是目前業界應用最多的算法。ItemCF算法是給目標用戶推薦那些和他們之前喜歡的物品相似的物品。ItemCF算法主要通過分析用戶的行為記錄來計算物品之間的相似度。該算法基于的假設是:物品A和物品B具有很大的相似度是因為喜歡物品A的用戶大多也喜歡物品B。例如,該算法會因為你購買過《數據挖掘導論》而給你推薦《機器學習實戰》
ItemCF算法與UserCF算法類似,計算也分為兩步:
第一步:計算物品之間的相似度;
第二步:根據物品的相似度和用戶的歷史行為,給用戶生成推薦列表。
下面,我們來討論一下,這需要如何進行實現?
判斷物品之間的相似度
ItemCF算法通過建立用戶到物品倒排表(每個用戶喜歡的物品的列表)來計算物品相似度
用戶對物品的興趣程度
ItemCF計算的是物品相似度,再使用如下公式來度量用戶u
對物品j的興趣程度Puj(與UserCF類似)
說人話就是,用戶 u 對一個物品 j 個喜愛與否,通過判斷 和 j 相似的 前 k 個物品,用戶喜歡的程度,進行 加權求和(物品之間多相似和用戶對物品有多喜愛)
具體的算法步驟
1.收集用戶信息
?????同以用戶為基礎(User-based)的協同過濾。
2.針對項目的最近鄰搜索
????先計算已評價項目和待預測項目的相似度,并以相似度作為權重,加權各已評價項目的分數,得到待預測項目的預測值。例如:要對項目 A 和項目 B 進行相似性計算,要先找出同時對 A 和 B 打過分的組合,對這些組合進行相似度計算,常用的算法同以用戶為基礎(User-based)的協同過濾。
3.產生推薦結果
????以項目為基礎的協同過濾不用考慮用戶間的差別,所以精度比較差。但是卻不需要用戶的歷史數據,或是進行用戶識別。對于項目來講,它們之間的相似性要穩定很多,因此可以離線完成工作量最大的相似性計算步驟,從而降低了在線計算量,提高推薦效率,尤其是在用戶多于項目的情形下尤為顯著。
6. UserCF和ItemCF算法的對比
UserCF算法和ItemCF算法的思想、計算過程都相似兩者最主要的區別:
- UserCF算法推薦的是那些和目標用戶有共同興趣愛好的其他用戶所喜歡的物品
ItemCF算法推薦的是那些和目標用戶之前喜歡的物品類似的其他物品 - UserCF算法更偏向社會化,適合應用于新聞推薦、微博話題推薦等應用場景,其推薦結果在新穎性方面有一定的優勢。
ItemCF算法更偏向于個性化。適合應用于電子商務、電影、圖書等應用場景
從上圖可以看出,是解決這個問題的兩種寫法
7. 隱式反饋和顯示反饋
參考大佬的博客
隱性反饋行為:不能明確反映用戶喜好的行為。
顯性反饋行為:用戶明確表示對物品喜好的行為。
????顯性反饋行為包括用戶明確表示對物品喜好的行為,隱性反饋行為指的是那些不能明確反應用戶喜好的行為。在許多的現實生活中的很多場景中,我們常常只能接觸到隱性的反饋,例如頁面游覽,點擊,購買,喜歡,分享等等。
????基于矩陣分解的協同過濾的標準方法,一般將用戶商品矩陣中的元素作為用戶對商品的顯性偏好。在 MLlib 中所用到的處理這種數據的方法來源于文獻: Collaborative Filtering for Implicit Feedback Datasets 。 本質上,這個方法將數據作為二元偏好值和偏好強度的一個結合,而不是對評分矩陣直接進行建模。因此,評價就不是與用戶對商品的顯性評分,而是與所觀察到的用戶偏好強度關聯起來。然后,這個模型將嘗試找到隱語義因子來預估一個用戶對一個商品的偏好。
參考文獻
總結
以上是生活随笔為你收集整理的机器学习算法--协同过滤算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何扩大缓存区_艾莱依首个自动化仓落地,
- 下一篇: python 动漫卡通人物图片大全_用P