Explainable Recommendation with Comparative Constraints on Product Aspects
概
现有的推荐系统往往只能给出一系列的简单的推荐结果, 作为用户而言, 只能被动地接受. 本文希望做到这样一个结果:
[recommended item] is better at [an aspect] than [reference item], but worse at [another aspect].
举个例子, 某个用户在之前买过一个手机 A (reference item), 然后推荐系统推荐给了新款的手机 B (recommended item), 相较而言, 新款手机的拍照性能更好, 但是缺点是更加厚重.
如此一来, 用户能够获得更多的信息, 也对推荐结果能有更好的斟酌和判断. 很有意思的题材, 但是感觉本文的方法过于复杂.
符号说明
- \(\mathcal{U}\), users;
- \(\mathcal{P}\), items;
- \(\mathcal{R}\), 打分;
- \(\mathcal{A}\), aspects (产品的各项指标);
- \(\mathcal{O}\), 用户的一些评价;
预备
- 用户 \(i \in \mathcal{U}\) 会对某个产品 \(j \in \mathcal{P}\) 进行打分 \(r_{ij}\), 与此同时, 可能会留下一些关于 \(j\) 产品素质 \(a \in \mathcal{A}\) 的一些评论 \(o \in \mathcal{O}\), 该评论会透露出或赞许 (\(\rho = +1\)) 或 否定 (\(\rho = -1\)) 的情感;
- 此外, 本文假设, 我们知道每个用户的打分 (购买) 次序 \(S_i\), 比如 \(j \prec j' \in S_i\), 表示用户 \(i\) 先购买 \(j\) 再购买 \(j'\). 而作者这么做的原因往往是因为后者在某些素质 \(a\) 上胜过了前者 (问: 那岂非保证是同一类物品吗?).
- 作者希望在这些条件的假设下, 进行 top-N 的推荐.
注: 关于 1 中的数据收集, 作者利用 opinion lexicon [12] 和 aspect lexicon (Microsoft Concept Graph) 获得;
注: 关于 2 中的假设的合理性, 作者进行了实验论证, 如下图所示:
- Figure 1: 可以发现越是新颖的产品所获得的评分越高, 即受欢迎, 这大抵是因为它们在某些素质 \(a\) 上比之老产品有优势;
- Figure 2: 一个产品发布后, 整体的平均是逐渐下降的. 当然也有部分产品始终是受欢迎的 (Active), 作者认为这也都是因为其存在某些不可替代的属性 \(a\).
Subjective Aspect-Level Quality
-
定义 \(q_{ijk} \in Q \in \mathbb{R}^{|\mathcal{U}| \times |\mathcal{P}| \times |\mathcal{A}|}\) 为用户 \(i\) 对于产品 \(j\) 在素质 (aspect) \(a\) 上的一个'打分' (score), 作者用 \(\rho\) 进行估计:
\[q_{ijk} = \left \{ \begin{array}{ll} 0 & \text{if aspect } k \text{ is not mentioned when } i \text{ reviews } j,\\ 1 + \frac{N - 1}{1 + e^{-s_{ijk}}} & \text{otherwise}. \end{array} \right . \]其中 \(s_{ijk} := \sum_{o \in \mathcal{O}_{ijk}} \rho(o)\), 即表示从所有用户 \(i\) 关于产品 \(j\) 在素质 \(k\) 方面的一个评价的总和, 评价越高 \(q_{ijk}\) 也越大;
-
作者用 \(\hat{q}_{ijk}\) 来拟合 \(q_{ijk}\), 同时加上条件: 若 \(j \prec j'\), 则有
\[q_{ijk} < q_{ij'k}. \]即假设用户 \(i\) 后选择 \(j'\) 的原因是他认为 \(j'\) 比值 \(j\) 在更方面的素质更优秀;
-
其损失函数为:
\[\mathcal{L}_{\text{COMPARER}_{sub}} = -\sum_{i \in \mathcal{U}} \sum_{(j \prec j') \in S_i} \sum_{\{k|q_{ijk} < q_{ij'k}\}} \ln \sigma(\hat{q}_{ij'k} - \hat{q}_{ijk}); \] -
特别地, 定义 \(\hat{q}_{ij (|\mathcal{A}| + 1)} = \hat{r}_{ij}\) 用以估计 \(r_{ij}\), 额外添加如下损失:
\[\mathcal{L}_{\text{MTER}} = \|\hat{Q} - Q\| - \lambda_b \sum_{i \in \mathcal{U}} \sum_{r_{ij} > r_{il}} \ln \sigma(\hat{q}_{ij(|\mathcal{A} + 1|)} - \hat{q}_{il(|\mathcal{A} + 1|)}); \] -
最后的损失为:
\[\mathcal{L} = \mathcal{L}_{\text{MTER}} + \lambda_d \mathcal{L}_{\text{COMPARER}_{sub}}; \] -
最后通过如下的 score 进行排序:
\[\text{RankingScore}_{ij} = \alpha \cdot \frac{\sum_{k \in C_{ij}}\hat{q}_{ijk}}{|C_{ij}|} + (1 - \alpha) \hat{r}_{ij}, \]其中 \(C_{ij}\) 是 \(i\) 对 \(j\) 最感兴趣的 (即得分最高的) 几个 aspects 的集合.
注: 总不能是直接拟合 \(Q\) 吧? 应该是和下面一样有隐变量吧 ?
Objective Aspect-Level Quality
- 定义 \(Q' \in \mathbb{R}^{|\mathcal{P}| \times |\mathcal{A}|}\) 为\[q_{jk}' = \left \{ \begin{array}{ll} 0 & \text{if aspect } k \text{ is not discussed in reviews of } j,\\ 1 + \frac{N - 1}{1 + e^{-s_{jk}'}} & \text{otherwise}. \end{array} \right . \]其中 \(s_{jk}' = \sum_i s_{ijk}\). 显然 \(q_{jk}'\) 代表了产品 \(j\) 在素质 \(k\) 方面的一个总体的客观评价;
-
类似地, 我们用 \(\hat{Q}'\) 进行拟合:
\[\mathcal{L}_{\text{COMPARER}_{obj}} = -\sum_{\{(j, j'): j, j' \in S_i, \exist S_i\}} (1 + \ln (c_{jj'}')) \sum_{\{k|q_{jk}' < q_{j'k}'\}} \ln \sigma(\hat{q}_{j'k}' - \hat{q}_{jk}'), \]其中 \(c_{jj'}'\) 支持 \(j \prec j'\) 的用户数量;
-
同样定义 \(X \in \mathbb{R}^{|\mathcal{U}| \times |\mathcal{A}|}\):
\[x_{ik} = \left \{ \begin{array}{ll} 0 & \text{if aspect } k \text{ is not mentioned by } i,\\ 1 + (N - 1) (\frac{2}{1 + e^{-s_{jk}'}} - 1) & \text{otherwise}. \end{array} \right . \]其中 \(t_{ik}\) 为用户 \(i\) 对于 \(k\) 的提及的次数, 显然 \(X\) 表示了 用户对某个素质 \(k\) 的关心程度;
-
推荐损失 (实在没看懂啥结构, \(\eta\) 难不成是矩阵?)
-
最后的损失
\[\mathcal{L} = \mathcal{L}_{\text{EFM}} + \lambda_d \mathcal{L}_{\text{COMPARER}_{obj}}; \] -
最后的排序采用如下的 score:
\[\text{RankingScore}_{ij} = \alpha \cdot \frac{\sum_{k \in C_{ij}} \hat{x}_{ik} \hat{q}_{ijk}}{|C_{ij}| N} + (1 - \alpha) \hat{r}_{ij}. \]
注: 对于上面一些奇怪指标, 可以看看 here, 其实二者应该都是从 [34, 38] 中借鉴来的.