Kaggle滑水 - CTR预估(LR)

下面,我们结合Kaggle赛题:Avazu:Click-Through Rate Prediction,练习数据挖掘技术在CTR预估中的应用。

本文内容包括赛题任务简析,以及基于LR(逻辑斯蒂回归)的初步实现。

本文的源码托管于我的Github:PnYuan - Kaggle_CTR,欢迎查看交流。

1.任务概述

CTR(Click Through Rate,点击率),是“推荐系统/计算广告”等领域的重要指标,对其进行预估是支持进一步地“商品推送/广告投放”等决策的基础。Avazu:Click-Through Rate Prediction是Kaggle2015举行的一场CTR预估比赛。赛事主办方提供了规约化的历史数据(train.csv)与待预测数据(test.csv),下述条目给出了该赛事任务的一些基本信息:

  • 任务输入:数据集文件:train.csv 和 test.csv。

  • 任务输出:给出预测集id所对应的CTR预估值,形如:

    id, click
    xx01, 0.118..
    xx02, 0.159..
    xx03, 0.162..
    
  • 评价方法:log-loss,二分类任务的交叉熵损失函数;

  • 原始数据规模(百万级样本数):

    训练集样本数:≈40.4M
    测试集样本数:≈4.58M
    
  • 原始特征(20+),有关特征的官方解释见赛题主页-Data,下面示意性列举了部分特征:

    id: int或string型,用户ID号,可作为样本索引;
    click:bool或int型,只存在于训练集中,样本的标签(是否点击:0-否,1-是);
    hour:int型,时间变量形如YYMMDDHH;
    C1:int型,匿名特征;
    banner_pos:int型,网页上的广告位置,离散特征0,1,2,3...
    app_id:string型,用户APP的ID;
    ...
    

据上所述,可以为该任务贴上一些初识标签,如:有监督学习、二分类概率预测、较大规模数据等等。

2.特征工程

本文拟给出一个基于LR的任务初步实现样例,主要目的是体验CTR预估的任务进行过程。在训练LR模型之前,首先要根据原始数据特点以及模型输入要求,对原始特征数据进行预处理以使更好的用于模型的训练与上线。

赛题主页-Data页对原始数据及其特征进行了简要说明。这里为简化计算过程,只选用部分原始特征进行实验,如下表所示:

特征名数值类型数值样例特征内涵
C1int1001,1004未知
banner_posint0,1,2…广告条目位置
site_domainstrf3845767,1b32ed33…Site领域
site_idstr1fbe01fe,fe8cc448…Site ID
site_categorystr28905ebd,0569f928…Site类型
app_idstrecad2386,98fed791…App ID
app_categorystr07d7df22,cef3e649…APP类型
device_typeint0,1,2…Device类型
device_conn_typeint0,1,2…Device接入类型
C14int20366,19251…未知
C15int320,120…未知
C16int50,250…未知

原始特征绝大多数为离散类别型(categorical)(包括上表所选特征在内)。当采用此类特征进行LR训练时,常进行独热编码(One-Hot Encoding)以使其数据更加利于模型学习。这里由于部分特征的类别取值数量巨大,全部采用One-Hot编码易产生高维度稀疏矩阵,影响学习效率,考虑到特征类别取值呈现长尾分布,如下图所示,故而先将稀有类别取值统一设置为“Other”,然后再进行One-Hot编码处理,从而在保留主体特征信息的同时,控制新特征维度,提高训练效率。

考虑到数据规模较大,这里采用dummyPy工具包来分块实现数据的One-Hot转换。

3.LR实验

LR(逻辑回归/对率回归)模型是一个非常简单实用的有监督学习模型,这里我们将其运用到对CTR预估的初步尝试中。考虑到数据量较大,这里我们采用sklearn.linear_model.SGDClassifier库函数来实现LR的增量式学习。通过设置默认的SGDClassifier超参数,采用分块式训练,得出训练过程损失(log-loss)曲线如下图所示。

初步分析曲线收敛状况可知,训练过程损失指标始终处于log-loss=0.4左右微振荡。猜测LR模型已大致完成对当前数据的拟合,但效果欠佳。采用经此训练的模型进行预测,得出结果提交至Kaggle评分为:

  • private:0.4172740 (rank 75%)
  • public: 0.4155279 (rank 74%)

之后,我们尝试引入更多的原始特征进行LR实验,获得了一定的结果提升,如:

  • private:0.4097192 (rank 72%)
  • public: 0.4118247 (rank 72%)

4.小结

本文围绕Avazu-CTR预估任务,以LR-based为基本方案,相继完成了:

  1. 任务和数据的解析;
  2. 原始特征抽取及其One-Hot编码预处理;
  3. LR训练及预测;

三部分的内容,取得了初步的评分结果。之后还可以在模型的选择与改进、特征工程的细致深入、训练调优策略的积极尝试等方面入手,进一步研究提高CTR预估效果。

5.参考资料

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值