Recsys algorithms, 相关paper目录。
- LR (FTRL)
- DNN
- FM
- GBDT + LR
- CADE (Collaborative Denoising Auto-Encoder)
- DeepFM (tf serving 保存模型 / grpc/rest client 调用demo)
- xDeepFM
- DCN (Deep Cross Network)
- Deep & Wide
- DIN (Deep Interest Network)
- VAE-CF (Variational Autoencoders for Collaborative Filtering)
Algorithm | Paper AUC | Experiment AUC | Paper Loss | Experiment Loss |
---|---|---|---|---|
DeepFM | 0.8007 | 0.7888 | 0.4508 | 0.4608 |
xDeepFM | 0.8012 | 0.79793376 | 0.4493 | 0.45614 |
DCN | 0.7961 | 0.78843915 | 0.4508 | 0.46 |
DNN | 0.7991 | 0.7773 | 0.4408 | 0.6369 |
FM | 0.7900 | 0.7901 | 0.4592 | 0.4591 |
-
都采用criteo dataset, 共39个fields, 参考 data statistics。采用相同的数据预处理。embedding size 都选取16维。数据处理加转tfrecords都存在这里
-
主要比较不同算法的区别性。对于共有的dnn part,这里我都采用了100,100的二层结构。
-
都采用256 step size。训练总step 1w~5w不等,不同算法需要的迭代次数不同。有些算法容易过拟合,有些可以多跑几轮,取决于模型表达能力。
-
虽然没有经过预处理和调参,与paper中的结果去比较没有什么意义,纯属顺手列在这里,作为参考。
论文结果: AUC = 0.8007 logloss=0.4508
实验结果: AUC = 0.7888 logloss=0.4608
平均速度:global_step/sec: 12
论文结果:AUC = 0.8012 logloss = 0.4493
实验结果:AUC = 0.79793376 logloss = 0.45614
平均速度:global_step/sec: 14
论文结果:AUC = 0.7961 logloss=0.4508
实验结果:AUC = 0.78843915 logloss =0.46
平均速度:global_step/sec: 45
dcn 确实跑的挺快,主要优势在于xT * w 以后得到的是一维标量。计算量会比其他的网络明显小很多。训练速度几乎是deepfm,xdeepfm的3倍~4倍速度。更多细节看这里
论文结果: AUC = 0.7991 logloss=0.4408
实验结果: AUC = 0.7773 logloss=0.6369
平均速度:global_step/sec: 41
论文里的那些dnn似乎效果都不错。我这里的raw feature embedding 加上两层100,100的dnn差距很明显。在8k~1w步的时候就开始过拟合了。没有调参,区别还是很大的。
另一方面也体现出那些复杂模型的优势,不太需要特征处理,模型即使0调参,效果也不会如此之大。
论文结果: AUC = 0.7900 logloss=0.4592
实验结果: AUC = 0.7901 logloss=0.4591
平均速度:global_step/sec: 23
Algorithm | Paper AUC | Experiment AUC | Paper Loss | Experiment Loss |
---|---|---|---|---|
DIN | 0.8818 | 0.7447 | None | None |
- 采用Amazon Electro dataset, 负样本随机生成。
论文结果: AUC = 0.8818
实验结果: AUC = 0.7447
平均速度:global_step/sec: 124
论文中的AUC很高,与正负样本构造的选择很有关系。如果直接全局负采样,模型很容易跑出auc 0.9以上。 因为热门item一般只占全局中很少的一部分。一个解决方法是先把item按频率分桶,然后在生成对应正样本的负样本时,在相同频率的桶中抽取负样本。
Algorithm | Paper Recall@20 | Experiment Recall@20 | Paper NDCG@100 | Experiment NDCG@100 |
---|---|---|---|---|
Multi-VAE^{PR} | 0.395 | 0.3943 | 0.42478 | 0.426 |
Multi-DAE | 0.387 | 0.38739 | 0.419 | 0.41993 |
Logistic-VAE | 0.388 | 0.38821 | 0.419 | 0.41869 |
Multi-VAE^{PR} 修改了目标函数,加入了一个beta约束。当beta小于1时,先验的约束减小,拟合的权重变大。采用模拟退火算法来比较高效的得到beta的合适值。
另外采用multinomial分布来计算最大似然函数,而不是采用gaussian或者logistic,实验结果也确实证明在top n 排序中采用多项分布的结果更好一些。
原paper:Variational Inference: A Review for Statisticians
Variational Inference case study : GMM ref
code : vi_gmm.py
reparameterization trick
- e~N(0,1)
- z=mu+sigma*e