[資料探勘] 淺談協同過濾 (Collaborative Filtering)

SONY DSC

因為Data mining和Web mining研究的關係,最近接觸了不少Collaborative Filtering(又稱CF法)相關的論文。發覺Collaborative Filtering真的是個應用非常廣泛的技術,尤其在電子商務高速成長的時代,如何提供消費者更準確的個人化推薦服務,將是能否提高轉換率和良好使用者經驗的重要關鍵。

電子商務典型應用(Amazon):

Screen Shot 2013-03-31 at 下午2.24.55

圖:Amazon.com

「Customers Who Bought This Item Also Bought (買了這項商品的顧客,也會買這些商品)」

關於Collaborative Filtering相關的研究,最著名的應當屬Minnesota大學的GroupLens研究團隊。其中An Algorithm Framework for Performing Collaborative Filtering這篇發表在SIGIR上的論文,雖說年代稍微遠了些,但卻是一篇經典作品,非常適合剛接觸這個領域的朋友閱讀。

那究竟Collaborative Filtering如何定義?在實務上又該如何應用?其又有何侷限性呢?

根據維基百科上狹義的定義:

Collaborative filtering is a method of making automatic predictions (filtering) about the interests of a user by collecting preferences or taste information from many users (collaborating).

也就是Collaborative Filtering是藉由其他和你相似的使用者(群體)的偏好,去預測你的個人偏好,進而達到個人化(過濾)的推薦效果。

那為什麼要會有使用Collaborative Filtering的需求呢?

1. 隨著資料量的大量增加,必須要有更好的資料過濾方式

2. 可以提供Content-Based方法互補的效果:比較能預測Content-Based無法預測的類型,如:偏好、品質等,並有機會提供內容分析中未出現的項目推薦

而最早發展Collaborative Filtering是用於email的過濾,但系統的query稍嫌複雜且非自動化,所以應用範圍並不廣泛。直到GroupLens團隊所提出的User-Based演算法,Collaborative Filtering的技術便被廣泛的應用在各層面,包括Ringo的音樂推薦系統、Bellcore影片推薦系統皆是基於GroupLens所做的相關應用。

在說明Collaborative Filtering技術前,必須先討論偏好的定義:

一般來說偏好可以分為外顯(explicit)偏好(如:主動給評分)和隱藏(Implicit)偏好(如:購買記錄、停留網站時間、Web logs),這邊主要討論的是外顯偏好,且是電影的評論分數。(如下表:為使用者和電影項目的矩陣。由於Nathan和Joe在電影的評分類似(可拿來預測的鄰居),可嘗試藉由和Nathan相似的Joe推出問號的評分)

Screen Shot 2013-03-31 at 下午4.37.39

Collaborative Filtering已經是發展蠻成熟的技術,一般可以分為User-Based和Item-Based的觀點切入(本篇主要focus在User-Based),其演算法可以簡單歸結為三個步驟:

1. 將所有其他使用者針對active user(要被推薦或預測的那個人),做相似度(similarity)的weighting

2. 取出和你相似的子集合(subset)當做用於預測的鄰居(neighborhoods)

3. 計算預測值和正規化
Screen Shot 2013-03-31 at 下午4.38.45*這邊盡量簡化不把數學公式放入,僅傳達概念,若有興趣的朋友可以參考相關資料

這邊就藉由一張動畫,描繪Collaborative Filtering的應用方式。(原本不知道的偏好,藉由和其相似的其他使用者,可以預測未知的偏好,進而達到推薦效果)

Collaborative_filtering

而效果的衡量則有以下三種指標:

1. Coverage
係指可以提供預測的項目比率,值越高越好,但通常必須跟MAE做取捨。

2. MAE(Mean Absolute Error
預測值和實際值的差異絕對值平均,值越低越好。

3. ROC曲線
越往左上方是越好的情況,值越高越好。

Collaborative Filtering在實務上不失為一個簡單有效的方式。但仍有以下缺點:

1.稀疏問題(Sparsity)

實務上,大部分的使用者會主動給予評分的非常少,所以造成矩陣的稀疏性,可以提供預測的資料相當少。

2.冷開始問題(Cold-start)

雞生蛋生雞的問題,一開始要擁有可以預測的資料是相當困難。

3.系統延伸性問題(Scalability)

當資料量和使用者數量多時計算量和時間會很大,要提供即時反饋有點難度。

綜合以上問題,目前實務上多半是使用混合(Hybrid)式方法,以及使用Machine Learning相關技術。而結合Content-Based和Collaborative Filtering的方式進行,可以達到互補效果,進而提供使用者更好的個人化推薦體驗。畢竟在如今這競爭激烈的商業環境,誰能更了解使用者的心理,將更容易在激烈的商場脫穎而出。

相關論文及資料:

(image by  Marc Wathieu, cc license)

廣告