AdaBRP
今天这篇看的是一篇ensemble方法和推荐系统结合的文章,提出一个叫AdaBPR(Adaptive Boosting Personalized Ranking),这篇文章前面的Introduction和related work都写不错,还对我一直不太明白的point-wise、pair-wise和list-wise三种基于模型的方法做出了解释,并给出了一系列参考文献:
- point-wise就是将所有观测到的样本作为训练的正例,将缺失的样本作为负例,也有别的评价标准,主要想法就是差别对待每一个样本;
- pair-wise就是相比于未交互过的物品,用户更偏好于交互过的物品,总的来说就是比较的看待有无交互过的物品;
- list-wise就是针对一个损失函数,如需要排序的roc、auc,来优化总体相对的排序;
Related Work中作者还回顾了一些用ensemble做推荐系统的例子,有时间要好好读一下,先列在下面。
- Novel boosting frameworks to improve the performance of collaborative filtering
- Gradient boosting factorization machines
- Adamf: Adaptive boosting matrix factorization for recommender system
作者本篇文章的主要思想就是去优化AUC或者是MAP \[ \text{AUC}=\frac{1}{|U|}\sum_{u\in U}\frac{1}{|V_u^+|}\sum_{i\in V_u^+}\frac{1}{V_u^-}\sum_{j\in V_u^-}\mathbb{I}(\pi_{ui}<\pi_{uj}) \]
\[ \text{MAP}=\frac{1}{|U|}\sum_{u\in U}\frac{\sum_{i\in V_u^+}\frac{\sum_{j\in V}\mathbb{I}(y_{uj}>0)\mathbb{I}(\pi_{ui}<\pi_{uj})}{\pi_{ui}}}{|V^+_u|} \]
用\(E[\pi(u,i,f)]\) 来表示交互样本\((u,i)\) 的排序准确度,\(\pi(u,i,f)\) 是排序位置,由模型\(f\) 决定,令\(\beta_u=\frac{1}{|V_u^+|}\) 则 \[ \frac{1}{|U|}\sum_{u\in U}\frac{1}{|V_u^+|}\sum_{i\in V_u^+}E[\pi(u,i,f)]\propto\sum_{(u,i)\in \mathcal{D}}\beta_uE[\pi(u,i,f)] \] 为了最大化这个排序正确率,提出损失函数为: \[ \min_{f\in\mathcal{F}}\sum_{(u,i)\in \mathcal{D}}\beta_u\{1-E[\pi(u,i,f)]\} \] 因为该损失函数不可导不可微不连续,所以我们选择一个性质好的,指数损失函数 \[ \min_{f\in\mathcal{F}}\sum_{(u,i)\in \mathcal{D}}\beta_u\exp\{-E[\pi(u,i,f)]\} \] 然后根据AdaBoost的方法,令 \[ f=\sum^T_{t=1}\alpha_th^{(t)} \] 采用AdaBoost的方法来优化,其中每一代的基学习器都是一个矩阵分解模型,每一代根据加权的AUC来训练矩阵分解模型和生成新的数据分布。
My view
总体来说,很impressive的work,但我感觉不管是前人用的CF-based还是这次MF-based,作为基学习器,都闲得过于强大了,之后一段时间内我会在这些模型的基础上做一些自己的尝试,具体idea保密哈哈哈。