赛题介绍

广告推荐主要基于用户对广告的历史曝光、点击等行为进行建模,如果只是使用广告域数据,用户行为数据稀疏,行为类型相对单一。而引入同一媒体的跨域数据,可以获得同一广告用户在其他域的行为数据,深度挖掘用户兴趣,丰富用户行为特征。引入其他媒体的广告用户行为数据,也能丰富用户和广告特征。

本赛题希望选手基于广告日志数据,用户基本信息和跨域数据优化广告ctr预估准确率。目标域为广告域源域为信息流推荐域,通过获取用户在信息流域中曝光、点击信息流等行为数据,进行用户兴趣建模,帮助广告域CTR的精准预估。

Task1 比赛报名与尝试

比赛网址:https://developer.huawei.com/consumer/cn/activity/digixActivity/digixdetail/101655281685926449?ha_source=co&ha_sourceId=89000234

报名比赛之后 -> 下载比赛数据

Baseline尝试

#安装相关依赖库 如果是windows系统,cmd命令框中输入pip安装,参考上述环境配置
#!pip install sklearn
#!pip install pandas#---------------------------------------------------
#导入库
import pandas as pd#----------------数据探索----------------
# 只使用目标域用户行为数据
train_ads = pd.read_csv('./train/train_data_ads.csv',usecols=['log_id', 'label', 'user_id', 'age', 'gender', 'residence', 'device_name','device_size', 'net_type', 'task_id', 'adv_id', 'creat_type_cd'])test_ads = pd.read_csv('./test/test_data_ads.csv',usecols=['log_id', 'user_id', 'age', 'gender', 'residence', 'device_name','device_size', 'net_type', 'task_id', 'adv_id', 'creat_type_cd'])# 数据集采样
train_ads = pd.concat([train_ads[train_ads['label'] == 0].sample(70000),train_ads[train_ads['label'] == 1].sample(10000),
])#----------------模型训练----------------
# 加载训练逻辑回归模型
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()
clf.fit(train_ads.drop(['log_id', 'label', 'user_id'], axis=1),train_ads['label']
)#----------------结果输出----------------
# 模型预测与生成结果文件
test_ads['pctr'] = clf.predict_proba(test_ads.drop(['log_id', 'user_id'], axis=1),
)[:, 1]
test_ads[['log_id', 'pctr']].to_csv('submission.csv',index=None)

提交结果为:

Task2 比赛数据分析

导入相关库

#安装相关依赖库 如果是windows系统,cmd命令框中输入pip安装,参考上述环境配置
#!pip install sklearn
#!pip install pandas
#!pip install catboost
# 如果有下载Anaconda,可以创建虚拟环境,然后输入:conda install -c https://conda.anaconda.org/conda-forge catboost
#---------------------------------------------------
#导入库
#----------------数据探索----------------
import pandas as pd
import numpy as np
import os
import gc
import matplotlib.pyplot as plt
from tqdm import *
#----------------核心模型----------------
from catboost import CatBoostClassifier
from sklearn.linear_model import SGDRegressor, LinearRegression, Ridge
#----------------交叉验证----------------
from sklearn.model_selection import StratifiedKFold, KFold
#----------------评估指标----------------
from sklearn.metrics import accuracy_score, f1_score, roc_auc_score, log_loss
#----------------忽略报警----------------
import warnings
warnings.filterwarnings('ignore')

目标域用户行为进行分析

  • 对于训练集 和 测试集,用户重合的比例是多少?
train_data_ads = pd.read_csv('./train/train_data_ads.csv')
test_data_ads = pd.read_csv('./test/test_data_ads.csv')
train_id_ads = train_data_ads['user_id'].unique()
test_id_ads = test_data_ads['user_id'].unique()
len(train_id_ads), len(test_id_ads) # 在训练集和测试集中,去重的id个数

#统计两个数组相同元素个数
#方法一:前面用户id已经去重了,但是这里不加set会报错
dup_id_len = len(set(train_id_ads) & set(test_id_ads))
dup_id_len
#方法二:
#duplicate_id = [x for x in train_id_ads if x in test_id_ads]
#dup_id_len = len(duplicate_id)

#对于训练集 和 测试集,用户重合的比例是多少?
ratio_dup_train = dup_id_len / len(train_id_ads)
ratio_dup_test = dup_id_len / len(test_id_ads)
ratio_dup_train, ratio_dup_test

  • 统计字段中有多少数值字段,多少非数值字段?
train_numeric_features = train_data_ads.dtypes[train_data_ads.dtypes != 'object'].index
print(len(train_numeric_features))
print(len(train_data_ads.dtypes) - len(train_numeric_features))

结果为28和7。也就是train_data_ads有28个数值字段,7个非数值字段。

test_numeric_features = test_data_ads.dtypes[train_data_ads.dtypes != 'object'].index
print(len(test_numeric_features))
print(len(train_data_ads.dtypes) - len(test_numeric_features))

结果为27和8。也就是train_data_ads有27个数值字段,8个非数值字段。

  • 统计哪些用户属性(年龄、性别、手机设备等)与 标签相关性最强?

DataFrame.corr()函数使用说明如下:

