TIFUKNN学习周记2(2022暑期项目)

2022.9.16

学习总结

继续读TIFUKNN论文。

TIFUKNN论文学习总结

文章提到了Vanilla RNN,这其实就是普通的RNN的意思。本文将对向量加法的研究重点放在普通RNN上,针对LSTM、GRU等变体可类似分析。

这里研究的是线性的向量加法,那么就把RNN表达式中的非线性的激活函数去掉,得到了如下表达式:

原始式子

递推分析ht,得到ht表达式:

递推分析

h0在这里是零向量,则:

最终式子

这是个简单高效的模型,但实际训练下来,损失又一次收敛于4附近。

至此,可以得出RNN很难通过学习捕获PIF,因为它无法有效地学习向量加法。

至此,研究重点转为寻求基于kNN(k-近邻)的NBR方法。

为了分辨拥有相同出现频率的不同物品,论文关注了时间动态性。论文认为,近期购买的物品更能引起重复购买,所以每一项物品的权值会随着时间的流逝而变小。

TIFUKNN的名字含义就是基于物品频度的用户画像k-近邻模型。这个方法旨在考虑用户相似度并依据邻居为用户进行预测。

为了同时体现衰减和保持(保持是为了体现出时间动态性——大时隙变化大,小时隙变化小),论文采用了一个巧妙方法:分级衰减权值。

这个分级衰减权值做了如下的事情:

  1. 将所有t个篮子等分成m组,若无法等分,让第一组缺几个篮子。
  2. 每个组内进行衰减,共用一个衰减权重rb。组内第一个篮子(最早的)乘以的rb的幂次最高,而最后一个篮子乘以rb的幂次最低。
  3. 将这些组所有向量最后的平均向量计算出来得到代表这一个个组的组向量。这些组向量按时间先后乘以同一个权重rg的高幂次到低幂次,从而在组与组之间也进行衰减,最终再对这些组向量计算得出平均向量u,作为该用户的向量表示。

分级衰减权值

得到u后,使用欧氏距离的远近衡量用户相似度。

欧氏距离如下:

欧氏距离

常见的“直角坐标系中两点距离公式”就是典型的欧氏距离。

最后,预测方面,记目标用户的u为ut,代表重复购买模式;记目标用户的邻居们的u的均值为un,代表协同购买模式。

最后的预测向量P如下:

预测向量P

可见这里用α平衡两个模式。最后推荐P向量中最大的s个分量所对应的s个物品作为下一个篮子的预测。

论文采用召回率(recall)和NDCG(归一化折损累计增益)作为评价指标。

其中NDCG,通俗了说就是按顺序衰减权重进行累加,得到的和与最理想的和(最大值)进行相除以归一化后的结果。可参考这篇文章:NDCG - 知乎 (zhihu.com)

论文引用两个基线。一个是数据集当中出现最多次的物品们组成的下一篮子;另一个是某一个给定用户过去买的最多的物品们(也就是PIF)作为下一篮子。

难题与解决思路

这个论文读下来,没有特别强调神经网络,而是强调k-近邻。这是我未接触过的领域,它的很多思想也是通过搜索、学习学到的。尤其,知乎专栏是个好东西。

心得收获

k-近邻方法是捕捉相似度的绝佳方法。本文的思想很简单,就是基于简单的物品频度而已,但是它的分析过程却不简单。它先展示神经网络处理物品频度(向量加法)的弊端,再以此为基础展现k-近邻的魅力。这是好的解决思路,也是好的分析思路,都值得学习借鉴。

下周计划

看完TIFUKNN论文,着手看代码。