当前位置:网站首页>【打卡】广告-信息流跨域ctr预估(待更新)
【打卡】广告-信息流跨域ctr预估(待更新)
2022-08-04 15:42:00 【YKbsmn】
赛题介绍
广告推荐主要基于用户对广告的历史曝光、点击等行为进行建模,如果只是使用广告域数据,用户行为数据稀疏,行为类型相对单一。而引入同一媒体的跨域数据,可以获得同一广告用户在其他域的行为数据,深度挖掘用户兴趣,丰富用户行为特征。引入其他媒体的广告用户行为数据,也能丰富用户和广告特征。
本赛题希望选手基于广告日志数据,用户基本信息和跨域数据优化广告ctr预估准确率。目标域为广告域,源域为信息流推荐域,通过获取用户在信息流域中曝光、点击信息流等行为数据,进行用户兴趣建模,帮助广告域CTR的精准预估。
Task1 比赛报名与尝试
报名比赛之后 -> 下载比赛数据
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_data_ads.dtypes
test_data_ads.dtypes
- 统计哪些用户属性(年龄、性别、手机设备等)与 标签相关性最强?
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']
结果,排前三分别是:
对源域用户行为
进行分析
源域用户行为
与目标域用户行为
训练集和测试集用户重合的比例分别是多少?- 统计字段中有多少数值字段,多少非数值字段?
边栏推荐
- dot net double 数组转 float 数组
- DevOps平台中的制品库是什么?有什么用处?
- 成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
- 吴恩达机器学习[11]-机器学习性能评估、机器学习诊断
- 数据分析入门导读
- 把boot和APP一起烧录进MCU
- 06-总线
- 西安纵横资讯×JNPF:适配中国企业特色,全面集成费用管控体系
- Projector reached the party benefits 】 【 beginners entry - brightness projection and curtain selection - from entry to the master
- 云存储硬核技术内幕——(9) 相见时难别亦难
猜你喜欢
The electromagnetic compatibility EMC protection study notes
What are the useful IT asset management platforms?
不需要服务器,教你仅用30行代码搞定实时健康码识别
Xi'an Zongheng Information × JNPF: Adapt to the characteristics of Chinese enterprises, fully integrate the cost management and control system
Why, when you added a unique index or create duplicate data?
For循环控制
SAP ABAP SteamPunk 蒸汽朋克的最新进展 - 嵌入式蒸汽朋克
06-总线
Legal education combined with VR panorama, intuitively feel and learn the spirit of the rule of law
74行代码实现浪漫的红心下落的动画效果
随机推荐
Typora收费?搭建VS Code MarkDown写作环境
Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
JVM Tuning-GC Fundamentals and Tuning Key Analysis
你一定从未看过如此通俗易懂的YOLO系列(从v1到v5)模型解读
DocuWare Platform - Content Services and Workflow Automation Platform for Document Management (Part 1)
全差分运放:THS4140
【已解决】allure无法生成json文件和AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
云存储硬核技术内幕——(13) 抓手,组合拳与闭环
【Gopher 学个函数】边学边练,简单为 Go 上个分
uni-app之renderjs
招募 | 香港理工大学Georg Kranz 博士诚招博士
C#命令行解析工具
【Harmony OS】【FAQ】Hongmeng Questions Collection 2
7 天学个Go,Go 结构体 + Go range 来学学
GPS satellite synchronization clock, NTP network synchronization clock, Beidou clock server (Jingzhun)
数据分析入门导读
第三章 Scala运算符
06-总线
07-输入输出系统
dotnet core 添加 SublimeText 编译插件