「推薦系統」於我們生活中無所不在,例如: Spotify 會幫你整理好專屬你的 Daily Mix 音樂合輯,Netflix 會推薦適合你的電影或影集;Amazon 會推薦您可能會喜歡的物品或買過跟你相同物品的消費者也買了甚麼,那這些是怎麼做到的呢?
本文將介紹如何運用 Python 寫出網路餐廳的推薦系統。
什麼是推薦系統?
『推薦』換句話說其實就是透過演算法預測 你/妳 可能會喜歡的東西,
假如今天有一群朋友相約去餐廳吃飯,而你是個名副其實的老饕,知道許多特色餐廳和其風味,也知道朋友們的口味偏好,那你會怎麼推薦理想的餐廳給他們呢?
首先會考慮到朋友的用餐習慣、過去常吃的餐廳、餐廳的氣氛類型…等 ;接著會根據 A朋友跟 B 朋友口味類似,而推測哪些餐廳可能是他們都喜歡的。
推薦系統的原理就如上述邏輯,依據餐廳內容、使用者的基本資料 (Content) 、用餐紀錄 (Record)、行為 (Behaiver) 來做為推薦依據;其中演算法的基礎概念分為以內容為主的內容過濾 (Content Filtering)、及協同過濾 (Collaborative Filtering) 來做推薦系統。
內容過濾 (Content Filtering)
內容過濾 → 可理解成根據既有的使用者與餐廳資訊來做推薦
假設我們已知有一位常在 Instagram 的網紅喜歡發環境氣氛優雅的餐廳,並且常分享日式料理,我們就可以基於這項資訊推薦他環境好氣氛佳的日本料理餐廳。這個方法看似簡單,但實際上很難取得用戶的個人檔案,多半需要從用戶個人的消費習慣, 日常生活上慢慢挖掘。
協同過濾 (Collaborative Filtering)
為了克服內容過濾 (Content Filtering) 所面對的難題,就衍生出更為複雜的演算法,協同過濾 (Collaborative Filtering),這個方法是基於用戶或飲食的關聯性來做推薦,不需要詳細的用戶個人檔案,只要從一群用戶的用餐紀錄、評價紀錄就能推估出某個用戶的喜好。
舉例來說,你朋友常到鼎泰豐用餐,而你除了吃鼎泰豐,還會到其他港式飲茶餐廳吃飯;根據這個習慣的關聯性,你的朋友很可能也會喜歡你去過的那些港式飲茶餐廳。
以下提供一個例子給讀者們實作,讓大家來一窺究竟透過 Python 該如何做餐廳的推薦系統。
根據以上 Python Code 實作出來,結果如下:
由此結果可看出,Hailey 對美式餐廳有 4.0 的高分推薦, 中式 3.0 其次是泰式 2.5 。
在此篇文章中只簡略介紹推薦式系統的邏輯脈絡,暫時先不探討 Collaborative Filtering 背後的演算法,若想進一步了解推薦系統 (Recommendation System) 的背景知識,歡迎加入 AI.Free Community 的社團,我們將帶你深度了解資料科學的各項領域。
若有任何疑問或建議,我們相當歡迎讀者們,針對此議題來信與自由團隊做進一步探討喔!(Email: AI.Free.Team@gmail.com)