碩論:應用協同過濾技術於表演藝術售票系統(四)

深度學習協同過濾模型

Jamie Lin
10 min readOct 2, 2023

系列是寫給藝術行政同行的,所以不會有太理論或太技術的內容。想看程式碼的請直接到我的 GitHub repo,想直接讀論文的,可以從這邊下載

感謝國家兩廳院支持,提供兩廳院售票系統 2011–2019年間,系統會員購買國家兩廳院演奏廳演出票券的交易紀錄,讓我實作推薦系統。

前一篇介紹的傳統的記憶類協同過濾模型,有兩個問題:

  1. 音樂會之間的相似度過低:我們以購買音樂會的使用者作為該音樂會的向量,但因為每場音樂會購票會員不多,因此造成向量中的「1」不多。以這個資料集為例,會員總數有 33,162 名,但平均每場音樂會只有 29筆訂單。也就是說,每個音樂會的向量長達 33,162 格,其中平均只有 29 格為「1」,其餘皆為 0。在「1」如此稀疏的狀況下,兩場音樂會的相似度也通常很低。作為推薦基礎的使用者購買音樂會票券可能性分數,是用音樂會間的相似度計算出來的。而音樂會相似度都很低,可能性分數也跟著很低。以很低的可能性分數提出來的推薦,可靠性自然不高。
  2. 使用者與物品矩陣急速變大:當系統持續加入新的使用者、新的音樂會票券一直上架時,矩陣就會快速變大。因此,計算音樂會之間的相似度所需要的硬體資源需求,也會快速增加,只能花錢擴增硬體。

另外,身為觀眾,心裡清楚知道,影響我會不會購買這場音樂會票券的因素,絕對無法從我的過去購買紀錄正確判斷。即便我喜歡鋼琴獨奏,也不會每場鋼琴獨奏會都買票去聽。至少我本人會考量演出者、演出曲目以及演出時間、票價等資訊,再決定要不要買票。然而,傳統的協同過濾模型無法直接將這些額外的資訊納入考量。若手邊已有這些額外資料,並且想將這些因素放進推薦的流程中,就必須使用不同的方式建立推薦系統。

如同在(二)介紹的,協同過濾模型除了傳統、記憶類的方法外,還有模型類的方法。模型類方法又細分為利用機器學習、矩陣分解或是深度學習的方法來建立推薦系統。為了能加入其他可能影響購票行為的因素,我直接選用深度學習的方式,來建立我的實驗模型。

深度學習架構非常靈活,也有很多論文提出各種推薦系統架構。不過,因為傳統的協同過濾模型表現已經很不錯,因此我用協同過濾模型的深度學習版、神經網路協同過濾 (Neural Collaborative Filtering, NCF) 作為我的深度學習推薦系統基礎。NCF 是 He 等人於 2017年提出的。下圖左側即為 NCF 論文中提出的推薦系統架構,He 等人提出以多層感知機 (Multilayer Perceptron, MLP) 來學習使用者與音樂會之間的關係,並可加上廣義矩陣分解 (Generalized Matrix Factorization, GMF) 部分。下圖右側是我的研究使用的架構。與原始的 NCF 架構比較,只差在我將選用的因素一起放到 MLP 內運算。

NCF 架構

所以,到底要放入哪些因素呢?我從自身經驗,以及從 Full House: Turning Data into Audiences (2005) 這本手冊的內容汲取一些想法。稍微岔題介紹一下本手冊。Full House 最初的版本是 1993 年由 Arts Council of Great Britain 出版,內容為 Tomlison 針對如何利用藝文售票紀錄來做行銷策略規劃與顧客關係管理等等所提出的建議。Tomlinson 是誰呢?他是最早開始推動票務電腦化、網路化的人物之一。用 "Roger Tomlinson Ticketing" 去 Google Scholar 找,可以找到一些他的倡議。後來 Australia Council for the Arts 委託 Tomlinson 和 Roberts 提出澳洲版本的 Full House。這手冊只有紙書,我手邊這本是直接跟 Australia Council for the Arts 要的,但這邊好像有人掃成電子檔。

藝文團體如何利用售票資料規畫行銷宣傳計畫與顧客關係管理

回到要丟什麼因素進模型內。整理了手上的資料,列出以下幾項可能會影響購票行為的因素:

  1. 音樂會標題。
  2. 國內或國外節目。
  3. 節目類別:中樂、合唱、室內樂、獨奏、獨唱、獨唱獨奏、爵士樂、打擊樂、管絃樂、歌劇、大陸音樂團體、親子音樂、其他音樂等。
  4. 音樂會發生於星期幾。
  5. 下訂時間與音樂會相距日數:就像顧客行為研究將消費者分為「提前規劃類」和「當下決定類」,音樂會前早早就將票備妥的會員,以及音樂會當週,甚至當日才購票的會員,行為模式應該是不同的。
  6. 最近一次下訂時間:如果會員最後一次下訂時間距離現今已經很久,那麼資料集中該會員的交易紀錄,只能描繪該會員在久遠以前的行為模式。現在是否還是一樣呢?不得而知。
  7. 會員性別
  8. 會員下訂時年齡:以下訂時間與會員出生年月日計算得出。這是猜想在不同生命階段,會有不同行為模式。例如 25~45歲的會員,也許有小孩了,會傾向買親子節目,並減少原本自己會觀看的節目類別。(太常聽到「沒人帶小孩、無法看節目啊!」是不是?)
  9. 同一場次會買大量票券:不說身邊有些人會主動揪團票湊折扣,每次只買 1 張票和每次都買 2 張以上的會員,行為模式應該也不一樣吧。所以做了一個「團票組織人」,依照會員同場最多買多少張票分組。

