专栏首页Soul Joy Hub深度推荐模型——DIN [KDD 18][Alibaba]

深度推荐模型——DIN [KDD 18][Alibaba]

import tensorflow as tf
from tensorflow import keras
from utils import *

EPOCH = 10
BATCH_SIZE = 32
VEC_DIM = 10
DROPOUT_RATE = 0.5
HEAD_NUM = 4
HIDE_SIZE = 128
LAYER_NUM = 3
DNN_LAYERS = [200, 80]
data, max_user_id, max_item_id = load_data()
# 行为特征个数
BEHAVIOR_FEAT_NUM = 32
K = tf.keras.backend


def run():
    train_user_id_data, train_now_item_id_data, train_item_ids_data, train_rating_ids_data, train_y_data,\
    test_user_id_data, test_now_item_id_data, test_item_ids_data, test_rating_ids_data, test_y_data = get_all_data(data)

    user_id = keras.Input((1,))
    now_item_id = keras.Input((1,))
    items_ids = keras.Input((BEHAVIOR_FEAT_NUM,))
    ratings_ids = keras.Input((BEHAVIOR_FEAT_NUM,))

    usr_emb = keras.layers.Embedding(max_user_id + 1, VEC_DIM, input_length=1)(user_id)  # [-1,1,vec_dim]
    usr_emb = keras.layers.Flatten()(usr_emb)  # [-1,vec_dim]
    now_item_emb = keras.layers.Embedding(max_item_id + 1, VEC_DIM, input_length=1)(now_item_id)  # [-1,1,vec_dim]
    now_item_emb = keras.layers.Flatten()(now_item_emb)  # [-1,vec_dim]
    items_emb = keras.layers.Embedding(max_item_id + 1, VEC_DIM, input_length=BEHAVIOR_FEAT_NUM)(
        items_ids)  # [-1,BEA_FEAT_NUM,vec_dim]
    ratings_emb = keras.layers.Embedding(6, VEC_DIM, input_length=BEHAVIOR_FEAT_NUM)(
        ratings_ids)  # [-1,BEA_FEAT_NUM,vec_dim]
    behavior_emb = keras.layers.concatenate([items_emb, ratings_emb])  # [-1,BEA_FEAT_NUM, 2 * vec_dim]
    behavior_emb = tf.reduce_sum(behavior_emb, axis=1)  # [-1, 2 * vec_dim]

    deep = keras.layers.concatenate([usr_emb, now_item_emb, behavior_emb])

    for units in DNN_LAYERS:
        deep = keras.layers.Dense(units)(deep)
        deep = keras.layers.PReLU()(deep)
        deep = keras.layers.Dropout(DROPOUT_RATE)(deep)
    outputs = keras.layers.Dense(1, activation='sigmoid')(deep)

    model = keras.Model(inputs=[user_id, now_item_id, items_ids, ratings_ids], outputs=outputs)
    model.compile(loss='binary_crossentropy', optimizer=tf.train.AdamOptimizer(0.001), metrics=[keras.metrics.AUC()])
    tbCallBack = keras.callbacks.TensorBoard(log_dir='./logs',
                                             histogram_freq=0,
                                             write_graph=True,
                                             write_grads=True,
                                             write_images=True,
                                             embeddings_freq=0,
                                             embeddings_layer_names=None,
                                             embeddings_metadata=None)

    model.fit([train_user_id_data, train_now_item_id_data, train_item_ids_data, train_rating_ids_data], train_y_data,
              batch_size=BATCH_SIZE, epochs=EPOCH, verbose=2,
              validation_data=(
              [test_user_id_data, test_now_item_id_data, test_item_ids_data, test_rating_ids_data], test_y_data),
              callbacks=[tbCallBack])


run()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 20篇最值得一读的深度推荐系统与CTR预估论文

    微博上近日流传一个段子,“2020年曾是各大科幻片中遥远的未来,但是现在离这个遥远的未来也只有6个月时间了”。只是借此感慨一下2019年转瞬之间半年的时间已经过...

    AI科技大本营
  • KDD 2019高维稀疏数据上的深度学习Workshop论文汇总

    【导读】本文是“深度推荐系统”专栏的第九篇文章,这个系列将介绍在深度学习的强力驱动下,给推荐系统工业界所带来的最前沿的变化。本文简要总结一下阿里妈妈在 KDD ...

    AI科技大本营
  • 知道吗?BAT去年在KDD上作为第一单位发表了12篇文章!(内附每篇文章解读)

    如今,全世界每天都有几十亿人在使用计算机、平板电脑、手机和其它数字设备产生海量数据。各个行业和领域都已经被数据给渗透,数据已成为非常重要的生产因素的大数据时代,...

    量子位
  • 算法大佬看了流泪,为什么这么好的CTR预估总结之前没分享(下篇)

    在广告、推荐系统CTR预估问题上,早期的完全规则方法被过渡到以LR为代表的机器学习方法,为了充分发挥组合特征的价值,在相当长一段时间里,业界热衷于使用LR+人工...

    炼丹笔记
  • 谷歌、阿里们的杀手锏:3大领域,10大深度学习CTR模型演化图谱(附论文)

    今天我们一起回顾一下近3年来的所有主流深度学习CTR模型,也是我工作之余的知识总结,希望能帮大家梳理推荐系统、计算广告领域在深度学习方面的前沿进展。

    数据派THU
  • 谷歌、阿里们的杀手锏:三大领域,十大深度学习CTR模型演化图谱

    今天我们一起回顾一下近3年来的所有主流深度学习CTR模型,也是我工作之余的知识总结,希望能帮大家梳理推荐系统、计算广告领域在深度学习方面的前沿进展。

    AI科技大本营
  • 【Github】深度学习在推荐系统中的应用及论文小结

    https://github.com/chocoluffy/deep-recommender-system

    AINLP
  • 推荐系统与深度学习(十七)——DIN模型原理

    随着推荐算法逐渐的发展,大佬们的研究方向主要切分成了两部分:一个是对特征的调整,大家想尽办法挖掘特征中的隐含信息,寻找新的特征而且不断进行组合交叉,例如:...

    数据森麟
  • DIN!知识点啊朋友们!

    Deep Interest Network for Click-Through Rate Prediction(KDD2018)

    炼丹笔记

扫码关注云+社区

领取腾讯云代金券