f1 score 代码_腾讯广告算法大赛冠军代码解读:稠密特征工程

7e063266c2a5225f859930907ac30e42.png

什么是稠密特征?

本赛题中利用 word2vec 变换得到的特征维度设定为 n*64,因此得到的稠密特征也是一个 n*64 的矩阵。稠密的特性体现在,64 个维度上每一个维度都存在有意义的值,需要进行计算。如下图:

616d47db4fd45fbce7882feca459a1b7.png

291eefe0e20e573f07b084b82d75c509.png

稠密特征的特点是保留了尽可能多的信息,但是相应的也增加了很多的计算量,大大提高了计算的时间复杂度。

如何得到稠密特征?

本赛题中使用 word2vec 和 deepwalk 两种模型来获得稠密特征。

word2vec 旨在利用一个简单的神经网络模型,对特征按照神经元个数进行矩阵分解,得到的中间矩阵就是我们想要的稠密特征。

deepwalk 是一个图模型,旨在表达节点之间的点和边的关系。可以得到如下图的矩阵:

a402f29eaf5edcd9cc2bbeb3903baebf.png

代码

word2vec

model = Word2Vec(sentence, size=L, window=10, min_count=1, workers=10,iter=10)

deepwalk

# 构建图
    dic={}
    for item in log[[f1,f2]].values:
        try:
            str(int(item[1]))
            str(int(item[0]))
        except:
            continue
        try:
            dic['item_'+str(int(item[1]))].add('user_'+str(int(item[0])))
        except:
            dic['item_'+str(int(item[1]))]=set(['user_'+str(int(item[0]))])
        try:
            dic['user_'+str(int(item[0]))].add('item_'+str(int(item[1])))
        except:
            dic['user_'+str(int(item[0]))]=set(['item_'+str(int(item[1]))])
# 构建路径
path_length=10        
    sentences=[]
    length=[]
    for key in dic:
        sentence=[key]
        while len(sentence)!=path_length:
            key=dic[sentence[-1]][random.randint(0,dic_cont[sentence[-1]]-1)]
            if len(sentence)>=2 and key == sentence[-2]:
                break
            else:
                sentence.append(key)
        sentences.append(sentence)
        length.append(len(sentence))
        if len(sentences)%100000==0:
            print(len(sentences))
# 使用 word2vec 训练Deepwalk模型
    random.shuffle(sentences)
    model = Word2Vec(sentences, size=L, window=4,min_count=1,sg=1, workers=10,iter=20)
# 对模型进行输出
out_df=pd.DataFrame(w2v)

赛题里是如何使用稠密特征的?

本赛题是直接将稠密特征放入 MLP 中计算的

if hparams.dense_features is not None:
   feed_dic[self.dense_features]=train_dense_features[idx*hparams.batch_size:
    min((idx+1)*hparams.batch_size,len(train))]
...
loss,_,norm=sess.run([self.score,self.update,self.grad_norm],feed_dict=feed_dic)

本赛题中涉及到到稠密特征?

  • uid_w2v_embedding_aid_64_1
  • uid_w2v_embedding_aid_64_2
  • ...
  • uid_w2v_embedding_aid_64_64
  • uid_aid_aid_deepwalk_embedding_64_1
  • uid_aid_aid_deepwalk_embedding_64_2
  • ...
  • uid_aid_aid_deepwalk_embedding_64_64
  • periods_on_1
  • periods_on_2
  • ...
  • periods_on_48
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值