精读 An LSTM-Based Dynamic Customer Model for Fashion Recommendation 总结
- 研究成果
- 1. 前言
- 2. 研究内容
-
- 2.1 数据描述
- 2.2 Fashion DNA的生成(商品表示)
- 2.3 static Neuron network更新流程
- 2.4 static model小结
- 2.5 基于LSTM 的动态模型
- 2.6 损失函数
- 2.7 购买意愿(intent-of-purchase)
- 3. 模型比较
-
- 3.1 Empirical baseline
- 3.2 Static Fashion DNA model
- 3.3 Dynamic recommender system
- 3.4 实验结果
研究成果
- 根据商品信息生成了对应的低维嵌入(Fashion DNA);
- 根据顾客的交易时间序列生成了对应的低维嵌入(style vector);
- 避免了冷启动问题。
1. 前言
因为目前商品推荐存在很多的影响因素,归类为如下两大类:
结论: 基于时尚商品的推荐任务存在很多难点。
2. 研究内容
2.1 数据描述
数据描述
- 数据获取来源:Zalando’s online fashion store
- 一百万件商品的信息;
- 一百万条顾客订单信息(不包含退货情况);
商品信息 | 订单信息 |
---|---|
图片信息:商品对应的缩略图(108×156) | 唯一的匿名ID号 |
种类信息:(品牌、颜色、性别)卷积形成7k维的独热编码 | 所购买的商品 |
数字信息:厂家设置的零售价取对数 | 交易时间(以分钟为单位) |
50种以上纤维组织成分对应的百分比(仅服装存在) |
至于零售价取对数的原因1:
1. 能够缩小数据的绝对数值,容易计算;
2. 取对数后,可以将乘法计算转换为加法计算。
3. 压缩了变量的尺度,消弱了模型的共线性、异方差性。
4. 使得数据趋于平稳,呈线性形态。
2.2 Fashion DNA的生成(商品表示)
- 通过将RGB图片数据输入到一个已训练好的残差神经网络;
- 将1中输出结果与种类信息、数字信息进行连接;
- 将2中结果输入到一个全连接层进行进一步转换。
2.3 static Neuron network更新流程
- 把常客数据存放到一个二元矩阵Π当中;
- 每一个元素Π(v,k)∈{0,1},表示顾客k是否购买商品v;
- 然后对网络模型进行训练,使每件商品在这些客户上的平均交叉熵损失最小化。
注: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;
通过比较计算出的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曲线,其中:
- 动态模型-蓝色曲线;
- 静态模型-绿色曲线;
- 经验模型-红色曲线。
(1)根据表1中的AUC可知动态模型在整体效果上优于静态模型;
(2)与静态模型相比,动态模型参数更少,模型复杂度更低;
(3)动态模型和静态模型整体上都优于baseline;
(4)由于新商品的添加,冷启动问题的出现,使得三种方法对应的AUC分别变为了:baseline: 64.4%static: 83.3%dynamic:87.7%
相比右表,baseline准确性出现了急剧下滑
而采取Fashion DNA方式的static与dynamic模型均仅出现了很小的下滑。
在统计学中为什么要对变量取对数? ??
冷启动问题——协同过滤(推荐系统) ??