聚類和協同過濾是什麼關係?

最近在看《集體智慧編程》,發現協同過濾通過Item Base或User Base可以獲得推薦信息,聚類也可以通過對數據的聚集獲得相似的物品進行推薦。

那麼他們是什麼關係呢?是否聚類可以用在協同過濾中混合使用呢?


從原理上看:

1. 聚類就是分組,對user或item分組。所以用直接聚類來做推薦的話,是從聚類得到的分組中(隨機)挑一些item推薦給用戶。

2. 協同過濾演算法得到的是對一件item的評分。協同過濾將評分最高的item推薦給user。

從效果上看:

1. 協同過濾得到的推薦是有排序的,評分越高,推薦的程度就越高。

2. 聚類得到的推薦是沒有重要性差別的,在一個分組中,不知道哪一件item比另一件更值得推薦。

從應用上看:

1. 協同過濾和聚類可以組合起來使用。

如果數據規模非常大,協同過濾中計算KNN(在全局user或item中找K個最近的鄰居)是非常耗時的。但如果先對user (或item)做一個聚類,然後在目標user(或item)所屬聚類簇中找KNN,可以極大地節省計算開銷。


自邀自答,不用謝。

這是兩種完全不同的演算法思想。

以二維空間為例,聚類是各個樣本往若干個共同中心聚合的過程,計算的是樣本點到聚類中心的二維空間距離;而協同過濾是盡量在樣本中構造平行相似性,以彌合缺失的樣本信息維度。

聚類和協同過濾是可以而且應當在解決實際問題中混合使用的。但應該是在解決問題的不同階段。比如微博用戶興趣推薦,首先使用聚類方法對人群進行若干大類的劃分,然後在一類人群中進行協同過濾推薦。這樣比全局進行協同過濾效果會好,因為這個思路首先承認了不同的人群的興趣愛好是迥異而有模式的。


既然你說道推薦系統,其實聚類和協同過濾根本不是同一個層次的概念。

不過他們確實有很多關係,他們都是針對圖(Graph)的學習。這個圖可以是代表商品間購買關聯的強弱(比如同時有一個人購買A和B商品,就在兩者之間的邊上添加權重1),也可以是特徵代表的向量的距離矩陣(記住距離矩陣等價於圖)

聚類是圖的分解演算法;聚類通過一定的方式,比如Kmeans、譜聚類,把輸入圖拆分成一系列滿足一定條件的子圖。

而協同過濾實際上是圖上的搜索演算法,利用事先建立好的一系列規則,快速找到某個節點的臨域(比如KNN)。

協同過濾網上介紹的書太多了,前面也有很多精彩回答,沒必要贅述了。

比如像亞馬遜上大家都見過的:購買了這本書的人還「購買」、「瀏覽」了xxxx。

這個對於書籍是沒問題的,但是假設你要做一個針對某個大型綜合電商類網站的推薦系統,比如京東,上面有非常多種類的商品。你會發現,購買了《小時代》這本書的人,其中還有很多是購買了電話卡、購買了手機充電器。這種數據上看起來的強關聯,並非因為電話卡和《小時代》這本書與電話卡又特彆強的關聯,而是因為本來電話卡就是京東賣的最好的商品(這裡隨便舉個例子,與真實數據無關),所以你會發現買了小時代的人有99%都衝過電話卡。

這樣就有幾種不同的處理手法。

1. 你可以先聚類,利用規則或者別的特徵,把商品先切分成一些類,推薦被限定在類內進行。這個大概就是聚類和協同過濾最大的一個交叉點。

2. 設計巧妙的權重機制,比如說儘管買了小時代的人有99%充國電話卡,但是充過電話卡的人里可能只有萬分之一買過小時代。通過足夠好的設計來標準化商品的關聯度。


如果說區分,個人覺得

1、用聚類做推薦,一般需要對user進行特徵表述,對用戶進行聚簇後,用簇內的item推給簇內的user,或者對item進行聚簇,推給相應user

2、cf更多強調利用user和item的這種聯合關係,把偏好相似的user推薦不同的item

感覺推薦中聚類和cf比較類似的原因是,對user的表達僅僅使用item向量,但是實際使用中往往對user的表達使用了別的維度特徵,來克服數據稀疏問題。


你買了阿迪的鞋子,給你推薦耐克的鞋子,這是聚類。你買了阿迪的鞋子,給你推薦刮鬍刀(同好人的購買),這是協同過濾。


回答一下一年前自己的提的問題

聚類:關注Item本身的特徵,根據相似度把特徵相似的聚集在一起,表示他們屬於同一類別。

協同過濾:並不關於Item本身的特徵,而主要關注User和Item之間的關係,基於相似的用戶對相似的Item會有相似的評分的原則進行推薦,找到相似的Item或相似的User。


總的來說很相像,硬要說區別的話,我傾向於認為:

1.協同過濾針對於用戶的行為或偏好,更加側重於長尾。比如用戶對某首歌評分,推薦某個東西給好友等等。從產生時間上來說,可以認為現代的協同過濾(用於電子商務,推薦系統等領域)是web2.0的產物

2.聚類更傾向於用戶本身的屬性,如收入,職業等。作為傳統的非監督方法,目的更多在於去挖掘一類個體中的共同規律。在長尾方面效果可能沒那麼好。


協同過濾中的Model-based里有用聚類技術,將相似人群聚類,然後把投票高的內容推薦給不同的用戶群。

同時在對物品進行特徵提取的時候也有應用聚類技術,將物品聚類在一個topic下。


推薦閱讀:

主題模型(topic model)到底還有沒有用,該怎麼用?
bp演算法中為什麼會產生梯度消失?
一個沒有基礎的工科研究生如何學習神經網路?
word2vec 相比之前的 Word Embedding 方法好在什麼地方?
在使用relu的網路中,是否還存在梯度消失的問題?

TAG:人工智慧 | 機器學習 | 協同過濾 | 推薦系統 | 聚類演算法 |