qiaoguan / deep-ctr-prediction

CTR prediction models based on deep learning(基于深度学习的广告推荐CTR预估模型)
https://github.com/qiaoguan/deep-ctr-prediction
915 stars 276 forks source link

特征工程 #4

Closed jinzengnju closed 4 years ago

jinzengnju commented 5 years ago

能说下你特征工程部分为什么要这么做吗?重点是定义了下面两个列表来进行分桶,这样分桶的意义在于? DayShowSegs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 44, 46, 47, 49, 51, 54, 56, 59, 61, 65, 68, 72, 76, 81, 86, 92, 100, 109, 120, 134, 153, 184, 243, 1195] DayClickSegs = [1, 2, 3, 6, 23]

qiaoguan commented 5 years ago

其实这儿只是随便写的一个,仅仅是供参考一下代码可以这样写, 当然实际分桶一般可以比如等频划分,至于分成多少份,可以看具体的数据。

jinzengnju commented 5 years ago

嗯嗯,谢谢!你的代码结构很清晰,以前我都是用低阶API来做,这次试试用高阶API,感觉方便多了。你代码里面很多小技巧都很到位,谢谢你的分享。还有一个问题就是: 特征工程部分,你遇到类别多的时候,会用到hash分桶,但没写具体的哈希函数?我再官网上也没找到这方面的解释?能说说hash分桶你为啥不写哈希函数吗?

qiaoguan commented 5 years ago

这样写代码很简洁,只用改input_fn和model_fn就OK,而且我提供的代码,几乎可以很容易实现任何模型. 我在input_fn里面有一个hash_bucket的feature column, 你可以搜一下这个api

jinzengnju commented 5 years ago

这是你定义的分桶特征列:creative_id = tf.feature_column.categorical_column_with_hash_bucket( 'creative_id', hash_bucket_size=200000, dtype=tf.int64)

hash到200000个不同的桶,但没写具体是怎样哈希的?也就是没有哈希函数!

qiaoguan commented 5 years ago

这个的大概意思就是 如果输入是value, 那输出的位置是 hash(value)mod 200000, hash函数是tensorflow帮你实现的

jinzengnju commented 5 years ago

嗯嗯,谢谢分享!对我的帮助很大!

sunjiadong commented 4 years ago

如果creative_id是32位16进制字符串,可以直接传进来吗,还是先处理成int型的?