iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0
AI & Data

一服見效的 AI 應用系列 第 8

Day 08:協同過濾(Collaborative Filtering)

概念

https://ithelp.ithome.com.tw/upload/images/20190923/20001976dXcn8EfY6h.png
顧名思義,協同過濾(Collaborative Filtering),協同就是集合眾人的意見協同合作,進而篩選或推薦商品,作法與購物籃分析類似,一樣是以銷售記錄進行分析,不同的是,並不進行商品組合分析,而是將銷售記錄轉成『使用者/商品對應的矩陣』(User-Item Matrix),如下圖,記錄哪些使用者買過哪些商品,計算顧客間或商品間的相似度,再推薦相似顧客曾買過的商品,或推薦與目前商品最相似的其他商品,進行 cross selling。

註:以下圖片來源均來自 How to Build a Recommender System

https://ithelp.ithome.com.tw/upload/images/20190917/20001976yATcFtIiPh.png
圖. User-Item Matrix

  1. USER-USER 協同過濾:轉換為最相似的顧客族群(USER-USER Similarity Matrix),查看他們經常購買的商品,推薦給目前鎖定的顧客。
    https://ithelp.ithome.com.tw/upload/images/20190917/20001976M2f4cHOlSg.png
    https://ithelp.ithome.com.tw/upload/images/20190923/200019761Y8VdQwP9d.png
    圖. USER-USER Similarity Matrix

  2. ITEM-ITEM 協同過濾:找出與目前瀏覽的商品最相似的商品族群(ITEM-ITEM Similarity Matrix),推薦給顧客。
    https://ithelp.ithome.com.tw/upload/images/20190917/20001976SXlrjkzpdo.png
    https://ithelp.ithome.com.tw/upload/images/20190917/20001976m6aScanDGE.png
    圖. ITEM-ITEM Similarity Matrix

如何從User-Item Matrix轉換為 USER-USER Similarity Matrix 或 ITEM-ITEM Similarity Matrix,請看以下說明。

相似性(Similarity)計算

計算相似性(Similarity)有三種統計量:

  1. Jaccard Similarity:(購買A 購買B 的交易筆數) / (購買A 購買B 的交易筆數)
  2. Pearson Similarity:兩兩計算其『皮爾森係數』(Pearson coefficient)。
  3. Cosine Similarity:最常用的方法,本文採用此統計量。
    不管我們是採用哪一種協同過濾,都是將矩陣中每一欄或列視為一向量,兩兩計算其統計量,得到一個相似性的值。例如Cosine Similarity,當Cosθ=1時,表示夾角=0°,兩者最相似,反之,Cosθ=-1時,表示夾角=180°,兩者最不相似。
    https://ithelp.ithome.com.tw/upload/images/20190917/200019768NiDl3gaRh.png
    圖. Cosine Similarity

範例

先看一個簡單的例子,假設有5部電影、3個觀眾評論,要猜第3個觀眾是否喜歡第5部電影:
以下圖片來自:Recommendation Systems by Akanksha

https://ithelp.ithome.com.tw/upload/images/20190917/200019763FyTqSIouU.png

解法很簡單:

  1. 第3個觀眾與第1個觀眾相同意見有2個,即 2/4 = 0.5
  2. 第3個觀眾與第2個觀眾相同意見有1個,即 1/4 = 0.25
    所以,第3個觀眾與第1個觀眾意見較相近,故猜第3個觀眾與第1個觀眾都喜歡第5部電影。

以上只有喜歡/不喜歡兩種,若觀眾評論改為分數,要如何計算? 例如觀眾評分如下:
https://ithelp.ithome.com.tw/upload/images/20190917/20001976JXepi05AEN.png

兩兩使用者計算其反歐基里德距離(inverse Euclidean distance),例如 C 與 D 的Cosine值計算如下:
https://ithelp.ithome.com.tw/upload/images/20190917/20001976NuXN8MTKAA.png
https://ithelp.ithome.com.tw/upload/images/20190917/20001976Ske4VmWekr.png

全部算完後,如下表:
https://ithelp.ithome.com.tw/upload/images/20190917/20001976bqKE1Cm9Kb.png

結論如下:

  1. 與A最相似的是T。
  2. 與C最相似的是D。
  3. 與J最相似的是T。

ITEM-ITEM Similarity Matrix 產生的方式以列(Item)作比較,算法完全一樣。

結語

一般網購的顧客、會員或潛在客戶(Leads)很多,如果使用 USER-USER 協同過濾,USER-USER Similarity Matrix 就會非常大,計算非常耗時,這時就可以採用 ITEM-ITEM 協同過濾計算比較快。反之,如果是屬於內容為主的網站,例如新聞、部落格,則因商品是新聞或業配文,文章推陳出新,亦即商品很多,就適合使用 USER-USER 協同過濾法。此外,USER-USER 協同過濾法是推薦最多使用者購買的商品,所以,常會推薦熱銷品,相對的,ITEM-ITEM 協同過濾就比較容易推薦到長尾(long tail)的商品(銷量不大,但一直持續有人購買),這對公司整體營收會有較良性的助益。

基本上,協同過濾還有一個缺點,稱為『冷啟動』(Cold Start)的問題,網站開始的初期,缺乏相關的歷史資料,或者新商品剛推出時,尚無購買或評論記錄,這時就沒辦法計算了。

網站講求即時反應,推薦商品給顧客的速度要快,同時,提供的資訊必須要新,所以,系統重新計算Similarity Matrix 的頻率也是一個重要的考量,必須要速度與新鮮度平衡兼顧。

講了那麼多,下次就來實作協同過濾法看看。


上一篇
Day 07:初探推薦系統(Recommendation System)
下一篇
Day 09:協同過濾(Collaborative Filtering) 實作
系列文
一服見效的 AI 應用14

尚未有邦友留言

立即登入留言