文/Jerry|編輯/Jessie
這堂 TensorFlow 推薦系統課程,由 Google Cloud 合作夥伴 CloudMile 萬里雲的講師主講,在六個小時的時間裡,從傳統的推薦系統演算法、機器學習的基本概念、講到如何應用深度學習來實作推薦系統。
對於稍微有點基礎的同學,我認為是一個非常棒的概念整理,讓你可以在短時間之內,了解整個脈絡,並透過 TensorFlow 的範例程式,學習如何套用到實際問題。至於微積分、線性代數基礎較不好的同學,其實也不用擔心聽不懂,只是針對一些公式推導,就要另外花時間研究囉!
以下我會大致介紹一下什麼是推薦系統、為什麼可以透過深度學習強化推薦系統,接著分享一些與深度學習相關的學習資源,讓有興趣的朋友們參考。
什麼是推薦系統?
推薦,其實就是在預測你可能會喜歡的東西
假如今天有一群朋友要去看電影,而你已經把預告片、網路評論都看完、也知道朋友們的觀影喜好,如果是你,會怎麼推薦他們呢?
是不是會考慮到朋友的個性、他過去的電影口味、電影的類型適不適合、或者可能會因為 A 朋友跟 B 朋友性格類似,而推測他們可能有相似的喜好?
你怎麼想的,推薦系統也大概就是這麼做的,背後的出發點不難,主要是根據影片內容、使用者的基本資料 (Content) 或使用者觀影紀錄、行為 (Behavior) 來做推薦,也就是以內容為主的內容過濾 (Content Filtering),以及聽起來很炫的協同過濾 (Collaborative Filtering)
內容過濾很好理解,其實就是根據既有的用戶與影片資訊來做推薦
比如我們已知有一位 16 歲的小男孩,喜歡看動作片,我們就可以基於這項資訊推薦他觀看非限制級的動作電影。雖然這個方法很簡單,但實際上你很難取得用戶的個人檔案,多半需要慢慢的從用戶身上挖掘。
所以比較厲害的 Collaborative Filtering 來了!這個方法是基於用戶或電影的關聯性來做推薦,他不需要詳細的用戶個人檔案,只要從一群用戶的觀影紀錄、評價紀錄就能推估出某個用戶的喜好:
舉例來說,你朋友常看推理卡通《名偵探柯南》,而你除了看這部片之外,還會看其他推理劇如《偵探伽利略》、《新世紀福爾摩斯》,因此根據你這個案例,你朋友很可能也會喜歡你看的這些推理劇。
那實際上要怎麼算出來呢?
Collaborative Filtering 中有一種 Memory-based 的方法,透過相似度來做推薦。我們會把用戶與電影間的關係變成一個矩陣,你可以想像是把這些資料投影到一個平面地圖上,每當你看過某些電影,就像是在地圖上的景點打卡,並隨著你的觀影歷程繪製出移動軌跡。假如,在地圖上發現有其他人也跟你走出相似的路徑,去過相似的景點,那麼你們兩人產生的景點差距肯定相當的小,這也代表著你們兩人很相似。數學上,我們會把用戶的觀影喜好轉為向量,透過諸如 Consine Similarity 的方式,計算出用戶間的向量的相似度:
舉個之前參加黑客松比賽的例子,我們做了一個行程推薦系統,其背後的概念是「人格特質與消費習慣相似的人,應該會有相似的旅遊喜好」,所以根據這樣的前提,我們結合了銀行掌握的使用者基本資料、消費紀錄,再加上個人財務狀況與喜好興趣,推薦旅客合適的旅遊行程。