除了音樂會標題以外(因為是文字,需要另外處理),其他 8 個可能因素,先一一計算跟目標值「有沒有購買」的相關性,接著從相關性高的因素,一項一項加入模型中,直到新加入的因素沒法提高模型表現為止。

把所有的因素轉換為類別變數後,以 Cramver’s V 克雷莫係數來看與「有沒有購買」的相關性

從上圖可以看到,與「有沒有購買」相關性最高的竟然是「訂購時間」?為了訓練深度學習模型,所以必須有「使用者沒有購買」的紀錄。這些製作出來的「沒有購買」的紀錄,在「訂購時間」中都屬於同一組,所以才會與「有沒有購買」完全符合。

依序把「訂購時間」、「最近下單時間」、「節目類別」、「星期」、「國內或國外節目」放入模型中,模型表現穩定提升。但是把「年齡」、「性別」、「團票組織人」放入模型時,則會讓模型表現下降,故不採用。

接著處理音樂會標題。文字無法直接輸入深度學習模型,因此要用某種方式把文字轉為向量。我選用的是 SentenceTransformer 這個別人預訓練好的多語言模型,將音樂會的標題轉為 512 維的向量。模型判斷意義越相近的標題,向量會越接近。

以上都準備好後,就可以建立、訓練深度學習模型了。最後提出的架構如下圖。這邊一樣不細講結構內容,有興趣的人請自己讀論文。不然這篇會沒完沒了,長到沒人想讀...... 貼架構圖只是想看起來很厲害。

最後提出的深度學習推薦系統架構

深度學習推薦系統的召回率是 0.55,比起傳統協同過濾模型的 0.49 要好上一些。分別看每個因素對召回率的影響,下訂日與音樂會相距日數影響最高,其次是音樂會標題。排第三的是最近下單時間,第四和五是節目類別、國內或國外節目星期的影響最小。

仔細看這幾個因素,發現一些有趣的地方,例如各類別音樂會的平均下訂日就有很大的差異。購買國外節目票券時,會員平均提早 59.3 日購票,國內節目則是 40.9日;親子類的節目,會員平均於 55.9 日前買票,室內樂 51.9 日、獨唱獨奏類則是 36.4 日、合唱 31.4 日,中樂節目平均 30.8 日前購票;星期五星期六的節目,會員平均於 49.2 日就買好票了、星期日會晚一點, 48 日、星期四 36.9 日、星期三 33.7 日、星期二 33.5 日、星期一的音樂會,則晚到 30.9 日前才購買。不過,因為我沒有各音樂會開票房的時間,也許只是有些類別的節目票房開得早、觀眾也習慣早一點買票,才促成這個結果。

這跟我們從經驗「感受」到的票房動態滿吻合的。國外節目票會比較早開始動;親子類經常一開票房就搶到翻;週末的節目會比較早買,也許是預期票會賣得比較好,或是週末不用考慮上班上課,行程好安排;相反來說,週間的節目可能會怕臨時要加班、上班上課太累等因素,所以會拖到比較晚才決定。

前面提過如果這個會員很久沒下訂了,資料集中描繪的是這個會員很久以前的樣貌,對於會員現在的喜好掌握度就會變差。下圖是分析會員最近下訂時間,以及他實際購買的節目,有沒有被選進推薦清單的比例。從圖中可以明顯看出,只要會員在一年內下過訂,超過六成的會員都會在推薦清單中看到自己有興趣的節目。但是只要超過一年沒下訂,這個比例直線下降。

最近一次下單時間各組會員實際購買節目確實選入推薦清單的比例

觀眾到底會不會跨類別聽音樂會呢?這是我自己超好奇的問題。因此做了這個文氏圖 (Venn diagram)。注意:文氏圖的交集面積跟交集人數無關喔!從圖中可以看出,各類別都有一定比例的會員「只看」那一類。但是,同時看「室內樂」和「獨唱獨奏」的人非常多,達3,159人。另外,也是存在那種各種類都看的人,共 11 人。附帶提一下,這個年代的音樂會類別是由票務承辦人自行判斷的,因此可能不是那麼準確。又,超過五類的文氏圖非常難判讀,所以只好捨去「其他音樂類」(包含原本就判為其他音樂類的節目,以及爵士、打擊、歌劇、管絃樂、大陸音樂團體等這五類場次很少的類別)。

會員跨類別欣賞音樂會的人數

接續跨類別這個話題,每個類別音樂會的訂單,下訂的人又是什麼狀況呢?以親子音樂為例,下圖的解讀方式是:親子音樂會的票券訂單,有 56.05% 是由「只看」親子音樂的會員下訂。這比例相當高,意思就是上圖中,曾購買親子音樂節目的人有 837人、其中只看親子音樂的 391人,貢獻了 56.05% 的訂單!如果加上看兩類節目的會員 (153 + 10 + 7 + 1 = 171 人),這 562 人(約為 837 的 67.1%)直接扛下 84.28% 的訂單。宣傳可以打到這票人應該就穩了。

會員跨類別訂單分析

另外一個值得關注的是室內樂和獨唱獨奏。前面提到,只看這兩類節目的會員非常多,所以不意外,這兩類音樂會的訂單,超過四成來自看兩種音樂會的會員。

前一篇:碩論:應用協同過濾技術於表演藝術售票系統(三)

下一篇:碩論:應用協同過濾技術於表演藝術售票系統(五)

--

--

Jamie Lin

好好路不走的資深表演藝術行政,正努力轉換跑道,打算做數據分析去。