Amazon Personalize 個性化效果評估,從準確性到多樣性、新穎性和偶然性

亞馬遜雲開發者發表於2022-05-28

背景

Amazon Personalize 是一種機器學習服務,Amazon Personalize 使開發人員可以通過 Amazon.com 使用的機器學習 (ML) 技術來構建應用程式,從而提供實時個性化推薦,而無需 ML 專業知識。Amazon Pesonalize 在完成資料的檢查、特徵工程、超引數的選擇、訓練模型、模型優化、模型部署,同時提供模型評估指標,與個性化模型給終端使用者使用。然而針對推薦系統中我們關注多樣性缺乏有效的評估指標,尤其是,關於多樣性、新穎性和偶然性。我們提供了一種評估 Amazon Personalize 的方法。特別是關於多樣性、新穎性和偶然性。並以 MovieLens (by grouplens) 資料為例,逐步演示和演練。並提供完整的範例 amazon-personalize-model 於官方 Github aws-sample上。

Amazon Personalize

image.png

Amazon Personalize 是一種機器學習服務,可讓開發人員輕鬆地為使用自家應用程式的客戶提供個性化推薦。Amazon Personalize 是以在 Amazon.com 使用的相同技術為基礎,允許開發人員在應用程式中輕鬆構建複雜的個性化功能。為您的使用者,產生個性化的產品和內容推薦、定製的搜尋結果,或是利用推薦的結,來決定的促銷專案。

使用 Amazon Personalize,您就可以為根據使用者的購物歷史記錄使用產品推薦來個性化他們的主頁。在產品詳細資訊頁面上推薦類似的物品,以幫助使用者輕鬆找到他們需要的物品。幫助使用者快速找到相關的新產品、交易和促銷活動。輕鬆地對相關產品推薦重新排名,以推動切實的商業成果。 使用個性化產品推薦來個性化推送通知和營銷電子郵件,提高營銷傳播。或是更進一步的將 Amazon Personalize 與業務邏輯相結合,以建立高質量的購物車提升銷售和交叉銷售推薦。

模型訓練與評估

1、測試資料集

GroupLens Research 從 MovieLens 網站 https://movielens.org/ 收集並提供了評級資料集。資料集是在不同的時間段內收集的,具體取決於資料集的大小。此篇部落格使用 MovieLens 100K 電影收視率資料,用來評估 Amazon Personalize 模型的表現。資料內容包含:1000 名使用者對 1700 部電影的 100,000 次評分,於 1998 年 4 月釋出。

2、建立個性化解決方案和活動

等我們準備好測試資料集,即可參考範例 amazon-personalize-model https://github.com/aws-sample... 透過 Amazon Personalize SDK 與 API 做互動。我們將建立資料集組,並將使用者資料、專案資料和互動資料上傳到 Amazon S3。在這些資料集準備好後,Amazon Personalize 可以開始建立解決方案和活動以進行互動。您可以參考 02-personalize_ranking_movielens.ipynb https://github.com/aws-sample... 瞭解詳細資訊。

同時,我們會進行實驗,比如03-personalize_ranking_movielens-userpca-exp.ipynb https://github.com/aws-sample... 和04-personalize_ranking_movielens-no-user-baseline.ipynb https://github.com/aws-sample... 作為 baseline來比較效能。

3、模型評估

Amazon Pesonalize 在完成資料的檢查、特徵工程、超引數的選擇、訓練模型、模型最佳化、模型部署,同時提供四個模型評估指標,除此之外我們會基於使用者資料與商品的資料,評估額外的三個指標:多樣性、新穎性和偶然性。例如:我們總共有 A-Z 26 部電影,我們會依據模型推薦的結果,說明與計算各項評估指標:

覆蓋率(coverage)

覆蓋率告訴您 Amazon Personalize 推薦的結果,與資料集中的商品的總數的比例。如果我們希望 Amazon Personalize 推薦更多樣的商品,可以參考覆蓋率較高的模型。例如:26個電影中,A,B,C,D,E 出現在推薦結果中,覆蓋率為:5/26。

精準度(precision at K)

精準度告訴您模型的的前K的推薦結果中(5、10 或 25)中相關的結果所佔比例。Amazon Personalize 將根據前 K 項推薦中的相關建議數量(除以 K)來計算此指標,其中 K 為 5、 10或25。例如:A,B,C,D,E 出現在推薦結果中,其中B,D 為相關的推薦結果則精準度為2/5。

平均倒數排名(mean reciprocal rank)

平均倒數排名幫助我們評估模型排名最高的推薦結果出相關結果的評估度量。如果您對單個排名最高的推薦感興趣,那麼此指標很有用。例如:A,B,C,D,E 出現在推薦結果中,其中B,D 為相關的推薦結果,第二個推薦即是相關的推薦結果,倒數排名為1/2。取平均數則是上述倒數排名加總取平均。

