鱼遇雨欲语与余在2019腾讯广告赛中使用的技巧

根据比赛的评价指标自定义模型的损失函数

log变换

这里我们对训练目标进行了不断优化,首先是最基本的训练目标,即广告日曝光量。然后考虑到0会导致梯度不平滑,所以对训练目标做了log变换,保证梯度平滑。

清洗数据

1.去除异常值
2.对于不那么重要的缺失值,补0或-1;对于与label相关性较强的缺失值,补中位数

对时序数据的理解

我们知道复赛A榜训练集和测试集是连续的,即10号-22号训练集,23号为测试集。复赛B榜则是不连续的,没有给出23号的标签,直接预测24号。
面对这种“跨天”预测,难度是非常大的,因为日期越近的信息是越与当天相近的,因此前一天的信息是非常重要的。

1.我们利用“远程监督”的方式,就是利用现有的标注数据,即10-22号数据,训练一个模型,给未标注数据(23号数据)进行标注,然后再将10-22与23号合并成训练集进行训练,预测最终的结果。
2.对于与label关系较密切的特征,取其距离test日期最近的值为一新特征

构造统计特征

除常见统计量count mean sum,还有result[col+’_negs’] = result[col+’_count] - result[col+’_sums’]

将数据分成前一天、最近五天、五折交叉统计和除当天外所有天来分别统计特征

处理连续值特征

例如时间

先离散化,再取one-hot向量

处理ID对

例如uid和对应的itemid组合

取uid最常访问的前k个itemid作为特征(多值特征)

新物品冷启动

对于没有历史数据的物品,取具有相似特征的旧物品,将旧物品的历史数据特征赋予新物品

Embedding 特征

产生Embedding向量的方法有两种:word2vec和deepwalk
分别可以groupby主键,取副键的序列求Embedding向量,通常为groupby uid,取aid,itemid,authorid的Embedding向量

word2vec

首先是对日志数据按天进行排序,然后是按天构建uid的行为序列并转化

这里不仅可以构造uid到广告id,还可以是uid到商品id,uid到账户id。

deepwalk

  1. 只有在日志中曝光过的广告才会有相应的嵌入向量,通过广告有无嵌入向量,会泄露了无曝光广告的标签
  2. 测试数据中存在曝光非0但无嵌入向量的广告,这在训练集中是不存在的,导致训练测试不一致
    以上问题在embeding后要通过eda才能发现,所以构造新特征并merge之后要观察新特征在训练集和测试集中的分布,不能无脑merge
    这里我们给出了解决方法,即随机掩盖掉5%广告的嵌入向量,保证训练集中也能出现无曝光的广告。

融合

不同模型预测值的加权平均

编程小技巧

1.用Counter()初始化空dict,再对其赋值,且Counter变量可用于对dict统计出现频率例如Counter.most_common(k)
2.用try…except:pass来执行del代码

[1] https://zhuanlan.zhihu.com/p/73062485

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值