From 3492ad3741bc7c5d6fcb165bc38079f5f5781f7d Mon Sep 17 00:00:00 2001 From: Zichao Li <30993864+codewithzichao@users.noreply.github.com> Date: Sun, 21 Feb 2021 16:12:31 +0800 Subject: [PATCH 1/2] Implement the BST model. (#327) * Implement the BST model. --- README.md | 1 + deepctr/__init__.py | 8 +-- deepctr/layers/sequence.py | 38 ++++++++++--- deepctr/models/__init__.py | 3 +- deepctr/models/bst.py | 106 +++++++++++++++++++++++++++++++++++++ tests/models/BST_test.py | 75 ++++++++++++++++++++++++++ 6 files changed, 218 insertions(+), 13 deletions(-) create mode 100644 deepctr/models/bst.py create mode 100644 tests/models/BST_test.py diff --git a/README.md b/README.md index 48e8e81f..43ad2d68 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ Let's [**Get Started!**](https://deepctr-doc.readthedocs.io/en/latest/Quick-Star | Deep Session Interest Network | [IJCAI 2019][Deep Session Interest Network for Click-Through Rate Prediction ](https://arxiv.org/abs/1905.06482) | | FiBiNET | [RecSys 2019][FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction](https://arxiv.org/pdf/1905.09433.pdf) | | FLEN | [arxiv 2019][FLEN: Leveraging Field for Scalable CTR Prediction](https://arxiv.org/pdf/1911.04690.pdf) | +| BST | [DLP-KDD 2019][Behavior sequence transformer for e-commerce recommendation in Alibaba](https://arxiv.org/pdf/1905.06874.pdf) | | DCN V2 | [arxiv 2020][DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-scale Learning to Rank Systems](https://arxiv.org/abs/2008.13535) | ## Citation diff --git a/deepctr/__init__.py b/deepctr/__init__.py index b268aaeb..50db6f7a 100644 --- a/deepctr/__init__.py +++ b/deepctr/__init__.py @@ -1,4 +1,4 @@ -from .utils import check_version - -__version__ = '0.8.3' -check_version(__version__) +from .utils import check_version + +__version__ = '0.8.3' +check_version(__version__) diff --git a/deepctr/layers/sequence.py b/deepctr/layers/sequence.py index 3c767a07..2c490428 100644 --- a/deepctr/layers/sequence.py +++ b/deepctr/layers/sequence.py @@ -79,7 +79,7 @@ def call(self, seq_value_len_list, mask=None, **kwargs): mask = tf.tile(mask, [1, 1, embedding_size]) if self.mode == "max": - hist = uiseq_embed_list - (1-mask) * 1e9 + hist = uiseq_embed_list - (1 - mask) * 1e9 return reduce_max(hist, 1, keep_dims=True) hist = reduce_sum(uiseq_embed_list * mask, 1, keep_dims=False) @@ -436,6 +436,8 @@ class Transformer(Layer): - **blinding**: bool. Whether or not use blinding. - **seed**: A Python integer to use as random seed. - **supports_masking**:bool. Whether or not support masking. + - **attention_type**: str, Type of attention, the value must be one of ["scaled_dot_product","additive"]. + - **output_type**: str or None. Whether or not use average/sum pooling for output. References - [Vaswani, Ashish, et al. "Attention is all you need." Advances in Neural Information Processing Systems. 2017.](https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf) @@ -443,7 +445,7 @@ class Transformer(Layer): def __init__(self, att_embedding_size=1, head_num=8, dropout_rate=0.0, use_positional_encoding=True, use_res=True, use_feed_forward=True, use_layer_norm=False, blinding=True, seed=1024, supports_masking=False, - **kwargs): + attention_type="scaled_dot_product", output_type="mean", **kwargs): if head_num <= 0: raise ValueError('head_num must be a int > 0') self.att_embedding_size = att_embedding_size @@ -456,6 +458,8 @@ def __init__(self, att_embedding_size=1, head_num=8, dropout_rate=0.0, use_posit self.dropout_rate = dropout_rate self.use_layer_norm = use_layer_norm self.blinding = blinding + self.attention_type = attention_type + self.output_type = output_type super(Transformer, self).__init__(**kwargs) self.supports_masking = supports_masking @@ -464,7 +468,7 @@ def build(self, input_shape): if self.num_units != embedding_size: raise ValueError( "att_embedding_size * head_num must equal the last dimension size of inputs,got %d * %d != %d" % ( - self.att_embedding_size, self.head_num, embedding_size)) + self.att_embedding_size, self.head_num, embedding_size)) self.seq_len_max = int(input_shape[0][-2]) self.W_Query = self.add_weight(name='query', shape=[embedding_size, self.att_embedding_size * self.head_num], dtype=tf.float32, @@ -475,6 +479,11 @@ def build(self, input_shape): self.W_Value = self.add_weight(name='value', shape=[embedding_size, self.att_embedding_size * self.head_num], dtype=tf.float32, initializer=tf.keras.initializers.TruncatedNormal(seed=self.seed + 2)) + if self.attention_type == "additive": + self.b = self.add_weight('b', shape=[self.att_embedding_size], dtype=tf.float32, + initializer=tf.keras.initializers.glorot_uniform(seed=self.seed)) + self.v = self.add_weight('v', shape=[self.att_embedding_size], dtype=tf.float32, + initializer=tf.keras.initializers.glorot_uniform(seed=self.seed)) # if self.use_res: # self.W_Res = self.add_weight(name='res', shape=[embedding_size, self.att_embedding_size * self.head_num], dtype=tf.float32, # initializer=tf.keras.initializers.TruncatedNormal(seed=self.seed)) @@ -525,10 +534,18 @@ def call(self, inputs, mask=None, training=None, **kwargs): keys = tf.concat(tf.split(keys, self.head_num, axis=2), axis=0) values = tf.concat(tf.split(values, self.head_num, axis=2), axis=0) - # head_num*None T_q T_k - outputs = tf.matmul(querys, keys, transpose_b=True) + if self.attention_type == "scaled_dot_product": + # head_num*None T_q T_k + outputs = tf.matmul(querys, keys, transpose_b=True) - outputs = outputs / (keys.get_shape().as_list()[-1] ** 0.5) + outputs = outputs / (keys.get_shape().as_list()[-1] ** 0.5) + elif self.attention_type == "additive": + querys_reshaped = tf.expand_dims(querys, axis=-2) + keys_reshaped = tf.expand_dims(keys, axis=-3) + outputs = tf.tanh(tf.nn.bias_add(querys_reshaped + keys_reshaped, self.b)) + outputs = tf.squeeze(tf.tensordot(outputs, tf.expand_dims(self.v, axis=-1), axes=[-1, 0]), axis=-1) + else: + NotImplementedError key_masks = tf.tile(key_masks, [self.head_num, 1]) @@ -579,7 +596,12 @@ def call(self, inputs, mask=None, training=None, **kwargs): if self.use_layer_norm: result = self.ln(result) - return reduce_mean(result, axis=1, keep_dims=True) + if self.output_type == "mean": + return reduce_mean(result, axis=1, keep_dims=True) + elif self.output_type == "sum": + return reduce_sum(result, axis=1, keep_dims=True) + else: + return result def compute_output_shape(self, input_shape): @@ -593,7 +615,7 @@ def get_config(self, ): 'dropout_rate': self.dropout_rate, 'use_res': self.use_res, 'use_positional_encoding': self.use_positional_encoding, 'use_feed_forward': self.use_feed_forward, 'use_layer_norm': self.use_layer_norm, 'seed': self.seed, 'supports_masking': self.supports_masking, - 'blinding': self.blinding} + 'blinding': self.blinding, 'attention_type': self.attention_type, 'output_type': self.output_type} base_config = super(Transformer, self).get_config() return dict(list(base_config.items()) + list(config.items())) diff --git a/deepctr/models/__init__.py b/deepctr/models/__init__.py index 9e77e40d..217b357b 100644 --- a/deepctr/models/__init__.py +++ b/deepctr/models/__init__.py @@ -18,6 +18,7 @@ from .fibinet import FiBiNET from .flen import FLEN from .fwfm import FwFM +from .bst import BST __all__ = ["AFM", "CCPM", "DCN", "DCNMix", "MLR", "DeepFM", "MLR", "NFM", "DIN", "DIEN", "FNN", "PNN", - "WDL", "xDeepFM", "AutoInt", "ONN", "FGCNN", "DSIN", "FiBiNET", 'FLEN', "FwFM"] + "WDL", "xDeepFM", "AutoInt", "ONN", "FGCNN", "DSIN", "FiBiNET", 'FLEN', "FwFM", "BST"] diff --git a/deepctr/models/bst.py b/deepctr/models/bst.py new file mode 100644 index 00000000..89818f12 --- /dev/null +++ b/deepctr/models/bst.py @@ -0,0 +1,106 @@ +# -*- coding:utf-8 -*- +""" +Author: + Zichao Li, 2843656167@qq.com + +Reference: + Qiwei Chen, Huan Zhao, Wei Li, Pipei Huang, and Wenwu Ou. 2019. Behavior sequence transformer for e-commerce recommendation in Alibaba. In Proceedings of the 1st International Workshop on Deep Learning Practice for High-Dimensional Sparse Data (DLP-KDD '19). Association for Computing Machinery, New York, NY, USA, Article 12, 1–4. DOI:https://doi.org/10.1145/3326937.3341261 +""" + +import tensorflow as tf +from tensorflow.python.keras.layers import (Dense, LeakyReLU, Flatten) +from ..feature_column import SparseFeat, VarLenSparseFeat, DenseFeat, build_input_features +from ..inputs import get_varlen_pooling_list, create_embedding_matrix, embedding_lookup, varlen_embedding_lookup, \ + get_dense_input +from ..layers.core import DNN, PredictionLayer +from ..layers.sequence import Transformer, AttentionSequencePoolingLayer +from ..layers.utils import concat_func, combined_dnn_input + + +def BST(dnn_feature_columns, history_feature_list, transformer_num=1, att_head_num=8, + use_bn=False, dnn_hidden_units=(1024, 512, 256), dnn_activation='relu', l2_reg_dnn=0, + l2_reg_embedding=1e-6, dnn_dropout=0.0, seed=1024, task='binary'): + """Instantiates the BST architecture. + + :param dnn_feature_columns: An iterable containing all the features used by deep part of the model. + :param history_feature_list: list, to indicate sequence sparse field. + :param transformer_num: int, the number of transformer layer. + :param att_head_num: int, the number of heads in multi-head self attention. + :param use_bn: bool. Whether use BatchNormalization before activation or not in deep net + :param dnn_hidden_units: list,list of positive integer or empty list, the layer number and units in each layer of DNN + :param dnn_activation: Activation function to use in DNN + :param l2_reg_dnn: float. L2 regularizer strength applied to DNN + :param l2_reg_embedding: float. L2 regularizer strength applied to embedding vector + :param dnn_dropout: float in [0,1), the probability we will drop out a given DNN coordinate. + :param seed: integer ,to use as random seed. + :param task: str, ``"binary"`` for binary logloss or ``"regression"`` for regression loss + :return: A Keras model instance. + + """ + + features = build_input_features(dnn_feature_columns) + inputs_list = list(features.values()) + + user_behavior_length = features["seq_length"] + + sparse_feature_columns = list( + filter(lambda x: isinstance(x, SparseFeat), dnn_feature_columns)) if dnn_feature_columns else [] + dense_feature_columns = list( + filter(lambda x: isinstance(x, DenseFeat), dnn_feature_columns)) if dnn_feature_columns else [] + varlen_sparse_feature_columns = list( + filter(lambda x: isinstance(x, VarLenSparseFeat), dnn_feature_columns)) if dnn_feature_columns else [] + + history_feature_columns = [] + sparse_varlen_feature_columns = [] + history_fc_names = list(map(lambda x: "hist_" + x, history_feature_list)) + + for fc in varlen_sparse_feature_columns: + feature_name = fc.name + if feature_name in history_fc_names: + history_feature_columns.append(fc) + else: + sparse_varlen_feature_columns.append(fc) + + embedding_dict = create_embedding_matrix(dnn_feature_columns, l2_reg_embedding, seed, prefix="", + seq_mask_zero=True) + + query_emb_list = embedding_lookup(embedding_dict, features, sparse_feature_columns, + return_feat_list=history_feature_list, to_list=True) + hist_emb_list = embedding_lookup(embedding_dict, features, history_feature_columns, + return_feat_list=history_fc_names, to_list=True) + dnn_input_emb_list = embedding_lookup(embedding_dict, features, sparse_feature_columns, + mask_feat_list=history_feature_list, to_list=True) + dense_value_list = get_dense_input(features, dense_feature_columns) + sequence_embed_dict = varlen_embedding_lookup(embedding_dict, features, sparse_varlen_feature_columns) + sequence_embed_list = get_varlen_pooling_list(sequence_embed_dict, features, sparse_varlen_feature_columns, + to_list=True) + + dnn_input_emb_list += sequence_embed_list + query_emb = concat_func(query_emb_list) + deep_input_emb = concat_func(dnn_input_emb_list) + hist_emb = concat_func(hist_emb_list) + + transformer_output = hist_emb + for i in range(transformer_num): + att_embedding_size = transformer_output.get_shape().as_list()[-1] // att_head_num + transformer_layer = Transformer(att_embedding_size=att_embedding_size, head_num=att_head_num, + dropout_rate=dnn_dropout, use_positional_encoding=True,use_res=True, + use_feed_forward=True, use_layer_norm=True,blinding=False, seed=seed, + supports_masking=False,output_type=None) + transformer_output = transformer_layer([transformer_output, transformer_output, + user_behavior_length, user_behavior_length]) + + attn_output = AttentionSequencePoolingLayer(att_hidden_units=(64, 16), weight_normalization=True, + supports_masking=False)([query_emb, transformer_output, + user_behavior_length]) + deep_input_emb = concat_func([deep_input_emb, attn_output], axis=-1) + deep_input_emb = Flatten()(deep_input_emb) + + dnn_input = combined_dnn_input([deep_input_emb], dense_value_list) + output = DNN(dnn_hidden_units, dnn_activation, l2_reg_dnn, dnn_dropout, use_bn, seed=seed)(dnn_input) + final_logit = Dense(1, use_bias=False, kernel_initializer=tf.keras.initializers.glorot_normal(seed))(output) + output = PredictionLayer(task)(final_logit) + + model = tf.keras.models.Model(inputs=inputs_list, outputs=output) + + return model diff --git a/tests/models/BST_test.py b/tests/models/BST_test.py new file mode 100644 index 00000000..fa3cd138 --- /dev/null +++ b/tests/models/BST_test.py @@ -0,0 +1,75 @@ +import numpy as np +import pytest +import tensorflow as tf +from packaging import version + +from deepctr.feature_column import SparseFeat, VarLenSparseFeat, DenseFeat, get_feature_names +from deepctr.models import BST +from ..utils import check_model + + +def get_xy_fd(use_neg=False, hash_flag=False): + feature_columns = [SparseFeat('user', 3, embedding_dim=12, use_hash=hash_flag), + SparseFeat('gender', 2, embedding_dim=4, use_hash=hash_flag), + SparseFeat('item_id', 3 + 1, embedding_dim=8, use_hash=hash_flag), + SparseFeat('cate_id', 2 + 1, embedding_dim=4, use_hash=hash_flag), + DenseFeat('pay_score', 1)] + + feature_columns += [ + VarLenSparseFeat(SparseFeat('hist_item_id', vocabulary_size=3 + 1, embedding_dim=8, embedding_name='item_id'), + maxlen=4, length_name="seq_length"), + VarLenSparseFeat(SparseFeat('hist_cate_id', 2 + 1, embedding_dim=4, embedding_name='cate_id'), maxlen=4, + length_name="seq_length")] + + behavior_feature_list = ["item_id", "cate_id"] + uid = np.array([0, 1, 2]) + ugender = np.array([0, 1, 0]) + iid = np.array([1, 2, 3]) # 0 is mask value + cate_id = np.array([1, 2, 2]) # 0 is mask value + score = np.array([0.1, 0.2, 0.3]) + + hist_iid = np.array([[1, 2, 3, 0], [1, 2, 3, 0], [1, 2, 0, 0]]) + hist_cate_id = np.array([[1, 2, 2, 0], [1, 2, 2, 0], [1, 2, 0, 0]]) + + behavior_length = np.array([3, 3, 2]) + + feature_dict = {'user': uid, 'gender': ugender, 'item_id': iid, 'cate_id': cate_id, + 'hist_item_id': hist_iid, 'hist_cate_id': hist_cate_id, + 'pay_score': score, "seq_length": behavior_length} + + if use_neg: + feature_dict['neg_hist_item_id'] = np.array([[1, 2, 3, 0], [1, 2, 3, 0], [1, 2, 0, 0]]) + feature_dict['neg_hist_cate_id'] = np.array([[1, 2, 2, 0], [1, 2, 2, 0], [1, 2, 0, 0]]) + feature_columns += [ + VarLenSparseFeat( + SparseFeat('neg_hist_item_id', vocabulary_size=3 + 1, embedding_dim=8, embedding_name='item_id'), + maxlen=4, length_name="seq_length"), + VarLenSparseFeat(SparseFeat('neg_hist_cate_id', 2 + 1, embedding_dim=4, embedding_name='cate_id'), + maxlen=4, length_name="seq_length")] + + x = {name: feature_dict[name] for name in get_feature_names(feature_columns)} + y = np.array([1, 0, 1]) + x["position_hist"] = np.array([[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]) + return x, y, feature_columns, behavior_feature_list + + +# @pytest.mark.xfail(reason="There is a bug when save model use Dice") +# @pytest.mark.skip(reason="misunderstood the API") + +def test_BST(): + if version.parse(tf.__version__) >= version.parse('2.0.0'): + tf.compat.v1.disable_eager_execution() + model_name = "BST" + + x, y, feature_columns, behavior_feature_list = get_xy_fd(hash_flag=True) + + model = BST(dnn_feature_columns=feature_columns, + history_feature_list=behavior_feature_list, + att_head_num=4) + + check_model(model, model_name, x, y, + check_model_io=True) + + +if __name__ == "__main__": + pass From e9863cb6cd78c1e3fbf1f48a46bc6a15c36e10a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E6=A2=A6?= <weichenswc@163.com> Date: Sat, 13 Mar 2021 15:38:27 +0800 Subject: [PATCH 2/2] update docs and examples (#337) update docs and examples --- .travis.yml | 2 +- README.md | 37 +++++++++++- deepctr/__init__.py | 2 +- deepctr/estimator/models/afm.py | 2 +- deepctr/estimator/models/autoint.py | 2 +- deepctr/estimator/models/ccpm.py | 2 +- deepctr/estimator/models/dcn.py | 2 +- deepctr/estimator/models/deepfm.py | 2 +- deepctr/estimator/models/fibinet.py | 2 +- deepctr/estimator/models/fnn.py | 2 +- deepctr/estimator/models/fwfm.py | 2 +- deepctr/estimator/models/nfm.py | 2 +- deepctr/estimator/models/pnn.py | 2 +- deepctr/estimator/models/wdl.py | 2 +- deepctr/estimator/models/xdeepfm.py | 2 +- deepctr/inputs.py | 2 +- deepctr/layers/activation.py | 2 +- deepctr/layers/core.py | 2 +- deepctr/layers/interaction.py | 2 +- deepctr/layers/normalization.py | 2 +- deepctr/layers/sequence.py | 12 ++-- deepctr/layers/utils.py | 2 +- deepctr/models/afm.py | 2 +- deepctr/models/autoint.py | 2 +- deepctr/models/bst.py | 11 ++-- deepctr/models/ccpm.py | 2 +- deepctr/models/dcn.py | 2 +- deepctr/models/dcnmix.py | 2 +- deepctr/models/deepfm.py | 2 +- deepctr/models/dien.py | 2 +- deepctr/models/din.py | 2 +- deepctr/models/dsin.py | 2 +- deepctr/models/fgcnn.py | 2 +- deepctr/models/fibinet.py | 2 +- deepctr/models/fnn.py | 2 +- deepctr/models/mlr.py | 2 +- deepctr/models/nfm.py | 2 +- deepctr/models/onn.py | 2 +- deepctr/models/pnn.py | 2 +- deepctr/models/wdl.py | 2 +- deepctr/models/xdeepfm.py | 2 +- deepctr/utils.py | 2 +- docs/pics/BST.png | Bin 0 -> 178030 bytes docs/source/Examples.md | 10 +-- docs/source/Features.md | 12 ++++ docs/source/History.md | 1 + docs/source/Models.rst | 1 + docs/source/Quick-Start.md | 2 +- docs/source/conf.py | 2 +- docs/source/deepctr.models.bst.rst | 7 +++ docs/source/index.rst | 4 +- examples/run_classification_criteo.py | 2 +- .../run_classification_criteo_multi_gpu.py | 2 +- examples/run_din.py | 26 +++++--- .../run_estimator_pandas_classification.py | 4 +- examples/run_flen.py | 2 +- examples/run_multivalue_movielens.py | 2 +- examples/run_regression_movielens.py | 2 +- setup.py | 4 +- tests/models/BST_test.py | 57 +----------------- tests/models/DIN_test.py | 35 +++++------ 61 files changed, 161 insertions(+), 152 deletions(-) create mode 100644 docs/pics/BST.png create mode 100644 docs/source/deepctr.models.bst.rst diff --git a/.travis.yml b/.travis.yml index 87324b97..4470dfa0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -59,7 +59,7 @@ script: notifications: recipients: - - wcshen1994@163.com + - weichenswc@163.com on_success: change on_failure: change diff --git a/README.md b/README.md index 43ad2d68..7404a224 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ [![Documentation Status](https://readthedocs.org/projects/deepctr-doc/badge/?version=latest)](https://deepctr-doc.readthedocs.io/) ![CI status](https://github.com/shenweichen/deepctr/workflows/CI/badge.svg) [![Coverage Status](https://coveralls.io/repos/github/shenweichen/DeepCTR/badge.svg?branch=master)](https://coveralls.io/github/shenweichen/DeepCTR?branch=master) -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/d4099734dc0e4bab91d332ead8c0bdd0)](https://www.codacy.com/app/wcshen1994/DeepCTR?utm_source=github.com&utm_medium=referral&utm_content=shenweichen/DeepCTR&utm_campaign=Badge_Grade) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/d4099734dc0e4bab91d332ead8c0bdd0)](https://www.codacy.com/gh/shenweichen/DeepCTR?utm_source=github.com&utm_medium=referral&utm_content=shenweichen/DeepCTR&utm_campaign=Badge_Grade) [![Disscussion](https://img.shields.io/badge/chat-wechat-brightgreen?style=flat)](./README.md#DisscussionGroup) [![License](https://img.shields.io/github/license/shenweichen/deepctr.svg)](https://github.com/shenweichen/deepctr/blob/master/LICENSE) <!-- [![Gitter](https://badges.gitter.im/DeepCTR/community.svg)](https://gitter.im/DeepCTR/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) --> @@ -83,3 +83,38 @@ If you find this code useful in your research, please cite it using the followin ![wechat](./docs/pics/code.png) + +## Main contributors([welcome to join us!](./CONTRIBUTING.md)) + +<table border="0"> + <tbody> + <tr align="center" > + <td> + <a href="https://github.com/shenweichen"><img width="70" height="70" src="https://github.com/shenweichen.png?s=40" alt="pic"></a><br> + <a href="https://github.com/shenweichen">Shen Weichen</a> + <p> + Alibaba Group </p> + </td> + <td> + <a href="https://github.com/zanshuxun"><img width="70" height="70" src="https://github.com/zanshuxun.png?s=40" alt="pic"></a><br> + <a href="https://github.com/zanshuxun">Zan Shuxun</a> + <p>Beijing University <br> of Posts and <br> Telecommunications </p> + </td> + <td> + <a href="https://github.com/pandeconscious"><img width="70" height="70" src="https://github.com/pandeconscious.png?s=40" alt="pic"></a><br> + <a href="https://github.com/pandeconscious">Harshit Pande</a> + <p> Amazon </p> + </td> + <td> + <a href="https://github.com/codewithzichao"><img width="70" height="70" src="https://github.com/codewithzichao.png?s=40" alt="pic"></a><br> + <a href="https://github.com/codewithzichao">Li Zichao</a> + <p> Peking University </p> + </td> + <td> + <a href="https://github.com/TanTingyi"><img width="70" height="70" src="https://github.com/TanTingyi.png?s=40" alt="pic"></a><br> + <a href="https://github.com/TanTingyi">LeoCai</a> + <p> Chongqing University <br> of Posts and <br> Telecommunications </p> + </td> + </tr> + </tbody> +</table> diff --git a/deepctr/__init__.py b/deepctr/__init__.py index 50db6f7a..b3b93e89 100644 --- a/deepctr/__init__.py +++ b/deepctr/__init__.py @@ -1,4 +1,4 @@ from .utils import check_version -__version__ = '0.8.3' +__version__ = '0.8.5' check_version(__version__) diff --git a/deepctr/estimator/models/afm.py b/deepctr/estimator/models/afm.py index b56282dc..e53e76d4 100644 --- a/deepctr/estimator/models/afm.py +++ b/deepctr/estimator/models/afm.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Xiao J, Ye H, He X, et al. Attentional factorization machines: Learning the weight of feature interactions via attention networks[J]. arXiv preprint arXiv:1708.04617, 2017. diff --git a/deepctr/estimator/models/autoint.py b/deepctr/estimator/models/autoint.py index 40e3b1e1..843f41e6 100644 --- a/deepctr/estimator/models/autoint.py +++ b/deepctr/estimator/models/autoint.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Song W, Shi C, Xiao Z, et al. AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks[J]. arXiv preprint arXiv:1810.11921, 2018.(https://arxiv.org/abs/1810.11921) diff --git a/deepctr/estimator/models/ccpm.py b/deepctr/estimator/models/ccpm.py index cc788a38..0bae78fa 100644 --- a/deepctr/estimator/models/ccpm.py +++ b/deepctr/estimator/models/ccpm.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Liu Q, Yu F, Wu S, et al. A convolutional click prediction model[C]//Proceedings of the 24th ACM International on Conference on Information and Knowledge Management. ACM, 2015: 1743-1746. diff --git a/deepctr/estimator/models/dcn.py b/deepctr/estimator/models/dcn.py index ceba2b6b..78610be9 100644 --- a/deepctr/estimator/models/dcn.py +++ b/deepctr/estimator/models/dcn.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Wang R, Fu B, Fu G, et al. Deep & cross network for ad click predictions[C]//Proceedings of the ADKDD'17. ACM, 2017: 12. (https://arxiv.org/abs/1708.05123) diff --git a/deepctr/estimator/models/deepfm.py b/deepctr/estimator/models/deepfm.py index 0021b506..25c311d7 100644 --- a/deepctr/estimator/models/deepfm.py +++ b/deepctr/estimator/models/deepfm.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Guo H, Tang R, Ye Y, et al. Deepfm: a factorization-machine based neural network for ctr prediction[J]. arXiv preprint arXiv:1703.04247, 2017.(https://arxiv.org/abs/1703.04247) diff --git a/deepctr/estimator/models/fibinet.py b/deepctr/estimator/models/fibinet.py index 619f4f8e..1fc25a1f 100644 --- a/deepctr/estimator/models/fibinet.py +++ b/deepctr/estimator/models/fibinet.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Huang T, Zhang Z, Zhang J. FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction[J]. arXiv preprint arXiv:1905.09433, 2019. diff --git a/deepctr/estimator/models/fnn.py b/deepctr/estimator/models/fnn.py index aeb7de1a..f2270a06 100644 --- a/deepctr/estimator/models/fnn.py +++ b/deepctr/estimator/models/fnn.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Zhang W, Du T, Wang J. Deep learning over multi-field categorical data[C]//European conference on information retrieval. Springer, Cham, 2016: 45-57.(https://arxiv.org/pdf/1601.02376.pdf) diff --git a/deepctr/estimator/models/fwfm.py b/deepctr/estimator/models/fwfm.py index f5de40ab..69b1fa37 100644 --- a/deepctr/estimator/models/fwfm.py +++ b/deepctr/estimator/models/fwfm.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Harshit Pande Reference: diff --git a/deepctr/estimator/models/nfm.py b/deepctr/estimator/models/nfm.py index ff10b776..cabab4ce 100644 --- a/deepctr/estimator/models/nfm.py +++ b/deepctr/estimator/models/nfm.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] He X, Chua T S. Neural factorization machines for sparse predictive analytics[C]//Proceedings of the 40th International ACM SIGIR conference on Research and Development in Information Retrieval. ACM, 2017: 355-364. (https://arxiv.org/abs/1708.05027) diff --git a/deepctr/estimator/models/pnn.py b/deepctr/estimator/models/pnn.py index add1da8b..9dcdb5cc 100644 --- a/deepctr/estimator/models/pnn.py +++ b/deepctr/estimator/models/pnn.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Qu Y, Cai H, Ren K, et al. Product-based neural networks for user response prediction[C]//Data Mining (ICDM), 2016 IEEE 16th International Conference on. IEEE, 2016: 1149-1154.(https://arxiv.org/pdf/1611.00144.pdf) diff --git a/deepctr/estimator/models/wdl.py b/deepctr/estimator/models/wdl.py index 381d5f28..482c03b6 100644 --- a/deepctr/estimator/models/wdl.py +++ b/deepctr/estimator/models/wdl.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Cheng H T, Koc L, Harmsen J, et al. Wide & deep learning for recommender systems[C]//Proceedings of the 1st Workshop on Deep Learning for Recommender Systems. ACM, 2016: 7-10.(https://arxiv.org/pdf/1606.07792.pdf) diff --git a/deepctr/estimator/models/xdeepfm.py b/deepctr/estimator/models/xdeepfm.py index 65a0658a..b14a143c 100644 --- a/deepctr/estimator/models/xdeepfm.py +++ b/deepctr/estimator/models/xdeepfm.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Lian J, Zhou X, Zhang F, et al. xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems[J]. arXiv preprint arXiv:1803.05170, 2018.(https://arxiv.org/pdf/1803.05170.pdf) diff --git a/deepctr/inputs.py b/deepctr/inputs.py index 92019a85..a36e4e9b 100644 --- a/deepctr/inputs.py +++ b/deepctr/inputs.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen,wcshen1994@163.com + Weichen Shen,weichenswc@163.com """ diff --git a/deepctr/layers/activation.py b/deepctr/layers/activation.py index 1b97b4d7..5e55945f 100644 --- a/deepctr/layers/activation.py +++ b/deepctr/layers/activation.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen,wcshen1994@163.com + Weichen Shen,weichenswc@163.com """ diff --git a/deepctr/layers/core.py b/deepctr/layers/core.py index f81bf97b..6ee4b77b 100644 --- a/deepctr/layers/core.py +++ b/deepctr/layers/core.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen,wcshen1994@163.com + Weichen Shen,weichenswc@163.com """ diff --git a/deepctr/layers/interaction.py b/deepctr/layers/interaction.py index 87e159d1..fa32f047 100644 --- a/deepctr/layers/interaction.py +++ b/deepctr/layers/interaction.py @@ -2,7 +2,7 @@ """ Authors: - Weichen Shen,wcshen1994@163.com, + Weichen Shen,weichenswc@163.com, Harshit Pande """ diff --git a/deepctr/layers/normalization.py b/deepctr/layers/normalization.py index 7eec63ba..aa9d392c 100644 --- a/deepctr/layers/normalization.py +++ b/deepctr/layers/normalization.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen,wcshen1994@163.com + Weichen Shen,weichenswc@163.com """ diff --git a/deepctr/layers/sequence.py b/deepctr/layers/sequence.py index 2c490428..4160fb11 100644 --- a/deepctr/layers/sequence.py +++ b/deepctr/layers/sequence.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen,wcshen1994@163.com + Weichen Shen,weichenswc@163.com """ @@ -417,12 +417,12 @@ class Transformer(Layer): """ Simplified version of Transformer proposed in 《Attention is all you need》 Input shape - - a list of two 3D tensor with shape ``(batch_size, timesteps, input_dim)`` if supports_masking=True. - - a list of two 4 tensors, first two tensors with shape ``(batch_size, timesteps, input_dim)``,last two tensors with shape ``(batch_size, 1)`` if supports_masking=False. + - a list of two 3D tensor with shape ``(batch_size, timesteps, input_dim)`` if ``supports_masking=True`` . + - a list of two 4 tensors, first two tensors with shape ``(batch_size, timesteps, input_dim)``,last two tensors with shape ``(batch_size, 1)`` if ``supports_masking=False`` . Output shape - - 3D tensor with shape: ``(batch_size, 1, input_dim)``. + - 3D tensor with shape: ``(batch_size, 1, input_dim)`` if ``output_type='mean'`` or ``output_type='sum'`` , else ``(batch_size, timesteps, input_dim)`` . Arguments @@ -436,8 +436,8 @@ class Transformer(Layer): - **blinding**: bool. Whether or not use blinding. - **seed**: A Python integer to use as random seed. - **supports_masking**:bool. Whether or not support masking. - - **attention_type**: str, Type of attention, the value must be one of ["scaled_dot_product","additive"]. - - **output_type**: str or None. Whether or not use average/sum pooling for output. + - **attention_type**: str, Type of attention, the value must be one of { ``'scaled_dot_product'`` , ``'additive'`` }. + - **output_type**: ``'mean'`` , ``'sum'`` or `None`. Whether or not use average/sum pooling for output. References - [Vaswani, Ashish, et al. "Attention is all you need." Advances in Neural Information Processing Systems. 2017.](https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf) diff --git a/deepctr/layers/utils.py b/deepctr/layers/utils.py index d13928a4..ca73d6a3 100644 --- a/deepctr/layers/utils.py +++ b/deepctr/layers/utils.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen,wcshen1994@163.com + Weichen Shen,weichenswc@163.com """ import tensorflow as tf diff --git a/deepctr/models/afm.py b/deepctr/models/afm.py index dd664373..3f5ea7d1 100644 --- a/deepctr/models/afm.py +++ b/deepctr/models/afm.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Xiao J, Ye H, He X, et al. Attentional factorization machines: Learning the weight of feature interactions via attention networks[J]. arXiv preprint arXiv:1708.04617, 2017. diff --git a/deepctr/models/autoint.py b/deepctr/models/autoint.py index c742e3c2..1818e6a0 100644 --- a/deepctr/models/autoint.py +++ b/deepctr/models/autoint.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Song W, Shi C, Xiao Z, et al. AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks[J]. arXiv preprint arXiv:1810.11921, 2018.(https://arxiv.org/abs/1810.11921) diff --git a/deepctr/models/bst.py b/deepctr/models/bst.py index 89818f12..ba5a8bb8 100644 --- a/deepctr/models/bst.py +++ b/deepctr/models/bst.py @@ -8,7 +8,8 @@ """ import tensorflow as tf -from tensorflow.python.keras.layers import (Dense, LeakyReLU, Flatten) +from tensorflow.python.keras.layers import (Dense, Flatten) + from ..feature_column import SparseFeat, VarLenSparseFeat, DenseFeat, build_input_features from ..inputs import get_varlen_pooling_list, create_embedding_matrix, embedding_lookup, varlen_embedding_lookup, \ get_dense_input @@ -18,7 +19,7 @@ def BST(dnn_feature_columns, history_feature_list, transformer_num=1, att_head_num=8, - use_bn=False, dnn_hidden_units=(1024, 512, 256), dnn_activation='relu', l2_reg_dnn=0, + use_bn=False, dnn_hidden_units=(200, 80), dnn_activation='relu', l2_reg_dnn=0, l2_reg_embedding=1e-6, dnn_dropout=0.0, seed=1024, task='binary'): """Instantiates the BST architecture. @@ -84,9 +85,9 @@ def BST(dnn_feature_columns, history_feature_list, transformer_num=1, att_head_n for i in range(transformer_num): att_embedding_size = transformer_output.get_shape().as_list()[-1] // att_head_num transformer_layer = Transformer(att_embedding_size=att_embedding_size, head_num=att_head_num, - dropout_rate=dnn_dropout, use_positional_encoding=True,use_res=True, - use_feed_forward=True, use_layer_norm=True,blinding=False, seed=seed, - supports_masking=False,output_type=None) + dropout_rate=dnn_dropout, use_positional_encoding=True, use_res=True, + use_feed_forward=True, use_layer_norm=True, blinding=False, seed=seed, + supports_masking=False, output_type=None) transformer_output = transformer_layer([transformer_output, transformer_output, user_behavior_length, user_behavior_length]) diff --git a/deepctr/models/ccpm.py b/deepctr/models/ccpm.py index cfe0013f..05c8e5f1 100644 --- a/deepctr/models/ccpm.py +++ b/deepctr/models/ccpm.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Liu Q, Yu F, Wu S, et al. A convolutional click prediction model[C]//Proceedings of the 24th ACM International on Conference on Information and Knowledge Management. ACM, 2015: 1743-1746. diff --git a/deepctr/models/dcn.py b/deepctr/models/dcn.py index 5a14f5a7..69d23e58 100644 --- a/deepctr/models/dcn.py +++ b/deepctr/models/dcn.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Shuxun Zan, zanshuxun@aliyun.com diff --git a/deepctr/models/dcnmix.py b/deepctr/models/dcnmix.py index ea62cd24..7b257643 100644 --- a/deepctr/models/dcnmix.py +++ b/deepctr/models/dcnmix.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Shuxun Zan, zanshuxun@aliyun.com diff --git a/deepctr/models/deepfm.py b/deepctr/models/deepfm.py index 125744ad..14ad4c8c 100644 --- a/deepctr/models/deepfm.py +++ b/deepctr/models/deepfm.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Guo H, Tang R, Ye Y, et al. Deepfm: a factorization-machine based neural network for ctr prediction[J]. arXiv preprint arXiv:1703.04247, 2017.(https://arxiv.org/abs/1703.04247) diff --git a/deepctr/models/dien.py b/deepctr/models/dien.py index 3b167472..98ce9f1d 100644 --- a/deepctr/models/dien.py +++ b/deepctr/models/dien.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Zhou G, Mou N, Fan Y, et al. Deep Interest Evolution Network for Click-Through Rate Prediction[J]. arXiv preprint arXiv:1809.03672, 2018. (https://arxiv.org/pdf/1809.03672.pdf) diff --git a/deepctr/models/din.py b/deepctr/models/din.py index 1e2c536d..9c3ba5c5 100644 --- a/deepctr/models/din.py +++ b/deepctr/models/din.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Zhou G, Zhu X, Song C, et al. Deep interest network for click-through rate prediction[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. ACM, 2018: 1059-1068. (https://arxiv.org/pdf/1706.06978.pdf) diff --git a/deepctr/models/dsin.py b/deepctr/models/dsin.py index de52ea0b..5091c296 100644 --- a/deepctr/models/dsin.py +++ b/deepctr/models/dsin.py @@ -1,7 +1,7 @@ # coding: utf-8 """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Feng Y, Lv F, Shen W, et al. Deep Session Interest Network for Click-Through Rate Prediction[J]. arXiv preprint arXiv:1905.06482, 2019.(https://arxiv.org/abs/1905.06482) diff --git a/deepctr/models/fgcnn.py b/deepctr/models/fgcnn.py index 3ee1eaa4..8860511e 100644 --- a/deepctr/models/fgcnn.py +++ b/deepctr/models/fgcnn.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Liu B, Tang R, Chen Y, et al. Feature Generation by Convolutional Neural Network for Click-Through Rate Prediction[J]. arXiv preprint arXiv:1904.04447, 2019. diff --git a/deepctr/models/fibinet.py b/deepctr/models/fibinet.py index c0407c6a..7cf5922c 100644 --- a/deepctr/models/fibinet.py +++ b/deepctr/models/fibinet.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Huang T, Zhang Z, Zhang J. FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction[J]. arXiv preprint arXiv:1905.09433, 2019. diff --git a/deepctr/models/fnn.py b/deepctr/models/fnn.py index b2d729ac..73c282a4 100644 --- a/deepctr/models/fnn.py +++ b/deepctr/models/fnn.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Zhang W, Du T, Wang J. Deep learning over multi-field categorical data[C]//European conference on information retrieval. Springer, Cham, 2016: 45-57.(https://arxiv.org/pdf/1601.02376.pdf) diff --git a/deepctr/models/mlr.py b/deepctr/models/mlr.py index 3cff00d4..393d006c 100644 --- a/deepctr/models/mlr.py +++ b/deepctr/models/mlr.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Gai K, Zhu X, Li H, et al. Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction[J]. arXiv preprint arXiv:1704.05194, 2017.(https://arxiv.org/abs/1704.05194) diff --git a/deepctr/models/nfm.py b/deepctr/models/nfm.py index 5c643a94..84899f6c 100644 --- a/deepctr/models/nfm.py +++ b/deepctr/models/nfm.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] He X, Chua T S. Neural factorization machines for sparse predictive analytics[C]//Proceedings of the 40th International ACM SIGIR conference on Research and Development in Information Retrieval. ACM, 2017: 355-364. (https://arxiv.org/abs/1708.05027) diff --git a/deepctr/models/onn.py b/deepctr/models/onn.py index bc96abaa..2708fc74 100644 --- a/deepctr/models/onn.py +++ b/deepctr/models/onn.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Yang Y, Xu B, Shen F, et al. Operation-aware Neural Networks for User Response Prediction[J]. arXiv preprint arXiv:1904.12579, 2019. (https://arxiv.org/pdf/1904.12579) diff --git a/deepctr/models/pnn.py b/deepctr/models/pnn.py index c450c6ac..c8b94ac0 100644 --- a/deepctr/models/pnn.py +++ b/deepctr/models/pnn.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Qu Y, Cai H, Ren K, et al. Product-based neural networks for user response prediction[C]//Data Mining (ICDM), 2016 IEEE 16th International Conference on. IEEE, 2016: 1149-1154.(https://arxiv.org/pdf/1611.00144.pdf) diff --git a/deepctr/models/wdl.py b/deepctr/models/wdl.py index 1d8a51e4..0cad17f5 100644 --- a/deepctr/models/wdl.py +++ b/deepctr/models/wdl.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Cheng H T, Koc L, Harmsen J, et al. Wide & deep learning for recommender systems[C]//Proceedings of the 1st Workshop on Deep Learning for Recommender Systems. ACM, 2016: 7-10.(https://arxiv.org/pdf/1606.07792.pdf) diff --git a/deepctr/models/xdeepfm.py b/deepctr/models/xdeepfm.py index 2f518cd5..6e3bd7c8 100644 --- a/deepctr/models/xdeepfm.py +++ b/deepctr/models/xdeepfm.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- """ Author: - Weichen Shen, wcshen1994@163.com + Weichen Shen, weichenswc@163.com Reference: [1] Lian J, Zhou X, Zhang F, et al. xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems[J]. arXiv preprint arXiv:1803.05170, 2018.(https://arxiv.org/pdf/1803.05170.pdf) diff --git a/deepctr/utils.py b/deepctr/utils.py index 2049e0c9..7fe3b25a 100644 --- a/deepctr/utils.py +++ b/deepctr/utils.py @@ -2,7 +2,7 @@ """ Author: - Weichen Shen,wcshen1994@163.com + Weichen Shen,weichenswc@163.com """ diff --git a/docs/pics/BST.png b/docs/pics/BST.png new file mode 100644 index 0000000000000000000000000000000000000000..799b713580dc38301be2b443c53a18bbb3995510 GIT binary patch literal 178030 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(&)r{93*Nm@UD~)Y&K58#57# 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%0Dv0m@( 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 V=b!wuPX6QG(cc@OPzL#9{7)-H`Mm%D literal 0 HcmV?d00001 diff --git a/docs/source/Examples.md b/docs/source/Examples.md index 34d3733f..de6b33c1 100644 --- a/docs/source/Examples.md +++ b/docs/source/Examples.md @@ -44,7 +44,7 @@ if __name__ == "__main__": # 2.count #unique features for each sparse field,and record dense feature field name - fixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data[feat].nunique(),embedding_dim=4) + fixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data[feat].max() + 1,embedding_dim=4) for i,feat in enumerate(sparse_features)] + [DenseFeat(feat, 1,) for feat in dense_features] @@ -161,7 +161,7 @@ if __name__ == "__main__": lbe = LabelEncoder() data[feat] = lbe.fit_transform(data[feat]) # 2.count #unique features for each sparse field - fixlen_feature_columns = [SparseFeat(feat, data[feat].nunique(),embedding_dim=4) + fixlen_feature_columns = [SparseFeat(feat, data[feat].max() + 1,embedding_dim=4) for feat in sparse_features] linear_feature_columns = fixlen_feature_columns dnn_feature_columns = fixlen_feature_columns @@ -241,7 +241,7 @@ if __name__ == "__main__": # 2.count #unique features for each sparse field and generate feature config for sequence feature - fixlen_feature_columns = [SparseFeat(feat, data[feat].nunique(),embedding_dim=4) + fixlen_feature_columns = [SparseFeat(feat, data[feat].max() + 1,embedding_dim=4) for feat in sparse_features] use_weighted_sequence = False @@ -415,8 +415,8 @@ if __name__ == "__main__": for i, feat in enumerate(sparse_features): dnn_feature_columns.append(tf.feature_column.embedding_column( - tf.feature_column.categorical_column_with_identity(feat, data[feat].nunique()), 4)) - linear_feature_columns.append(tf.feature_column.categorical_column_with_identity(feat, data[feat].nunique())) + tf.feature_column.categorical_column_with_identity(feat, data[feat].max() + 1), 4)) + linear_feature_columns.append(tf.feature_column.categorical_column_with_identity(feat, data[feat].max() + 1)) for feat in dense_features: dnn_feature_columns.append(tf.feature_column.numeric_column(feat)) linear_feature_columns.append(tf.feature_column.numeric_column(feat)) diff --git a/docs/source/Features.md b/docs/source/Features.md index d64acd05..4ec13c7c 100644 --- a/docs/source/Features.md +++ b/docs/source/Features.md @@ -284,6 +284,18 @@ Deep Session Interest Network (DSIN) extracts users' multiple historical session [Feng Y, Lv F, Shen W, et al. Deep Session Interest Network for Click-Through Rate Prediction[J]. arXiv preprint arXiv:1905.06482, 2019.](https://arxiv.org/abs/1905.06482) +### BST(Behavior Sequence Transformer) + +BST use the powerful Transformer model to capture the sequential signals underlying users’ behavior sequences . + +[**BST Model API**](./deepctr.models.bst.html) + +[BST example](https://github.com/shenweichen/DeepCTR/tree/master/examples/run_din.py) + +![BST](../pics/BST.png) + +[Qiwei Chen, Huan Zhao, Wei Li, Pipei Huang, and Wenwu Ou. 2019. Behavior sequence transformer for e-commerce recommendation in Alibaba. In Proceedings of the 1st International Workshop on Deep Learning Practice for High-Dimensional Sparse Data (DLP-KDD '19). Association for Computing Machinery, New York, NY, USA, Article 12, 1–4. DOI:)](https://arxiv.org/pdf/1905.06874.pdf) + ### FiBiNET(Feature Importance and Bilinear feature Interaction NETwork) Feature Importance and Bilinear feature Interaction NETwork is proposed to dynamically learn the feature importance and fine-grained feature interactions. On the one hand, the FiBiNET can dynamically learn the importance of fea- tures via the Squeeze-Excitation network (SENET) mechanism; on the other hand, it is able to effectively learn the feature interactions via bilinear function. diff --git a/docs/source/History.md b/docs/source/History.md index b9aa12a1..2559dccc 100644 --- a/docs/source/History.md +++ b/docs/source/History.md @@ -1,4 +1,5 @@ # History +- 03/13/2021 : [v0.8.5](https://github.com/shenweichen/DeepCTR/releases/tag/v0.8.5) released.Add [BST](./Features.html#bst-behavior-sequence-transformer) model. - 02/12/2021 : [v0.8.4](https://github.com/shenweichen/DeepCTR/releases/tag/v0.8.4) released.Fix bug in DCN-Mix. - 01/06/2021 : [v0.8.3](https://github.com/shenweichen/DeepCTR/releases/tag/v0.8.3) released.Add [DCN-Mix](./Features.html#dcn-mix-improved-deep-cross-network-with-mix-of-experts-and-matrix-kernel) model.Support `transform_fn` in `DenseFeat`. - 10/11/2020 : [v0.8.2](https://github.com/shenweichen/DeepCTR/releases/tag/v0.8.2) released.Refactor `DNN` Layer. diff --git a/docs/source/Models.rst b/docs/source/Models.rst index c7c80141..f123dea6 100644 --- a/docs/source/Models.rst +++ b/docs/source/Models.rst @@ -16,6 +16,7 @@ DeepCTR Models API DIN<deepctr.models.din> DIEN<deepctr.models.dien> DSIN<deepctr.models.dsin> + BST<deepctr.models.bst> xDeepFM<deepctr.models.xdeepfm> AutoInt<deepctr.models.autoint> ONN<deepctr.models.onn> diff --git a/docs/source/Quick-Start.md b/docs/source/Quick-Start.md index 0a862a0f..e587757f 100644 --- a/docs/source/Quick-Start.md +++ b/docs/source/Quick-Start.md @@ -79,7 +79,7 @@ And for varlen(multi-valued) sparse features,you can use [VarlenSparseFeat](./Fe - Label Encoding ```python -fixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data[feat].nunique(),embedding_dim=4) +fixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data[feat].max() + 1,embedding_dim=4) for i,feat in enumerate(sparse_features)] + [DenseFeat(feat, 1,) for feat in dense_features] diff --git a/docs/source/conf.py b/docs/source/conf.py index 5a45c11a..f36db6d8 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -26,7 +26,7 @@ # The short X.Y version version = '' # The full version, including alpha/beta/rc tags -release = '0.8.3' +release = '0.8.5' # -- General configuration --------------------------------------------------- diff --git a/docs/source/deepctr.models.bst.rst b/docs/source/deepctr.models.bst.rst new file mode 100644 index 00000000..d3a41a09 --- /dev/null +++ b/docs/source/deepctr.models.bst.rst @@ -0,0 +1,7 @@ +deepctr.models.bst module +========================= + +.. automodule:: deepctr.models.bst + :members: + :no-undoc-members: + :no-show-inheritance: diff --git a/docs/source/index.rst b/docs/source/index.rst index 34bd41d0..f5acd97f 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -42,12 +42,12 @@ You can read the latest code and related projects News ----- +03/13/2021 : Add `BST <./Features.html#bst-behavior-sequence-transformer>`_ . `Changelog <https://github.com/shenweichen/DeepCTR/releases/tag/v0.8.5>`_ + 02/12/2021 : Fix bug in DCN-Mix. `Changelog <https://github.com/shenweichen/DeepCTR/releases/tag/v0.8.4>`_ 01/06/2021 : Add `DCN-Mix <./Features.html#dcn-mix-improved-deep-cross-network-with-mix-of-experts-and-matrix-kernel>`_ (`中文介绍 <https://mp.weixin.qq.com/s/0qidwbxyfTkODTw2DIiRWw>`_) and support ``transform_fn`` in ``DenseFeat``. `Changelog <https://github.com/shenweichen/DeepCTR/releases/tag/v0.8.3>`_ -10/11/2020 : Refactor ``DNN`` Layer. `Changelog <https://github.com/shenweichen/DeepCTR/releases/tag/v0.8.2>`_ - DisscussionGroup ----------------------- diff --git a/examples/run_classification_criteo.py b/examples/run_classification_criteo.py index 164030d2..d2e7c6a0 100644 --- a/examples/run_classification_criteo.py +++ b/examples/run_classification_criteo.py @@ -25,7 +25,7 @@ # 2.count #unique features for each sparse field,and record dense feature field name - fixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data[feat].nunique(),embedding_dim=4 ) + fixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data[feat].max() + 1,embedding_dim=4 ) for i,feat in enumerate(sparse_features)] + [DenseFeat(feat, 1,) for feat in dense_features] diff --git a/examples/run_classification_criteo_multi_gpu.py b/examples/run_classification_criteo_multi_gpu.py index 440f2d39..cff0a617 100644 --- a/examples/run_classification_criteo_multi_gpu.py +++ b/examples/run_classification_criteo_multi_gpu.py @@ -26,7 +26,7 @@ # 2.count #unique features for each sparse field,and record dense feature field name - fixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data[feat].nunique(), embedding_dim=4) + fixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data[feat].max() + 1, embedding_dim=4) for feat in sparse_features] + [DenseFeat(feat, 1, ) for feat in dense_features] diff --git a/examples/run_din.py b/examples/run_din.py index 7187a8a5..44f162ee 100644 --- a/examples/run_din.py +++ b/examples/run_din.py @@ -1,16 +1,19 @@ import numpy as np -from deepctr.models import DIN -from deepctr.feature_column import SparseFeat, VarLenSparseFeat, DenseFeat,get_feature_names +from deepctr.models import DIN, BST +from deepctr.feature_column import SparseFeat, VarLenSparseFeat, DenseFeat, get_feature_names def get_xy_fd(): - - feature_columns = [SparseFeat('user',3,embedding_dim=10),SparseFeat( - 'gender', 2,embedding_dim=4), SparseFeat('item_id', 3 + 1,embedding_dim=8), SparseFeat('cate_id', 2 + 1,embedding_dim=4),DenseFeat('pay_score', 1)] - feature_columns += [VarLenSparseFeat(SparseFeat('hist_item_id', vocabulary_size=3 + 1,embedding_dim=8,embedding_name='item_id'), maxlen=4), - VarLenSparseFeat(SparseFeat('hist_cate_id', 2 + 1,embedding_dim=4, embedding_name='cate_id'), maxlen=4)] - + feature_columns = [SparseFeat('user', 3, embedding_dim=10), SparseFeat( + 'gender', 2, embedding_dim=4), SparseFeat('item_id', 3 + 1, embedding_dim=8), + SparseFeat('cate_id', 2 + 1, embedding_dim=4), DenseFeat('pay_score', 1)] + feature_columns += [ + VarLenSparseFeat(SparseFeat('hist_item_id', vocabulary_size=3 + 1, embedding_dim=8, embedding_name='item_id'), + maxlen=4, length_name="seq_length"), + VarLenSparseFeat(SparseFeat('hist_cate_id', 2 + 1, embedding_dim=4, embedding_name='cate_id'), maxlen=4, + length_name="seq_length")] + # Notice: History behavior sequence feature name must start with "hist_". behavior_feature_list = ["item_id", "cate_id"] uid = np.array([0, 1, 2]) ugender = np.array([0, 1, 0]) @@ -20,10 +23,12 @@ def get_xy_fd(): hist_iid = np.array([[1, 2, 3, 0], [3, 2, 1, 0], [1, 2, 0, 0]]) hist_cate_id = np.array([[1, 2, 2, 0], [2, 2, 1, 0], [1, 2, 0, 0]]) + seq_length = np.array([3, 3, 2]) # the actual length of the behavior sequence feature_dict = {'user': uid, 'gender': ugender, 'item_id': iid, 'cate_id': cate_id, - 'hist_item_id': hist_iid, 'hist_cate_id': hist_cate_id, 'pay_score': pay_score} - x = {name:feature_dict[name] for name in get_feature_names(feature_columns)} + 'hist_item_id': hist_iid, 'hist_cate_id': hist_cate_id, + 'pay_score': pay_score, 'seq_length': seq_length} + x = {name: feature_dict[name] for name in get_feature_names(feature_columns)} y = np.array([1, 0, 1]) return x, y, feature_columns, behavior_feature_list @@ -31,6 +36,7 @@ def get_xy_fd(): if __name__ == "__main__": x, y, feature_columns, behavior_feature_list = get_xy_fd() model = DIN(feature_columns, behavior_feature_list) + # model = BST(feature_columns, behavior_feature_list,att_head_num=4) model.compile('adam', 'binary_crossentropy', metrics=['binary_crossentropy']) history = model.fit(x, y, verbose=1, epochs=10, validation_split=0.5) diff --git a/examples/run_estimator_pandas_classification.py b/examples/run_estimator_pandas_classification.py index 84fe9f9f..d531abef 100644 --- a/examples/run_estimator_pandas_classification.py +++ b/examples/run_estimator_pandas_classification.py @@ -31,8 +31,8 @@ for i, feat in enumerate(sparse_features): dnn_feature_columns.append(tf.feature_column.embedding_column( - tf.feature_column.categorical_column_with_identity(feat, data[feat].nunique()), 4)) - linear_feature_columns.append(tf.feature_column.categorical_column_with_identity(feat, data[feat].nunique())) + tf.feature_column.categorical_column_with_identity(feat, data[feat].max() + 1), 4)) + linear_feature_columns.append(tf.feature_column.categorical_column_with_identity(feat, data[feat].max() + 1)) for feat in dense_features: dnn_feature_columns.append(tf.feature_column.numeric_column(feat)) linear_feature_columns.append(tf.feature_column.numeric_column(feat)) diff --git a/examples/run_flen.py b/examples/run_flen.py index c8c29a31..7ca235d2 100644 --- a/examples/run_flen.py +++ b/examples/run_flen.py @@ -38,7 +38,7 @@ ) fixlen_feature_columns = [ - SparseFeat(name, vocabulary_size=data[name].nunique(), embedding_dim=16, use_hash=False, dtype='int32', + SparseFeat(name, vocabulary_size=data[name].max() + 1, embedding_dim=16, use_hash=False, dtype='int32', group_name=field_info[name]) for name in sparse_features] dnn_feature_columns = fixlen_feature_columns diff --git a/examples/run_multivalue_movielens.py b/examples/run_multivalue_movielens.py index 72e7513b..2063db22 100644 --- a/examples/run_multivalue_movielens.py +++ b/examples/run_multivalue_movielens.py @@ -37,7 +37,7 @@ def split(x): # 2.count #unique features for each sparse field and generate feature config for sequence feature - fixlen_feature_columns = [SparseFeat(feat, data[feat].nunique(), embedding_dim=4) + fixlen_feature_columns = [SparseFeat(feat, data[feat].max() + 1, embedding_dim=4) for feat in sparse_features] use_weighted_sequence = False diff --git a/examples/run_regression_movielens.py b/examples/run_regression_movielens.py index 5b631477..484cf20a 100644 --- a/examples/run_regression_movielens.py +++ b/examples/run_regression_movielens.py @@ -18,7 +18,7 @@ lbe = LabelEncoder() data[feat] = lbe.fit_transform(data[feat]) # 2.count #unique features for each sparse field - fixlen_feature_columns = [SparseFeat(feat, data[feat].nunique(),embedding_dim=4) + fixlen_feature_columns = [SparseFeat(feat, data[feat].max() + 1,embedding_dim=4) for feat in sparse_features] linear_feature_columns = fixlen_feature_columns dnn_feature_columns = fixlen_feature_columns diff --git a/setup.py b/setup.py index 17287a9e..746c1136 100644 --- a/setup.py +++ b/setup.py @@ -4,12 +4,12 @@ long_description = fh.read() REQUIRED_PACKAGES = [ - 'h5py==2.10.0','requests' + 'h5py==2.10.0', 'requests' ] setuptools.setup( name="deepctr", - version="0.8.3", + version="0.8.5", author="Weichen Shen", author_email="weichenswc@163.com", description="Easy-to-use,Modular and Extendible package of deep learning based CTR(Click Through Rate) prediction models with tensorflow 1.x and 2.x .", diff --git a/tests/models/BST_test.py b/tests/models/BST_test.py index fa3cd138..b895f4ef 100644 --- a/tests/models/BST_test.py +++ b/tests/models/BST_test.py @@ -1,64 +1,9 @@ -import numpy as np -import pytest -import tensorflow as tf -from packaging import version - -from deepctr.feature_column import SparseFeat, VarLenSparseFeat, DenseFeat, get_feature_names from deepctr.models import BST from ..utils import check_model +from .DIN_test import get_xy_fd -def get_xy_fd(use_neg=False, hash_flag=False): - feature_columns = [SparseFeat('user', 3, embedding_dim=12, use_hash=hash_flag), - SparseFeat('gender', 2, embedding_dim=4, use_hash=hash_flag), - SparseFeat('item_id', 3 + 1, embedding_dim=8, use_hash=hash_flag), - SparseFeat('cate_id', 2 + 1, embedding_dim=4, use_hash=hash_flag), - DenseFeat('pay_score', 1)] - - feature_columns += [ - VarLenSparseFeat(SparseFeat('hist_item_id', vocabulary_size=3 + 1, embedding_dim=8, embedding_name='item_id'), - maxlen=4, length_name="seq_length"), - VarLenSparseFeat(SparseFeat('hist_cate_id', 2 + 1, embedding_dim=4, embedding_name='cate_id'), maxlen=4, - length_name="seq_length")] - - behavior_feature_list = ["item_id", "cate_id"] - uid = np.array([0, 1, 2]) - ugender = np.array([0, 1, 0]) - iid = np.array([1, 2, 3]) # 0 is mask value - cate_id = np.array([1, 2, 2]) # 0 is mask value - score = np.array([0.1, 0.2, 0.3]) - - hist_iid = np.array([[1, 2, 3, 0], [1, 2, 3, 0], [1, 2, 0, 0]]) - hist_cate_id = np.array([[1, 2, 2, 0], [1, 2, 2, 0], [1, 2, 0, 0]]) - - behavior_length = np.array([3, 3, 2]) - - feature_dict = {'user': uid, 'gender': ugender, 'item_id': iid, 'cate_id': cate_id, - 'hist_item_id': hist_iid, 'hist_cate_id': hist_cate_id, - 'pay_score': score, "seq_length": behavior_length} - - if use_neg: - feature_dict['neg_hist_item_id'] = np.array([[1, 2, 3, 0], [1, 2, 3, 0], [1, 2, 0, 0]]) - feature_dict['neg_hist_cate_id'] = np.array([[1, 2, 2, 0], [1, 2, 2, 0], [1, 2, 0, 0]]) - feature_columns += [ - VarLenSparseFeat( - SparseFeat('neg_hist_item_id', vocabulary_size=3 + 1, embedding_dim=8, embedding_name='item_id'), - maxlen=4, length_name="seq_length"), - VarLenSparseFeat(SparseFeat('neg_hist_cate_id', 2 + 1, embedding_dim=4, embedding_name='cate_id'), - maxlen=4, length_name="seq_length")] - - x = {name: feature_dict[name] for name in get_feature_names(feature_columns)} - y = np.array([1, 0, 1]) - x["position_hist"] = np.array([[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]) - return x, y, feature_columns, behavior_feature_list - - -# @pytest.mark.xfail(reason="There is a bug when save model use Dice") -# @pytest.mark.skip(reason="misunderstood the API") - def test_BST(): - if version.parse(tf.__version__) >= version.parse('2.0.0'): - tf.compat.v1.disable_eager_execution() model_name = "BST" x, y, feature_columns, behavior_feature_list = get_xy_fd(hash_flag=True) diff --git a/tests/models/DIN_test.py b/tests/models/DIN_test.py index c401f6e0..1b462cb9 100644 --- a/tests/models/DIN_test.py +++ b/tests/models/DIN_test.py @@ -6,29 +6,30 @@ def get_xy_fd(hash_flag=False): - feature_columns = [SparseFeat('user', 3), SparseFeat( - 'gender', 2), SparseFeat('item', 3 + 1), SparseFeat('item_gender', 2 + 1), DenseFeat('score', 1)] + feature_columns = [SparseFeat('user', 3, embedding_dim=10), SparseFeat( + 'gender', 2, embedding_dim=4), SparseFeat('item_id', 3 + 1, embedding_dim=8), + SparseFeat('cate_id', 2 + 1, embedding_dim=4), DenseFeat('pay_score', 1)] feature_columns += [ - VarLenSparseFeat(SparseFeat('hist_item', vocabulary_size=3 + 1, embedding_dim=8, embedding_name='item'), - maxlen=4), - VarLenSparseFeat(SparseFeat('hist_item_gender', 2 + 1, embedding_dim=4, embedding_name='item_gender'), - maxlen=4)] - - behavior_feature_list = ["item", "item_gender"] + VarLenSparseFeat(SparseFeat('hist_item_id', vocabulary_size=3 + 1, embedding_dim=8, embedding_name='item_id'), + maxlen=4, length_name="seq_length"), + VarLenSparseFeat(SparseFeat('hist_cate_id', 2 + 1, embedding_dim=4, embedding_name='cate_id'), maxlen=4, + length_name="seq_length")] + # Notice: History behavior sequence feature name must start with "hist_". + behavior_feature_list = ["item_id", "cate_id"] uid = np.array([0, 1, 2]) ugender = np.array([0, 1, 0]) iid = np.array([1, 2, 3]) # 0 is mask value - igender = np.array([1, 2, 1]) # 0 is mask value - score = np.array([0.1, 0.2, 0.3]) - - hist_iid = np.array([[1, 2, 3, 0], [1, 2, 3, 0], [1, 2, 0, 0]]) - hist_igender = np.array([[1, 1, 2, 0], [2, 1, 1, 0], [2, 1, 0, 0]]) + cate_id = np.array([1, 2, 2]) # 0 is mask value + pay_score = np.array([0.1, 0.2, 0.3]) - feature_dict = {'user': uid, 'gender': ugender, 'item': iid, 'item_gender': igender, - 'hist_item': hist_iid, 'hist_item_gender': hist_igender, 'score': score} + hist_iid = np.array([[1, 2, 3, 0], [3, 2, 1, 0], [1, 2, 0, 0]]) + hist_cate_id = np.array([[1, 2, 2, 0], [2, 2, 1, 0], [1, 2, 0, 0]]) + seq_length = np.array([3, 3, 2]) # the actual length of the behavior sequence - feature_names = get_feature_names(feature_columns) - x = {name: feature_dict[name] for name in feature_names} + feature_dict = {'user': uid, 'gender': ugender, 'item_id': iid, 'cate_id': cate_id, + 'hist_item_id': hist_iid, 'hist_cate_id': hist_cate_id, + 'pay_score': pay_score, 'seq_length': seq_length} + x = {name: feature_dict[name] for name in get_feature_names(feature_columns)} y = np.array([1, 0, 1]) return x, y, feature_columns, behavior_feature_list