DeepFM梳理

DeepFM梳理

1、准备

  • feature_index
    • 一个数值特征:一个 feature_index
    • 一个类别特征: category_name.unique() 个 feature_index
  • feature_value
    • 一个数值特征:一个 feature_value,feature_value = 数值特征实际数值
    • 一个类别特征:多个 feature_value,feature_value = 1

这里要多问一句,为什么类别特征的feature_value=1呢?回顾FM的公式 y = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n < v i , v j > x i x j y=w_0 + \sum_{i=1}^{n}w_ix_i+\sum_{i=1}^{n}\sum_{j=i+1}^{n}<v_i,v_j>x_ix_j y=w0+i=1nwixi+i=1nj=i+1n<vi,vj>xixj,拿 ∑ i = 1 n w i x i \sum_{i=1}^{n} w_ix_i i=1nwixi来说,当特征 x i x_i xi为数值型时当然可以直接带入公式计算,但是当特征 x i x_i xi为类别型时怎么办呢?

        其实好办!!!

把所有类别型的value当成是1,然后只需要通过梯度下降求出每个类别型变量特征的系数 w i w_i wi即可。

2、参数定义

  • feature_size

    • feature_index范围,对应所有特征取值
    • 进行embedding用到
  • field_size

    • 原始特征个数
    • 数值特征一个field可以映射到一个feature_index
    • 类别特征一个field可以映射到多个feature_index
  • embedding

    • [dfm_params[‘feature_size’], dfm_params[‘embedding_size’]]
    • 将 feature_size,转成 feature_size * embedding
  • deep layers

    • input_size = dfm_params[‘field_size’] * dfm_params[‘embedding_size’]
    • deep(1) : [input_size,dfm_params[‘deep_layers’][0]]
    • deep(i) : [dfm_params[‘deep_layers’][i - 1], dfm_params[‘deep_layers’][i]]
    • 将 field_size,field_size * embedding_size,再全连接
    • out
      • if ues_deep and use_fm:
        • input_size = field_size + embedding_size + deep_layers[-1]
        • field_size:一阶
        • embedding_size:二阶
        • deep_layers[-1]:高阶
      • If use_deep:
        • input_size = deep_layers[-1]
      • elif use_fm:
        input_size = field_size + embedding_size

3、执行

  • embeddings
    • embeddings = tf.nn.embedding_lookup(weights[‘feature_embeddings’],feat_index)
    • 将 feature_size * embedding 转化成 field_size * embedding
    • 254*8 --> 37*8 总表到查表的过程
    • 从feature_index 和 feature_value中,生成embedding
  • 生成 1 阶特征
    • 生成一阶特征
  • 生成 2 阶特征
    • 生成embddding特征
  • 深度部分
    • 输入:field_size * embedding_size
    • 相当于:每个特征隐向量 --> reshape
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值