這幾天我的主要任務是調試和運行之前根據論文《Learning Fair Representations for Recommendation: A Graph-based Perspective》所編寫的代碼,然后測試該模型的效果並記錄。以下分數據集描述、模型評估策略、超參數調整、測試結果記錄四個部分來描述我的工作。
數據集描述
MovieLens-1M 是一個推薦系統的基准數據集,這個數據集包括6040個用戶對於近4000部電影的近1百萬條評分信息。用戶具有三個類別型屬性,包括性別(2種類別),年齡(7種類別)和職位(21個類別)。效仿之前的基於公平性的推薦系統,我們在測試時按照9:1的比例划分訓練集和測試集。
Lastfm-360K是一個音樂推薦數據集,包括了來自音樂網站Last.fm的用戶對音樂制作人的評分。這個數據集包括大約36萬個用戶對29萬個音樂制作人的1700萬條評分信息。我們將用戶播放音樂的次數做為用戶的評分值。因為評分的值可能在一個大的范圍內,我們先對進行log對數變換,然后將評分規范化到1和5的范圍之間。用戶有着自己的用戶畫像,其信息包括性別屬性(2種類別)、年齡屬性(7種類別)。和許多經典推薦系統的數據划分策略一樣,我們將訓練集、驗證集、測試集划分為7:1:2。
模型評估策略
為了評估推薦系統的表現,我們使用均方根誤差(RMSE)。為了有效度量我們算法的公平性。我們計算了20%測試用戶的公平性表現。
因為二值型特征(比如性別)在各數據集上都不平衡,有着70%的男性和30%的女性,我們使用AUC度量來度量二分類的表現。對於多值型屬性,我們使用micro-averaged F1來測量。
AUC或者F1能夠被用於測量是否敏感的性別信息在表示學習的過程中被暴露。這個這個分類的度量值越小,則說明系統的公平性越好,泄露的敏感信息更少。
因為我復現的這篇論文中的模型是“上游模型不可知”的(也就是說為了增強其泛用性,將上游模型看做黑盒模型來處理),並且能夠被應用於許多多屬性的推薦場景,故我們按照不同的模型評價設定設計了許多測試。
首先,我們選擇了目前最先進的(state-of-the-art)圖卷積網絡(GCN)的推薦模型做為我們的基准模型。因為基於GCN的推薦模型最開始被設計成基於排名的損失函數,我們將其修改為基於評分的損失函數,並在圖卷積的過程中添加了更詳細的評分值來方便我們的設置。
超參數調整
在實際的模型實現中,我們選擇多層感知機(MLP)做為每個過濾器和判別器具體的架構,過濾器的embedding size被設置為\(D=64\)。
對於MovieLens數據集,每個過濾器網絡有3層,其中隱藏層的維度分別是128和64。判別器有4層,隱藏層的維度分別是16和8和4。
對於Lastfm-360K數據集,每個過濾器網絡有4層,隱藏層維度分別為128,64,32。每個判別器
有4層,隱藏層維度分別是16,8和4。
我們使用LeakyReLU做為激活函數。在MovieLens數據集上將平衡參數\(\lambda\)設置為0.1,在Lastfm-360K數據集上將平衡參數設置為0.2。所有目標函數中的參數都是可微的。我們使用Adam優化器,將初始學習率調整到0.005。
測試結果記錄
下面的兩張表是我們對模型的測試結果。在測試的過程中,為了簡單起見,我們采取了簡單的自中心圖結構表示,並用一階加權集成。根據模型的測試結果我們可以看出,GCN模型如果直接考慮敏感信息過濾器會將推薦系統的表現降低5%到10%,因為我們需要排除任何對於打分有用的隱向量維度,但是可能會暴露敏感信息。
在MovieLens-1M數據集上的訓練過程如下:
ga0--train-- 383.52958726882935
epoch:1 time:383.5 train_loss f:-192.2718 d:19.5616val_loss f:-192.8258 d:19.2919
val_rmse:0.9045 test_rmse:0.895
train data is end
ga0--train-- 360.9422023296356
epoch:2 time:360.9 train_loss f:-191.72 d:19.4652val_loss f:-200.0517 d:20.0125
val_rmse:0.7063 test_rmse:0.6894
train data is end
ga0--train-- 363.16574025154114
epoch:3 time:363.2 train_loss f:-200.8263 d:19.2499val_loss f:-203.8944 d:20.4799
val_rmse:2.8324 test_rmse:2.8068
train data is end
ga0--train-- 355.92360401153564
epoch:4 time:355.9 train_loss f:-189.3184 d:19.3741val_loss f:-180.7054 d:18.0778
ga0 clf_age/4
no model save path
val_rmse:0.7821 test_rmse:0.7787age f1:0.4683 0.4683 0.4683 0.4683
train data is end
ga0--train-- 356.7487156391144
epoch:5 time:356.7 train_loss f:-198.0661 d:19.8271val_loss f:-190.4692 d:19.0536
ga0 clf_age/5
no model save path
val_rmse:0.7407 test_rmse:0.7326age f1:0.469 0.469 0.469 0.469
對於不同的自中心結構的不同摘要網絡在數據集MovieLens-1M上的表現,這里的“常數”表示恆定的局部的函數聚集,“可學習的”表示參數可學習的聚集。
敏感屬性 | RMSE | AUC/F1 |
---|---|---|
性別 | 0.8553 | 0.8553 |
年齡 | 0.8553 | 0.3948 |
職業 | 0.8553 | 0.1556 |
在Lastfm-360K數據集上的訓練過程如下:
ga0
--------training processing-------
train data is end
ga0--train-- 380.44703578948975
epoch:0 time:380.4 train_loss f:-200.3726 d:19.7304val_loss f:-193.2152 d:19.3319
val_rmse:0.9439 test_rmse:0.9304
train data is end
ga0--train-- 383.52958726882935
epoch:1 time:383.5 train_loss f:-192.2718 d:19.5616val_loss f:-192.8258 d:19.2919
val_rmse:0.9045 test_rmse:0.895
train data is end
ga0--train-- 360.9422023296356
epoch:2 time:360.9 train_loss f:-191.72 d:19.4652val_loss f:-200.0517 d:20.0125
val_rmse:0.7063 test_rmse:0.6894
train data is end
ga0--train-- 363.16574025154114
epoch:3 time:363.2 train_loss f:-200.8263 d:19.2499val_loss f:-203.8944 d:20.4799
val_rmse:2.8324 test_rmse:2.8068
train data is end
ga0--train-- 355.92360401153564
epoch:4 time:355.9 train_loss f:-189.3184 d:19.3741val_loss f:-180.7054 d:18.0778
ga0 clf_age/4
no model save path
val_rmse:0.7821 test_rmse:0.7787age f1:0.4683 0.4683 0.4683 0.4683
train data is end
以下是在Lastfm-360K上的表現。
敏感屬性 | RMSE | AUC/F1 |
---|---|---|
性別 | 0.7358 | 0.5642 |
年齡 | 0.7358 | 0.4953 |
參考文獻
- [1] Wu L, Chen L, Shao P, et al. Learning Fair Representations for Recommendation: A Graph-based Perspective[C]//Proceedings of the Web Conference 2021. 2021: 2198-2208.