協同過濾是通過將使用者和其他使用者和的資料進行對比來實現推薦。
我們不利用專家所給出的重要屬性來描述物品從而計算他們之間的相似度,而是利用使用者對他們的意見來計算相似度,這就是協同過濾中所使用的方法。它不關心物品的描述屬性,而是嚴格的按照許多使用者的觀點來計算相似度。
相似度的度量一種是歐式距離,一種是皮爾遜相關係數,另一種距離計算方法就是余弦相似度。
皮爾遜相關係數的取值範圍是從-1到+1,我們通過0.5+0.5*corrcoef()這個函式計算,並且把取值範圍歸一化到0和1之間
余弦相似度是計算兩個向量夾角的余弦值。如果夾角為90度,則相似度為0;如果兩個向量的方向相同,則相似度為1.0.同皮爾遜相關係數一樣,余弦相似度的取值範圍也在-1到+1之間。因此我們也可以將它歸一化到0和1之間。
基於物品相似度計算的時間會隨物品數量的增加而增加,基於使用者的相似度計算的時間複雜度則會隨使用者數量的增加而增加。
推薦引擎系統的評價指標是稱為最小均方根誤差(rmse)的指標,它首先計算均方誤差的平均值然後取其平方根。
推薦系統的工作過程是:給定乙個使用者,系統會為此使用者返回n個最好的推薦菜。為了實現這一點,則需要我們做到:
(1)尋找使用者沒有評級的菜餚,即在使用者-五哦i你矩陣中的0值
(2)在使用者沒有評級的所有物品中,對每個物品預計乙個可能的評級分數,這就是說,我們認為使用者可能會對物品的打分(這就是我們計算相似度的初衷);
(3)對這些物品的評分從高到低進行排序,返回前n個物品
推薦引擎還存在其他很多規模擴充套件性的挑戰問題,比如矩陣的表示方法。在上面給出的例子中有很多0,實際系統中0的數目很多,也許我們可以通過只儲存非零元素來節省記憶體和計算開銷
另乙個潛在的計算資源浪費則來自於相似度的得分,在我們的程式中,每次需要乙個推薦得分時,都要計算多個物品的相似度得分,這些得分記錄的是物品之間的相似度。因此在需要時,這些記錄可以被另乙個使用者重複使用,在實際中,另乙個普遍的做法就是離線計算並儲存相似度得分。
搜尋引擎面臨的另乙個問題就是如何在缺乏資料時給出好的推薦。這稱為冷啟動問題,處理起來十分困難,這個為題的另乙個說法是,使用者不會喜歡乙個無效的物品,而使用者不喜歡的物品又無效,如果推薦只是乙個可有可無的功能,那麼上述問題倒不大。但是如果應用的成功與否和推薦的成功與否密切相關,那麼問題就變得相當嚴重了。
冷啟動問題的解決方案是將推薦看成是搜尋問題,在內部表現上,不同的解決辦法雖然有所不同,但是對使用者而言確實透明的。為了將推薦看成是搜尋問題,我們可能要使用所需要推薦物品的屬性。同時,我們也可以將這些屬性作為相似度計算所需要的資料,這被稱為基於內容的推薦。
協同過濾推薦演算法 協同過濾推薦演算法總結
推薦演算法具有非常多的應用場景和商業價值,因此對推薦演算法值得好好研究。推薦演算法種類很多,但是目前應用最廣泛的應該是協同過濾類別的推薦演算法,本文就對協同過濾類別的推薦演算法做乙個概括總結,後續也會對一些典型的協同過濾推薦演算法做原理總結。推薦演算法概述 1 基於內容的推薦 這一類一般依賴於自然語...
協同過濾推薦演算法 推薦演算法 基於協同過濾CF
前邊我們已經介紹了推薦演算法裡的基於內容的推薦演算法cb,今天我們來介紹一下基於協同的推薦演算法collaboration filtering cf 協同過濾是乙個利用群體智慧型的乙個演算法,舉乙個簡單的例子,如果放假了你想去北京玩幾天,但是不知道北京都有哪些好玩的,你會怎麼做?你可能會上網查一下的...
協同過濾推薦演算法
協同過濾推薦演算法 分為基於使用者的協同過濾推薦usercf和基於物品的協同過濾推薦itemcf。介紹見 協同過濾的實現步驟 1 指導思想 這種過濾演算法的有效性基礎在於 1 使用者偏好具有相似性,即使用者可分類。這種分類的特徵越明顯,推薦準確率越高 2 物品之間具有相似性,即偏好某物品的人,都很可...