前面我們介紹兩大類的推薦方法 -- 以內容為基礎的過濾(Content Based Filtering) 及 協同過濾(Collaborative Filtering),這兩類的方法各有其優缺點,如下圖:
以內容為基礎的過濾(Content Based Filtering),只要有商品的屬性資料,例如電影的類型(Genres)、主題風格(Theme),推薦時再請使用者勾選他喜歡的屬性,系統就可以篩選出合於使用者口味的商品列表。相對的缺點如下:
協同過濾(Collaborative Filtering)就單純多了,只要將過去的交易記錄找出來,比對出相似的顧客曾買過的商品,或相似的商品推薦給同類型的顧客,就算沒有交易記錄,使用商品瀏覽資料(Page Click)也可以。相對的缺點如下:
因此,有專家認為可以結合兩種方法,混合使用,兼容並蓄,那就天下無敵了。混合使用原則如下圖:
其中的N是網站的總評價數,M是單項商品的總評價數,可自訂門檻。
推薦系統在實務上會碰到的問題還蠻多的,列舉以下幾點:
import pandas as pd
data_iterator = pd.read_csv("large_data.csv", chunksize=100000)
chunk_list = []
# Each chunk is in dataframe format
for data_chunk in data_iterator:
filtered_chunk = chunk_filtering(data_chunk)
chunk_list.append(filtered_chunk)
filtered_data = pd.concat(chunk_list)
以上程式節錄自『3 simple ways to handle large data with Pandas』
YouTube 在 2016 年有發表一個完整的架構,它主要是以兩個神經網路(Neural Networks)建構而成,有興趣的讀者可參閱『Deep Neural Networks for YouTube Recommendations』。