1. 程式人生 > >基於使用者的推薦演算法和基於商品的推薦演算法

基於使用者的推薦演算法和基於商品的推薦演算法

基於使用者的協同過濾

    如圖1所示,在推薦系統中,用m×n的打分矩陣表示使用者對物品的喜好情況,一般用打分來表示使用者對商品的喜好程度,分數越高表示該使用者對這個商品越感興趣,而數值為空表示不瞭解或是沒有買過這個商品。

 

圖1 用於個性化推薦系統的打分矩陣

    如圖2所示,基於使用者的協同過濾推薦演算法是指找到與待推薦商品的使用者u興趣愛好最為相似的K個使用者,根據他們的興趣愛好將他們喜歡的商品視為使用者u可能會感興趣的商品對使用者u進行推薦。

 

圖2 基於使用者的協同過濾演算法

    從以上介紹可以看出,基於使用者的協同過濾推薦演算法主要分為兩步,第一步是求出使用者之間的相似度,第二步是根據使用者之間的相似度找出與待推薦的使用者最為相似的幾個使用者並根據他們的興趣愛好向待推薦使用者推薦其可能會感興趣的商品。

    使用者之間的相似度的計算主要可以通過Jaccard公式和餘弦相似度公式得到。

    Jaccard公式如下:


    餘弦相似度公式為:


    其中,N(u)為使用者u感興趣的商品,N(v)為使用者v感興趣的商品。

    而計算使用者u對商品i的感興趣程度打分公式如下:


    S(u,K)包含了和使用者u興趣最接近的K個使用者,N(i)表示對商品i有過打分行為的使用者集合,Wuv表示計算出的使用者u和使用者v的興趣相似度,rvi表示使用者v對商品i打的分數。

    得到了使用者u對所有未打分商品的感興趣程度分數後,將分數最高的幾個商品最為使用者u最有可能感興趣的商品推薦給使用者u。

基於商品的協同過濾

    基於使用者的協同過濾基本思想非常簡單,就是找到志同道合的朋友,並把朋友感興趣的而使用者沒有接觸過的商品推薦給使用者。

    但是這有一個問題,由於新使用者的註冊量非常高,基於使用者的協同過濾推薦需要計算新使用者和之前的使用者之間的相似度,這會將資料稀疏,延展性差等問題暴露的非常明顯。

    所以基於商品的協同過濾方法被提出,相較於使用者之間的相似度,商品之間的相似度相對是靜態的,當新使用者註冊並有了一些自己感興趣的商品資訊時,無需再進行計算,直接根據之前儲存的商品之間的相似度,將使用者可能感興趣的商品推薦給使用者。

    

圖3 基於商品的協同過濾

  可以看出基於商品的協同過濾推薦演算法也是分為兩步,第一步是根據資料庫中已有的資訊求出商品的相似度,第二步是利用求出的商品之間的相似度計算使用者對某種商品可能的興趣程度。

     商品之間的相似度可以利用皮爾遜相似度,餘弦相似度或是改進的餘弦相似度來進行計算。

     皮爾遜相似度:


     U表示所有使用者的集合,Ru,i表示使用者u對商品i的打分,Ru,j表示使用者u對商品j的打分,RiRj分別表示使用者對商品i和商品j的評分的平均值。

     餘弦相似度計算商品i和商品j的相似度的公式為:

 

    i其中表示在打分矩陣中所有使用者對商品i的打分(若沒有打分則預設置為0)構成的向量,j表示打分矩陣中所有使用者對商品j打分構成的向量。分子是兩個向量的內積。

    由於餘弦相似度並沒有考慮到使用者打分尺度的問題,比如有人喜歡給高分而有人喜歡給低分,由於這種打分習慣的不同,有可能計算出來的相似度和實際差距很大,所以為了解決這個問題,提出了修正的餘弦相似度計算。具體公式如下:

    其中Ru,iRu,j表示使用者u對商品i和j的打分,Ru表示使用者u對所有商品打分的平均值。 

    用於預測的打分函式公式則可以如下定義:

    其中,Si,N為物品i和物品N之間的相似度,Ru,N為使用者u對物品N的打分。這個公式的意義相當於是對使用者u對商品i的可能得分取了一個加權平均。

參考文獻:

1.Item-Based Collaborative Filtering Recommendation Algorithms

2.趙晨婷,馬春娥.探索推薦引擎內部的祕密2部分: 深入推薦引擎相關演算法協同過濾[EB/OL].(2012-02-13)[2017-06-12].http://topgeek.org/blog/2012/02/13/探索推薦引擎內部的祕密,第 2 部分: 深入推薦引擎/