歸一化貼現累積收益 (normalized discounted cumulative gain (NCDG) at K (5/10/25))

歸一化貼現累積收益,表示模型排名高的推薦結果的相關性,其中 K 是 5、10 或 25 個建議的樣本數量。此指標獎勵出現在列表頂部附近的相關專案,因為列表頂部通常會引起更多關注。Amazon Personalize 使用加權係數1/log(1+position),其中列表的頂部是位置1。例如:A,B,C,D,E 出現在推薦結果中,其中B,D 為相關的推薦結果,B加權係數計算結果為1/log(1+2),D 加權係數計算結果為1/log(1+4)。最理想的結果即是推薦的前兩位A,B皆為相關結果為1/log(1+1)+1/log(1+2)。把實際的推薦結果的加權係數計算加總後除以理想的推薦結果,即為歸一化貼現累積收益

多樣性(diversity)

多樣性表示模型產生的推薦內容在多樣性上的評估指標,當列表內的多樣性更高時,使用者往往對推薦更滿意。例如:A,B,C,D,E 出現在推薦結果中,如五部電影來自不同的導演,則在多樣性上會有較好的表現。

多樣性的計算公式主要反映推薦結果中,物件的相異程度,參考 semantic scholar 中 Diversity, Serendipity, Novelty, and Coverage中定義的公式如下 :

image.png

算式中,R 為推薦結果列表,|R| 為推薦結果列表的長度,dist(I, j) 為推薦系統開發者自定義的距離函式,描述兩個物件的相異性。多樣性的計算則是將推薦結果中的物件兩兩配對的距離加總,並且對推薦結果的長度進行正規化。

以電影推薦而言,自定義的距離函式可以是兩部電影的風格差異、演員差異、導演差異等等因素的總和分數,不同領域的距離函式定義需視該領域中的邏輯與使用者認知而定。在 MovieLens 的推薦系統中,我們將 dist(I, j) 的實作定義為電影類別的上的差距,在movielens 的電影類別有19類, 一部電影可屬於多個類別,將每部電影的類別onehot encoding後,再以manhattandistance計算兩兩電影之間的距離。

新穎性(novelty)

新穎性用來評估該推薦內容,在多大程度上對使用者來說是新鮮且未知的。例如,A,B,C,D,E出現在推薦結果之中,且都是熱門的電影,也許推薦本身是準確的,但因為是客戶明顯會觀看的電影。使用者可能覺得單調乏味,所以我們會希望推薦的結果能夠包含一些冷門的電影,給客戶新鮮感,也探索更多的可能性。

新穎性的公式主要反映推薦結果中,物件的冷門程度。參考 semantic scholar 中 Diversity, Serendipity, Novelty, and Coverage 的論文中定義的公式如下:

image.png

公式中 R 代表推薦的結果,p(.) 為開發者定義的熱門度函式,在熱門度分佈中,在長尾部位的物品在新穎性分數的貢獻度較高。在 MovieLens 資料集內,我們將 p(i) 定義為電影 i 的大於 3 的評等事件加總。

偶然性(serendipity)

偶然性用來評估該推薦結果有多讓被推薦的使用者感到驚喜,我們通常會希望推薦結果是相關的,但是同時具有偶然性。 例如,使用者過去都是看科幻電影,而A,B,C,D,E出現在推薦結果之中,A-D是科幻電影,而E是一位知名科幻電影的導演,去拍的劇情片,這也許給習慣看科幻電影的使用者一些新的發現,而這樣的推薦結果也給使用者一個驚喜。

偶然性的定義是希望能反映出在系統推薦結果中,如果物件不屬於使用者熟悉的物件種類,卻能獲得點選、播放等等正向反饋的比例,參考semantic scholar中Diversity,Serendipity,Novelty,and Coverage的論文,偶然性的定義如下 :

image.png

R 為推薦結果,Runexp 定義的是使用者不熟悉的品項,比方以上例而言,使用者過去都看科幻片,在結果中出現的愛情片就為使用者不熟悉的結果。Ruseful 在推薦結果中,使用者有正向反饋,如點選、觀影的物件。在式中的分母是取兩個集合的交集,亦即在不熟悉的結果中,又獲得使用者喜愛的推薦結果數量,除以推薦結果列表的長度即為偶然性。推薦系統開發者在定義 Runexp 及 Ruseful 時必需依照場景和領域知識調整。

在此示例中,我們定義了使用者對一個物品熟悉的定義 – 針對某個使用者 a, 將其評點過的電影 Ma 所屬的類別向量加總,將在每個類別維度上的總量高於全維度平均的類別,定義為使用者 a 喜愛的類別Ca,任一電影的類別Cm和Ca有交集,即定義為熟悉的電影。而有正向回饋的推薦結果則為,使用者最後有給三分以上評級的電影。

