協同過濾(collaborative filtering)推薦系統的實作

最近讀了交通大學資管所劉敦仁教授2007年發表在 Expert Systems with Application 的文章[1]⁠ ,他將客戶終生價值(customer lifetime valueCLV)融入協同過濾(collaborative filteringCF)推薦系統框架,以加權後的 RFM RecencyFrequencyMonetary)模型,作為客戶分群的依據

試著將更多實務界或商管領域的思維,整合至資料挖掘的實作,一直是我在思考的方向,這篇文章的思路對我並不陌生,因此我試著更深入理解他的做法。

在閱讀的過程裡,我覺得這篇文章在整理過去研究成果(related work)的部分,蠻有意思的,本文整理協同過濾的各種不同做法,以實作時應用的各種基礎演算法(例如:關聯法則、分群)為基礎的分類思路,而不是從商品與顧客的不同觀察視角(item-based .vs. user-based)出發。個人認為,這種切入角度,能夠幫助有意實作推薦系統的讀者,更快的理解推薦系統的組成架構,並且幫助他們更有效率的擬定工作計畫。

協同過濾的基本精神,在於數大就是美,資料愈多,系統的表現愈佳。協同過濾的實作精要之處,則在於如何從購物人潮中找出與特定顧客品味嗜好相近的同好,或是任意揀選一件商品,如何找出相似的品項。如何找出人與物的相似處,就取決於相似度(similarity)的計算方式了。歷來學者曾在文獻中建議使用的相似度公式,五花八門琳琅滿目,用族繁不及備載來形容一點也不誇張。

最常被人提及的計算方式包括 Euclidean DistancePearson correlation coefficientJaccard coefficientManhatten distanceCosine correlation coefficient 等等。許多學者在這些基礎上,設計了更複雜的計算方式,比如劉教授建議以商管領域常使用的 RFM RecencyFrequencyMonetary)模型,計算客戶貢獻度(客戶對業者的價值)為基礎的計算方式,他還以此為基礎,建議更複雜的加權式 RFM Weighted RFM)計算公式。簡而言之,更有用的相似度判斷方式,一直是學者努力的重點之一。

定義相似度之後,最重要的是怎麼應用相似度來建構推薦機制。根據劉教授的整理,有三大類計算方式(當然啦,這只是我個人的理解):

k-nearest neighborkNN

這個方法是最直覺,也最容易理解的。指定一個消費者(或者指定商品,道理都是一樣的),利用相似度公式,計算出和這個消費者最相似的 k 個顧客。然後我們分析這些選出來的對象,找出他們購買過,但我們的主人翁還沒有購買的項目,這些就是要推薦給主人翁的商品。實務上,可能在計算上更複雜一點,不過這就是最基本的道理了。如果讀者可以參考 Programming Collective Intelligence O'REILLY 出版)這本書的第二章和第八章,就更能體會這個方法的神髓了。

Clustering

這個方法在邏輯上也很單純,先將顧客依照某些條件分群,讓後再針對每一個群組作關聯法則的分析。我們依照關聯法則的分析,對這個群組裡的消費者,產生推薦清單(這個群裡其他人都買了,他還沒有買的商品就是推薦對象)。最簡單直覺的分群演算法,就是 k-mean clustering 了,但別忘了最重要的分群依據,就是前述一再強調的相似度計算方法。

Hybrid Approach

寸有所長,尺有所短。每一種方法,都有其優勢和缺點,因此學者嘗試將 content-based (CB) collaborative filtering (CF)結合在一起,這就是所謂的融合解法 (hybrid approach)。將不同的計算方法結合在一起,說來簡單,作起來卻有很多變化。學者 Burke 有篇論文[2] - Hybrid Recommender Systems: Survey and Experiments,整理了做法,一共有 weightedswitchingmixedfeature combinationcasadefeature augmentaion & meta-level 七種之多。依照劉教授的整理看來,他最重視 weighted meta-level 兩種方法。

(圖表來源:Hybrid Recommender Systems: Survey and Experiments)


雖然我一直覺得,RFM 是不是能表達愛好與品味,還是個問號?不過本篇論文的整理功夫,的確值得稱道,配合 Programming Collective Intelligence 一起看,將論文裡的數學符號和實作連結起來,收獲特別多。

參考資料:

[1] Y. Shih and D. Liu, “Product recommendation approaches: Collaborative filtering via customer lifetime value and customer demands,” Expert Syst. Appl., vol. 35, 2008, pp. 350-360.

[2] R. Burke, “Hybrid Recommender Systems: Survey and Experiments,” User Modeling and User-Adapted Interaction, vol. 12, Nov. 2002, pp. 331-370.

Comments