DataFrame.corr(method='pearson', min_periods=1)作用:
data.corr()表示了data中的两个变量之间的相关性,取值范围为[-1,1],取值接近-1,表示反相关,类似反比例函数,取值接近1,表正相关。参数说明:
method:可选值为{‘pearson’, ‘kendall’, ‘spearman’}
pearson:Pearson相关系数来衡量两个数据集合是否在一条线上面,即针对线性数据的相关系数计算,针对非线性数据便会有误差。
kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正太分布的数据。
spearman:非线性的,非正太分析的数据的相关系数。
min_periods:样本最少的数据量。
返回值:各类型之间的相关系数DataFrame表格。
train_data_ads.corr(method = 'kendall')['label']

结果,排前三分别是:

源域用户行为进行分析

  • 源域用户行为 与 目标域用户行为 训练集和测试集用户重合的比例分别是多少?
  • 统计字段中有多少数值字段,多少非数值字段?

【打卡】广告-信息流跨域ctr预估(待更新)相关推荐

  1. Coggle 30 Days of ML【打卡】广告-信息流跨域ctr预估

    Coggle 30 Days of ML[打卡]广告-信息流跨域ctr预估 任务介绍 赛题介绍 广告推荐主要基于用户对广告的历史曝光.点击等行为进行建模,如果只是使用广告域数据,用户行为数据稀疏,行为 ...

  2. 【华为AI比赛】广告信息流跨域CTR预估(持续更新)

    学习总结 暂时只是简单提交baseline,提交catboost后的线上成绩为0.71左右,持续更新本贴. 文章目录 学习总结 一.赛题解读 1.1 CTR赛题 1.2 比赛评估指标 1.3 比赛数据 ...

  3. 2022华为推荐赛事——广告-信息流跨域ctr预估——0.79方案分享

    本文目录如下: 一.赛事背景 二.解决方案 2.1 导入必要的库 2.2 数据读取 2.3 特征工程 自然数编码 目标域(广告域)穿越特征提取 内存压缩 源域特征构建 内存压缩 2.4 划分训练集和测 ...

  4. 广告-信息流跨域ctr预估

    广告-信息流跨域ctr预估 一.题目理解 二.环境配置 一.题目理解 广告推荐主要基于用户对广告的历史曝光.点击等行为进行建模,如果只是使用广告域数据,用户行为数据稀疏,行为类型相对单一.而引入同一媒 ...

  5. 项目开发总结:前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)

    项目背景:.Net 3.5+MySQL+jQuery+WebService 在公司做这个项目已经6个多月了,总结一些问题,也算是抛砖引玉吧,希望园子里更多的朋友一起分享一些技巧. 1. WebServ ...

  6. 阿里妈妈广告点击转化率(CTR)预估项目(附github代码)

    赛题与数据:https://tianchi.aliyun.com/competition/entrance/231647/introduction?spm=5176.12281957.1004.3.3 ...

  7. 推荐搜索炼丹笔记:MiNet阿里跨域点击率CTR预估

    作者:一元,公众号:炼丹笔记 MiNet: Mixed Interest Network for Cross-Domain Click-Through Rate Prediction(CIKM20) ...

  8. 论文解读:跨域推荐模型MiNet

    论文下载 代码下载 论文解读:跨域推荐模型MiNet 一.跨域推荐基础概念 1.1.什么是跨域推荐 1.2.跨域推荐的优劣 优势 劣势 二.背景 三.模型设计 3.1.3种类型用户兴趣 跨域长期兴趣( ...

  9. 深度学习CTR预估模型凭什么成为互联网增长的关键?

    本文是王喆在InfoQ开设的原创技术专栏"深度学习CTR预估模型实践"的第一篇文章(以下"深度学习CTR预估模型实践"简称"深度CTR模型" ...

最新文章

  1. 教程-Win7极速优化20项
  2. TSV_TNEW_PAGE_ALLOC_FAILED
  3. mybatis初始化过程
  4. 获取 HttpServletRequest 所有参数,获取所有Httpsession中参数
  5. 什么情况下java会出现堆溢出_【Java面试题第三期】JVM中哪些地方会出现内存溢出?出现的原因是什么?...
  6. PAIP.vs2010打开某个FORM窗体设计视图时崩溃时
  7. Python之 多重循环
  8. 3DMine安装教程(附详细图文安装步骤)
  9. Windows操作技巧0001--Windows 10 修改用户名文件夹名称
  10. tif怎么转换成jpg格式
  11. 职场职位缩写 PM,TM,PL,TL,SE,PG,CEO,CFO
  12. Unity,C#版的动画曲线,Tween:EaseIn,EaseOut,EaseInOut(编程语言翻译版本)
  13. CSS:flex实现骰子的6个面
  14. java 课设 商品库存管理系统
  15. 福清龙华职业中专计算机应用学校什么,福建省福清龙华职业中专学校招生专业|福建省福清龙华职业中专学校有哪些专业...
  16. 数据库置疑的处理方法
  17. Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转)
  18. rsa public key not find与Generate First a serial的解决方案-6.13日摸索总结
  19. 小技巧:unicode RLO
  20. jQuery结合Ajax

热门文章

  1. 中望cad机械版2020安装激活教程
  2. 常熟理工php实验三_常熟理工学院新闻网
  3. android gps nmea,读取Android GPS NMEA数据
  4. C程序设计语言——VC++2010安装教程
  5. pdf怎么拆分成一页一页的?办公常备工具说明
  6. 用python把json文件转excel
  7. 随机数生成器(结绳中文app编程)
  8. Linux登录sftp服务器
  9. Linux下多线程的操作
  10. Qt实战:Qt5.11.1安装与MSVC配置