實驗結果

首先,使用 MovieLens 提供的 Schema 來建立 Amazon Personalize 的 Datasets group. 所得之結果為表 X 的 Baseline 欄位。

在 Diversity,Serendipity,Novelty,and Coverage https://www.semanticscholar.o... 中,提到調控 Diversity,Novelty 與 Serendipity 的方式,一部份是控制 content based recommendation 與 collaborative recommendation 的影響力。另一部分則是控制 popular 物件的影響程度

我們的實驗中,以上面兩個策略來設計實驗。

1、使用者資料增強

將使用者評點過的電影類別資訊,加入使用者資訊。針對某個使用者 a, 將其評點三分以上的電影 Ma 所屬的類別向量加總。在MovieLens的範例中,每個使用者至多會有 19 維度的向量來描述對電影類別的喜愛 (範例),由類別資訊加強電影內容的影響力。

附帶一提,由於Amazon Personalize 具有五個欄位的限制,如果將使用者Demographic的資訊一併加入,所需欄位會遠超過Amazon Personalize能容許的範圍,此時可以利用降維技術,如 PCA 等等,將使用者的資訊壓縮至Amazon Personalize 可以容許的範圍。

使用者資料增強後的實驗結果如表一中的 “Enhanced User Profile”, 我們可以觀察到,和Accuracy 相關的metrics 有下降的情況,但是Diversity 與Novelty增加了,另外,Serendipity有下降的趨勢,可以說明是因為推薦的結果更趨近使用者的喜好類別。

2、降低Popular物件的影響力

基於使用者行為開發出的推薦系統會傾向於推薦歡迎的物品,間接會影響多樣性、新穎性與偶然性。在這個實驗中我們定義一個電影 i 受歡迎的程度, pop(i) , 為對該電影評分大於 3 的使用者總數,將使用者 u 對電影 i 點評的評分 Su,i 對 pop(i) 進行正規化為 S’u,i。

在 Amazon Personalize 中,我們將使用者互動資料中的 event_value 設定成 S’u,i

在 Amazon Personalize 中,我們將使用者互動資料中的 event_value 設定成 S’u,i. 在Amazon Personalize 中是將使用者事件的有無作為優化目前,而不會將 event_value 作為優化目標;但 event_value 仍為模型的輸入值,藉此可影響推薦的結果。其結果在表一中的 Normalized by Popularity 欄位中顯示。其中可以看到多樣性、新穎性及偶然性比較起 baseline 版本有提升的效果,但是在準確度上的評量亦是下降的。

離線評量時,想增加多樣性、新穎性及偶然性有可能會伴隨準確度的下降,可能的原因之一是由於舊有資料的使用者行為會集中在受歡迎的物件上,此時準確度下降未必是對推薦系統不佳的事,要考慮應用場景再進行演算法的選取。

image.png

表一 實驗結果比較

總結

在實際使用 Amazon Personalize 的場景中,我們除了常見的覆蓋率、精準度、平均倒數排名、歸一化貼現累積收益等指標,我們也需要去評估模型是否能夠從多樣性、新穎性、偶然性等這些超越精準度的指標,來評估模型的推薦結果是否能讓使用者感到驚喜或滿意。此篇部落格,我們用 MovieLens 實驗資料資料,先根據論文的定義提供的公式,讓我們能夠量化上述指標,進而能夠評估與回答使用者在這些超越精準度的指標上 Amazon Personalize 模型的表現。如希望瞭解,評估模型與回測方法,與透過 Amazon SageMaker Notebook 實作公式的完整的範例,可以參考 amazon-personalize-model https://github.com/aws-sample... 於官方 Github aws-sample上的範例。

本篇作者

image.png

王祥瑞

亞馬遜雲科技解決方案架構師

主要基於亞馬遜雲科技的雲端計算方案架構的諮詢和設計,研究在雲上構建現代解決方案與微服務架構設計,尤其是在大資料和機器學習方面。通過全部12張的亞馬遜雲科技認證,擴充套件技術的深度與廣度。

image.png

Yi-An Chen

機器學習專家解決方案架構師

專注在機器學習和資料方面領域。2011 年畢業於臺灣大學資訊管理系博士,主修為資訊探勘。其後任職於臺灣雅虎及科科科技。在開發機器學習品及 AI應用上有十年以上的經驗,對於電商、多媒體及音樂推薦系統、多媒體容分析及自然語言處理都有品化的成功案例,並與學界合發多篇論文。致力於協同客解決匯入機器學習技術時所遭遇的挑戰,打造成功的機器學習應用。

相關文章