精读 An LSTM-Based Dynamic Customer Model for Fashion Recommendation 总结

研究成果

  • 根据商品信息生成了对应的低维嵌入(Fashion DNA);
  • 根据顾客的交易时间序列生成了对应的低维嵌入(style vector);
  • 避免了冷启动问题。

1. 前言

因为目前商品推荐存在很多的影响因素,归类为如下两大类:
在这里插入图片描述
结论: 基于时尚商品的推荐任务存在很多难点。

2. 研究内容

2.1 数据描述

数据描述

  1. 数据获取来源:Zalando’s online fashion store
  2. 一百万件商品的信息;
  3. 一百万条顾客订单信息(不包含退货情况);
商品信息 订单信息
图片信息:商品对应的缩略图(108×156) 唯一的匿名ID号
种类信息:(品牌、颜色、性别)卷积形成7k维的独热编码 所购买的商品
数字信息:厂家设置的零售价取对数 交易时间(以分钟为单位)
50种以上纤维组织成分对应的百分比(仅服装存在)

至于零售价取对数的原因1

在这里插入图片描述

1. 能够缩小数据的绝对数值,容易计算;
2. 取对数后,可以将乘法计算转换为加法计算。
3. 压缩了变量的尺度,消弱了模型的共线性、异方差性。
4. 使得数据趋于平稳,呈线性形态。

2.2 Fashion DNA的生成(商品表示)

  1. 通过将RGB图片数据输入到一个已训练好的残差神经网络;
  2. 将1中输出结果与种类信息、数字信息进行连接;
  3. 将2中结果输入到一个全连接层进行进一步转换。

Fashion DNA生成流程图

2.3 static Neuron network更新流程

  1. 把常客数据存放到一个二元矩阵Π当中;
  2. 每一个元素Π(v,k)∈{0,1},表示顾客k是否购买商品v;
  3. 然后对网络模型进行训练,使每件商品在这些客户上的平均交叉熵损失最小化。

 注:Sk表示顾客的风格喜好(style vector)

这里还是简单的说一下下图的含义:

1. 首先fDNA生成上一张图已经详细介绍过了,什么是Sk呢?
Sk在本文当中表示style vector,实际上可以理解为顾客k对商品的风格喜好情况,将其与Fashion DNA进行点积操作,将计算结果通过sigmoid函数映射到[0, 1]区间内,从而得到Pvk.
Pvk给我最直观的理解就是:顾客k购买物品v的概率,且Pvk∈[0, 1]
神经网络更新流程

2. 其次,矩阵Π表示什么?

如下表所示:

  • 行:k1、k2…表示一个个顾客;
  • 列:v1、v2…表示一件件商品;
  • 行列的交点属于{0, 1}, 例如:第一行第一列为1,表示顾客k1购买过商品v1;而第二行第一列为0,表示顾客k2没有购买过商品v1;
    2元购买矩阵

通过比较计算出的Pvk和矩阵的交叉熵损失,然后通过反向传播进行参数更新,逐步学习出顾客k对应的style vector

根据如下公式进行计算得到Pvk
在这里插入图片描述

  • Sk表示顾客的风格喜好
  • fv表示Fashion DNA
  • βk表示用户的购买意向
  • P vk表示顾客k的购买v商品的概率(可用来推荐)

2.4 static model小结

优点: 新添加商品的Fashion DNA只需要将该商品的图片、种类、数字等信息通过一层网络层而得到。
通过协同过滤算法2,完成新商品的推荐。
缺点: 缺少交易时间信息,从而默认顾客的风格喜好为静态不变的。

2.5 基于LSTM 的动态模型

由于这种生成Fashion DNA的形式能够很好地解决冷启动问题。因此在动态模型当中继续沿用这种Fashion DNA。
我们还希望保存顾客-商品耦合性Fashion DNA和style vector的点积”之间的关系;
因此,本文将style vector 随时间t进行改变而提出了动态模型,并称style vector 为dk(t)

与静态模型不同:静态模型采用商品作为输入,而LSTM网络模型是基于用户作为输入的。

对于顾客k以及购买次数i而言:
LSTM网络模型的输入组成:
(1)i-1次交易时的Fashion DNA f_(k,i−1);
(2)i-1次交易时的时间t_(k,i−1);
(3)i次交易时的时间t_(k,i);
(4)i-1次交易时的隐藏态单元m_(k,i−1)
LSTM网络模型的输出:
(1)通过一个全连接层输出这一刻的style vector ( d_(k,i)  )

注意:顾客第1次购买时,不存在历史记录;
将f_(k,0)  、 t_(k,0)  、m_(k,0)使用0进行填充。
因此, d_(k,1) 仅取决于t_(k,1)

如下图为基于LSTM单元的动态模型
在这里插入图片描述在这里插入图片描述

2.6 损失函数

使用3种不同的损失函数进行测试:
(1) 交叉熵损失函数 Lσ.
在这里插入图片描述
(2) softmax 函数 Lsmax
在这里插入图片描述
(3) sigmoid-rank loss Lrank
在这里插入图片描述
注: 在未被购买的商品中挑出n(n>0)个负样本这些商品对应的Fashion DNA为:
在这里插入图片描述

2.7 购买意愿(intent-of-purchase)

对每一位顾客k,定义一个新变量:intent-of-purchase( 购买意愿 ),用符号ipv,k(t)表示、
含义: 表示顾客k在t时刻对店内所有商品的购买意愿情况。

计算公式:
在这里插入图片描述
注: dk(t)表示t时刻顾客k对应的style vector;

3. 模型比较

3.1 Empirical baseline

Zalando的各种时尚商品存在很大的差异性,只有很少的商品存在大量的订单交易。
可以根据这种倾斜的分布实现一个简单的、非个性化的基线推荐功能;
根据商品的近期受欢迎程度预测该物品在未来的情况。

做法:
(1)收集评估区间前八天(2015年6月23日-30日)的商品销量,
(2)如果7月1日之后该商品仍然出售,则通过其销量统计来定义该商品的人气分。
(3)对于那些在评估期间重新进入库存的商品,将所有商品的平均销售数量作为初步得分。
(4)然后,将商品按受欢迎程度降序排列。

注意: 另外两个模型评估的数据是收集了(2015年7月1日-8日)共8天的销售数据进行训练得到排名

3.2 Static Fashion DNA model

做法:
(1)将 fν · Sk 得到的点积作为顾客 k 在 t 时刻对店内所有商品亲和性的一种评价度量;
(2)将对各个商品的亲和度对应的值进行降序排列,得出一个静态的商品排名。
在这里插入图片描述

3.3 Dynamic recommender system

做法:
(1)按照附2公式计算出的购买意愿 ipv,k(t)对店内商品进行排名;
在这里插入图片描述

3.4 实验结果

下图为三种不同模型的ROC曲线,其中:

  • 动态模型-蓝色曲线;
  • 静态模型-绿色曲线;
  • 经验模型-红色曲线。

ROC曲线图
表1

(1)根据表1中的AUC可知动态模型在整体效果上优于静态模型;
(2)与静态模型相比,动态模型参数更少,模型复杂度更低;
(3)动态模型和静态模型整体上都优于baseline;
(4)由于新商品的添加,冷启动问题的出现,使得三种方法对应的AUC分别变为了:
        baseline: 64.4%
        static:     83.3%
        dynamic:87.7%
相比右表,baseline准确性出现了急剧下滑
而采取Fashion DNA方式的static与dynamic模型均仅出现了很小的下滑。

  1. 在统计学中为什么要对变量取对数? ↩︎

  2. 冷启动问题——协同过滤(推荐系统) ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章