wide & Deep 和 Deep & Cross 及tensorflow实现

前言

  最近读了下Google的两篇文章《Wide&Deep Learning》和《Deep&Cross Network》,趁着热乎比较下,顺道写个demo,免得后面用的时候瞎搞。
  前者是用来给用户推荐潜在喜欢的APP;后者是用来预测用户可能点击的广告排序。基于用户基本信息和行为日志来做个性化的推荐,是商业化的重要一步,做得好,用户使用起来甚是满意,广告商支付更多费用;做得差,大家只能喝喝西风,吃点咸菜。

Why Deep-Network ?

  关于推荐,前面博文FTRL系列讲过,那是种基于基本特征和二维组合特征的线性推荐模型。其优点:模型简单明白,工程实现快捷,badcase调整方便。缺点也很明显:对更高维抽象特征无法表示,高维组合特征不全。而Deep-Network能够表达高维抽象特征,刚好可以弥补了线性模型这方面的缺点。

Why Cross-Network ?

  组合特征,为什么止步于两维组合?多维组合,不单说手挑组合特征费时费力,假设特征都组合起来,特征的数量非得彪上天不可。但是Cross-Network(参考5)则可以很好地解决组合特征的数量飙升的问题。所以说,并不是问题真难以解决,只不过牛人还没有解它而已。
结构比较
  啥都不如图明白,直接上图,左侧 Wide and Deep Network 右侧 Deep and Cross Network


  上面两个图清晰地表示了两种方法的框架结构。

特征输入

  1)W&D的特征包括三方面:
    User-Feature:contry, language, demographics.
    Contextual-Feature:device, hour of the day, day of the week.
    Impression-Feature:app age, historical statistics of an app.
  1.1)Wide部分的输入特征:
    raw input features and transformed features [手挑的交叉特征].
    notice: W&D这里的cross-product transformation:
    只在离散特征之间做组合,不管是文本策略型的,还是离散值的;没有连续值特征的啥事,至少在W&D的paper里面是这样使用的。
  1.2)Deep部分的输入特征: raw input+embeding处理
    对非连续值之外的特征做embedding处理,这里都是策略特征,就是乘以个embedding-matrix。在TensorFlow里面的接口是:tf.feature_column.embedding_column,默认trainable=True.
    对连续值特征的处理是:将其按照累积分布函数P(X≤x),压缩至[0,1]内。
    notice: Wide部分用FTRL+L1来训练;Deep部分用AdaGrad来训练。
  Wide&Deep在TensorFlow里面的API接口为:tf.estimator.DNNLinearCombinedClassifier
  2)D&C的输入特征及处理:
    所有输入统一处理,不再区分是给Deep部分还是Cross部分。
    对高维的输入(一个特征有非常多的可能性),加embeding matrix,降低维度表示,dense维度估算: 6(categorycardinality)1/4 6 ∗ ( c a t e g o r y − c a r d i n a l i t y ) 1 / 4
    notice:W&D和D&C里的embedding不是语言模型中常说的Word2Vec(根据上下文学习词的低维表示),而是仅仅通过矩阵W,将离散化且非常稀疏的one-hot形式词,降低维度而已。参数矩阵的学习方法是正常的梯度下降。
    对连续值的,则用log做压缩转换。
    stack上述特征,分别做deep-network和Cross-network的输入。
cross解释
  cross-network在引用5中有详细介绍,但是在D&C里面是修改之后的cross-network。

  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值