天天看點

基于hadoop生态系統的mahout推薦和聚類分析(1)

簡介

hadoop是Apache旗下的一個開源分布式計算平台,在分布式環境下為使用者提供處理海量資料的能力。

mahout是hadoop下的一個子項目,主要用于推薦、分類和聚類分析

一、推薦

關于推薦的算法有很多,本次主要介紹協同過濾算法。

(1)基于使用者的協同過濾算法(UserCF)

        UserCF是推薦算法中最古老的算法,可以說,UserCF的誕生标志着推薦系統的誕生,該算法在1992年被提出的,但直到現在依然是推薦系統領域最著名的算法。

       UserCF符合人們對于趣味相投的認知,興趣相似的使用者往往有相同的物品喜好,當目标使用者需要個性化推薦的時候,可以先找到和目标使用者有相似興趣的使用者群體,然後将這個使用者群體喜歡的,而目标使用者沒有聽說過的物品推薦給該使用者,這種方法就被稱為基于使用者的協同過濾。

下面舉一個例子:

基于hadoop生态系統的mahout推薦和聚類分析(1)

       由上圖可以看出使用者A和使用者C都喜歡物品A和物品C,是以認為這兩個使用者是相似使用者,并将使用者A沒有接觸過但使用者C喜歡的物品D推薦給使用者A,這就是UserCF的推薦原理。

       在大家簡單了解了UserCF之後,也一定會看出此算法的關鍵步驟就是計算使用者與使用者之間的興趣相似度,因為在實際應用中,使用者資料都是百萬、千萬甚至上億級,是以也就不可能再像上圖這樣簡單分析了,這時就要用到相似度算法,在此就不做深入講解了,有興趣的同學可以自行查閱.(常用的相似度算法:曼哈頓距離(Manhatten)、歐氏距離(Euclidean)、餘弦相似度等)

(2)基于物品的協同過濾算法(ItemCF)

       ItemCF是業界使用最多的推薦算法,亞馬遜其推薦系統的基礎使用的就是ItemCF。

       ItemCF是給目标使用者推薦和他們之前喜歡的物品相似的物品。該算法并不利用物品的内容屬性計算物品之間的相似度,而是主要通過分析使用者的行為記錄來計算物品之間的相似度。

       該算法基于的假設是:物品A和物品B具有很大的相似度是因為喜歡A物品的大多數使用者也都喜歡物品B。

下面舉一個例子:

基于hadoop生态系統的mahout推薦和聚類分析(1)

       這和上面呢個同一個例子。首先使用者A和使用者C都喜歡物品A和物品C,這樣就認為物品A和物品C是相似的,是以在使用者A喜歡物品A時,就将物品C推薦給他,這就是基于物品協同過濾的原理。

     在計算物品相似度方面,與UserCF不同,ItemCF計算物品相似度是通過建立使用者到物品倒排表來計算的。

總結:

        UserCF算法推薦的是那些和目标使用者有着共同愛好的其他使用者所喜歡的物品,ItemCF算法則是推薦那些和使用者之前喜歡物品相似的其他物品。由此可以看出UserCF是更加偏向于社會化的,ItemCF則是偏向于個性化的。

 UserCF算法适合于新聞推薦和微網誌話題這些場景,推薦新穎度高,但很難對推薦結果做出解釋,算法複雜度高。

ItemCF則在電子商務,圖書,電影,音樂等方面廣泛應用,并可以利用使用者的曆史記錄給推薦結果做出解釋,給使用者更加信服的結果,但推薦新穎度低,多樣性不足。

明天我将會給大家示範一個單機版基于物品的協同過濾音樂推薦的小例子。

繼續閱讀