IJCAI-18阿里妈妈广告搜索转化预测 总结
一、赛题
预测目标
最终预测结果为对应样本产生购买的概率,在0~1之间,与实际购买情况之间的logloss越低越好。
大赛官网:
https://tianchi.aliyun.com/competition/information.htm?spm=5176.100067.5678.2.65cd4558t2U77U&raceId=231647
二、数据
官方提供的数据已生成好train和test文件,在A榜和B榜时分别会提供test文件,只需对train与test文件进行特征提取及处理即可,无需再读入其他文件。
本次比赛为参赛选手提供了5类数据(基础数据、广告商品信息、用户信息、上下文信息和店铺信息)。基础数据表提供了搜索广告最基本的信息,以及“是否交易”的标记。广告商品信息、用户信息、上下文信息和店铺信息等4类数据,提供了对转化率预估可能有帮助的辅助信息。
大赛提供的数据格式为txt格式,分隔符为空格,在pandas中使用read_table读入 ,以分隔符sep = ' ',读取训练数据和测试数据。
三、数据分析
进入复赛后的A榜,数据量还较小,只在训练集train的1/3左右,训练集train的数量在120w条左右,由于内存容量有限,也为了保证训练集和测试集有较相近的分布,在经过粗略估计test_a的数据量是train采样1/3的效果,在采样读取中使用到到read_table中提供的跳行读取的接口skiprows,使得其以1/3的概率为False即可完成只读取1/3数据量的效果。此外,本次比赛中第一次用到了内存回收gc,由于在过程只,产生的中间变量会占用大量内存,为了节省内存空间,在del 相关变量后,还需要使用内存回收命令gc.collect()来完成内存的回收,用以释放内存。
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as pltfrom sklearn.model_selection import StratifiedKFold
#from lxyTools.singleModelUtils import singleModel
from sklearn.metrics import log_loss
import lightgbm as lgb
#from lxyTools.featureSelect import maximalInformationCoef
#from lxyTools.featureSelect import micCompute
import random
import gc
gc.collect()
random.seed(10)flag=False
def rowRandomSelect(x):global flagif not flag:print('a')flag=Truereturn Falseelse:return random.random()>0.33testData = pd.read_table('./Data/round2_ijcai_18_test_a_20180425.txt', sep=' ')
trainData = pd.read_table('./Data/round2_train.txt', sep=' ', skiprows=rowRandomSelect)
由于点击的发生是一个时序的事件,需要对时间戳进行处理,在原始数据中提供的是以s为单位的原始时间数据,需要进行标准转化,使用pandas库自带的to_datetime函数进行转化。由于原始提供的数据每一整天(24h)的样本都是从前一天下午16:00-第二天下午16:00,这样不便于数据分析,和我们正常理解的一天也有偏差,选择对数据进行偏移,整体时间都增加8小时,转化到一天为0点到24点,并且在转化后的数据图形化分析时,发现前一天的24点和后一天0点的数据也基本能接上,表示这一偏移是合理的。
trainData['context_timestamp'] = pd.to_datetime(trainData['context_timestamp'], unit='s')testData['context_timestamp'] = pd.to_datetime(testData['context_timestamp'], unit='s')trainData.context_timestamp += pd.to_timedelta('8:00:00') # 进行时间偏移,将一天的时间跨度由16:00偏移到00:00开始的跨度
testData.context_timestamp += pd.to_timedelta('8:00:00')
从转换完的标准数据中将日期 和 小时 的时间信息分出来,并将日期转换为第几天的样本,方便数据分析,之后即可获得样本中的点击数量、购买数量等数值统计信息,统计在各小时内的点击数量(count)及转化数量(is_trade),然后采用seaborn库进行可视化的数据分布分析,观察在各天内各小时的点击情况。
plt.figure()
sns.countplot(trainData.hour)plt.figure()
sns.countplot(trainData.day) # 从这里可以看出 在第6天时的浏览量远超其他天的浏览量,预计第6天为节前的一天,用户大量浏览商品g = sns.FacetGrid(alldata, col="day")
g.map(sns.countplot, 'hour')g = sns.FacetGrid(alldata, col="day")
g.map(sns.countplot, 'hour')
g = sns.FacetGrid(trainData, col="day")
g.map(sns.barplot, 'hour', 'is_trade')g = sns.FacetGrid(trainData, col="day")
g.map(sns.barplot, 'user_gender_id', 'is_trade')g = sns.FacetGrid(trainData, col="day")
g.map(sns.barplot, 'user_occupation_id', 'is_trade')
然后对一些list类型中的id类进行了试探性的统计分析,最后只发掘出了item_category_list中的第二个id与is_trade有一点相关(应该说是is_trade在这个id上分布不太一致),其他id类没有明显的区别。
————————————明日再更————————————
IJCAI-18阿里妈妈广告搜索转化预测 总结相关推荐
- IJCAI 2018 阿里妈妈广告预测算法大赛
背景 本项目是天池的一个比赛,由阿里妈妈和天池大数据众智平台举办的广告预测算法大赛,本次参赛人数5200多个队伍,而我们只取得了731的成绩,最遗憾的是当我们写好CNN预测结果准备上传,队伍却意外解散 ...
- 阿里妈妈广告商品点击数据分析
阿里妈妈广告商品点击数据分析报告 一.分析背景与目的 数据源:[https://tianchi.aliyun.com/dataset/dataDetail?dataId=56] 阿里妈妈发展势头迅猛, ...
- CSDN博客放阿里妈妈广告代码的方法
CSDN博客放阿里妈妈广告代码的方法.最近阿里妈妈广告投放平台以其新颖的模式,符合互联网本质的方法,以迅猛发展的势头向传统广告商发起挑战,阿里妈妈的口号是:只要你有网站,只要你有博客,甚至,只要你可以 ...
- 阿里妈妈广告进入联合早报网
阿里妈妈广告进入联合早报网,有图为证: 上图为单条早报新闻的页面截图,图中右上角和左下角的广告均是阿里妈妈系统提供的广告.示例原文地址为http://www.zaobao.com/zg/zg08100 ...
- 感觉有些阴险的阿里妈妈广告。。。。
感觉有些阴险的阿里妈妈广告.... 我在我的公告栏申请了个阿里妈妈广告...现在广告放上去了.在阿里妈妈管理平台里面,确没有交易记录. 很多人去他那边申请广告位.没有购买就等于免费给阿里妈妈做广告.. ...
- 用ControlJS优化阿里妈妈广告
长时间以来阿里妈妈的广告载入策略一直存在些问题,很多页面也因为阻塞式的广告载入而被拉低性能,影响用户体验.毕竟阿里妈妈广告的渲染依赖于诸多嵌套的document.write.ControlJS的目标就 ...
- 推荐!CSDN博客放阿里妈妈广告代码的方法
推荐!CSDN博客放阿里妈妈广告代码的方法 分类: 软件之外2009-12-28 13:46 427人阅读 评论(0) 收藏 举报 最近阿里妈妈广告投放平台以其新颖的模式,符合互联网本质的方法,以迅猛 ...
- 按键精灵刷阿里妈妈广告联盟源码 V1.1版
//V1.1版 点两次是一样的,去掉. //by小黄人软件 //按键精灵刷阿里妈妈广告联盟源码 后台运行 并显示点击次数 UserVar Yanshi=2000 "时间(毫秒)" ...
- 按键精灵刷阿里妈妈广告联盟源码 后台运行 并显示点击次数 亲测有效
按键精灵刷阿里妈妈广告联盟源码 后台运行 并显示点击次数 UserVar Yanshi=2000 "时间(毫秒)" UserVar Num=0 "次数" //h ...
最新文章
- 写出一个超强的lighttpd模块
- Mybatis 中使用CDATA
- ambari集成mysql_Ambari 安装配置 MySql
- 使用dom breakpoint找到修改属性的javascript代码
- 你的网页加载太慢了怎么办?
- SQL UPDATE with INNER JOIN
- openoffice转换过程中遇到繁体字文档转换失败的问题
- (36) css企业代码书写规范
- golang 包含 数组_在 Golang 中如何快速判断字符串是否在一个数组中
- python np数组中括号里面‘:n‘与‘n:‘什么意思
- The process cannot access the file '' because it is being used by another process.....
- 纯真数据库 解析 php,PHP解析纯真IP数据库(qqwry.dat)
- linux硬盘对拷ghost教程,用dd实现linux硬盘备份 GHOST
- 零线和地线的区别、示波器如何测量市电
- 四川教师职称计算机考试试题,四川省中小学教师职称计算机应用能力考试、外语免试审批表.doc...
- 2020中国人工智能产业链企业图谱(名单)
- 7 11 藏尾诗c语言,为你写诗:11种杂体诗,汉语太神奇
- 数据库语法整理及WAF绕过方式
- HPUoj1210: OY问题 [搜索](DFS
- 【计算机基础】多媒体技术、网页制作、计算机网络
热门文章
- C#基于Twain协议调用扫描仪,设置多图像输出模式(Multi image output)
- java之详解坦克大战_Java之详解坦克大战游戏(一)
- Python循环语句(while循环、for循环)
- java号段_Java匹配国内手机号码段
- 天正建筑T20图层英文变中文
- 编程之类的文案_有什么让人瞬间充满希望的文案?
- 阿里布局大数据 盈利模式还需探索
- 路遥《平凡的世界》经典哲语
- 公共关系礼仪实务章节测试题——公共关系的类型(三)
- 浪潮nf5270m4导轨安装_浪潮NF5270M4安装windows2012+FTP服务器