关于腾讯算法大赛

腾讯算法大赛

本文参考于我协会前会长吴师兄的文档

腾讯社交广告高校算法大赛是面向高校大学生的算法大赛,作为腾讯核心的广告业务单元,腾讯社交广告通过对海量社交数据进行深入分析,构建多样广告场景,与8亿用户连接对话。在大数据、机器学习领域的持续创新投入,驱动社交广告生态发展。本次大赛旨在开放腾讯在社交和数字广告领域的真实数据,面向高校学生征集最智慧的算法解决方案。

详细的赛题见腾讯算法大赛, 记得也把 FAQ 看完, 里面也包含了许多重要信息

赛题比较难理解, 因为赛题属于广告学范畴, 如果实在难以理解赛题的可以先看看这篇文章, 看完再重新看一遍赛题就会通透许多转化率预估

官方已经不再关闭数据的下载通道了, 不过之前已经备份到了百度云, 在这里提供给大家官方数据下载


赛题要求

官方提供17-30天移动 APP 的广告、用户的转化情况,及相关上下文, 根据这些数据预测第31天指定用户和对应广告的转化率.

评估方式 (赛题中提供的计算公式)

通过Logarithmic Loss评估(越小越好),公式如下:


img_1145a19821d280defc5f5996ec7f7bfc.png

其中,

N是测试样本总数,

yi是二值变量,取值0或1,表示第i个样本的label,

pi为模型预测第i个样本 label为1的概率。

示例代码(Python语言实现):


img_0dc00fe262043fb23e8ef83fb0855152.png

项目目的

主要在于剖析和学习大赛中取得 第64 名大牛的分享, 对其代码进行理解和分析, 主要着重点在于特征工程。

机器学习的主要流程

img_b555dfeaf8734c140afc681748bb7d54.png
机器学习流程


数据分析和清洗方法

img_06dfe69f900845b79a5c49047ef4cbf8.png

关于数据分析,阅读FAQ可知:

App 的激活定义为用户下载后启动了该App,即发生激活行为。从用户点击广告到广告系统得知用户激活了App(如果有),通常会有较长的时间间隔,主要由以下两方面原因导致:

1) 用户可能在下载之后过了很久才启动App;

2) 用户启动App的行为需要广告主上报回传给广告系统,通常会有一定的延时。

这里回流时间表示了广告主把App激活数据上报给广告系统的时间,回流时间超过5天的数据会被系统忽略。

值得注意的是,本次竞赛的训练数据提供的截止第31天0点的广告日志,因此,对于最后几天的训练数据,某些label=0并不够准确,可能广告系统会在第31天之后得知label实际上为1。

某些app和用户的记录比较少

最后几天有部分数据不准确

对于这个问题, 这里采用了比较暴力的方法, 将最后几天这些可能会出现问题的数据删除


特征工程

特征工程即根据基本的数据提取出更多有用的数据, 然后结合基本特征来选取最终决定需要采用训练的特征数据, 往往特征工程决定了最终预测的效果

基本数据在官方已经提供了数据描述的表格, 这个一定要好好理解每一个字段的作用, 这里就不重复描述数据的字段了

在这里先强调一下,在做完特征工程之后, 我们得到了更多的特征, 但并不是每一个特征都对模型的训练有用, 故此我们需要对特征进行筛选 (不仅仅是单方面的取舍, 还需要根据重要的程度进行权重的分配)

通过数据分析,计划以下的特征作为最终的训练数据标签

1.基础特征:计数特征、转化率、比例特征等各种基本的特征(各种ID)

2.用户当天行为特征:基于当天数据统计的用户行为、app行为的特征

3.用户历史行为特征:word2vec 计算用户行为与历史行为的关联


1. 基础特征

基础特征即腾讯官方提供的数据,各种的ID标签,将一些没用的标签去掉即可,不需

要作过多的处理


2、3 用户行为特征的处理

用户行为特征的处理逻辑较为繁琐, 也是整个项目中最繁琐的操作, 逻辑比较难理

清,建议通过源码来理解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NavigationView更改菜单icon和title颜色变化效果

NavigationView menu默认icon和title会随着菜单状态改变而改变,选择某个菜单后再次打开侧边菜单后会发现该菜单的icon和title会变成应用的主颜色,其他菜单项仍然为黑色。 如果想关闭系统默认的这个效果,有两种方式: 1. XML布局文件…

kangle服务器搭建java_linux下kangle虚拟主机-架设java空间的教程及心得

1. chmod x jdk-6u31-linux-i586-rpm.bin2. ./jdk-6u31-linux-i586-rpm.bin复制代码(注:如果下载的版本不同输入实际版本)2.下载插件包:1. wget http://www.kanglesoft.com/download/ent/easypanel-tomcat-lin-1.0.tar.gz2. tar xzf easypanel-tomcat-lin-1.0.tar.g…

Django项目--csrf攻击

1.案例流程图: 2.django防止csrf的方式: 1 ) Django中默认打开csrf中间件。settings.py文件中: MIDDLEWARE_CLASSES (django.contrib.sessions.middleware.SessionMiddleware,django.middleware.common.CommonMiddleware,django.middlewar…

mysql count(*),count(1)与count(column)区别

2019独角兽企业重金招聘Python工程师标准>>> count(*)对行的数目进行计算,包含NULL count(column)对特定的列的值具有的行数进行计算,不包含NULL值。 count()还有一种使用方式,count(1)这个用法和count(*)的结果是一样的。 性能问…

Flask项目--预防csrf攻击原理

1.CSRF机制原理 2.csrf成功攻击示意图 3.csrf防御

Flsak项目--图片验证码

0. 图片验证码的使用流程 2.后端接口编写 verify_code.py中编写接口代码: # coding:utf-8from . import api from ihome.utils.captcha.captcha import captcha from ihome import redis_store, constants, db from flask import current_app, jsonify, make_respo…

js异步解决方案 --- 回调函数 vs promise vs generater/yield vs async/await

javascript -- 深度解析异步解决方案 高级语言层出不穷, 然而唯 js 鹤立鸡群, 这要说道js的设计理念, js天生为异步而生, 正如布道者朴灵在 node深入浅出--(有兴趣的可以读一下, 很有意思^_^) , 异步很早就存在于操作系统的底层, 意外的是,在绝大多数高级编程语言中…

sql注入基本原理

1. 参考文献: 趣解SQL注入原理 Sql注入基本原理 2.参考书籍

centos7硬盘分区

首先在虚拟机的设置中为系统添加硬盘 使用fdisk -l /dev/sdb 查看未分区的硬盘 fdisk -l /dev/sda 这是已经分区好得 接下来我们就要对sdb进行分区: 首先使用fdisk /dev/sdb 接着输入m可以看到详细命令 进行添加分区 已经建立好4个主分区,在建立时会看到以下 删除…

从MapReduce的执行来看如何优化MaxCompute(原ODPS) SQL

摘要: SQL基础有这些操作(按照执行顺序来排列): from join(left join, right join, inner join, outer join ,semi join) where group by select sum distinct count order by 如果我们能理解mapreduce是怎么实现这些SQL中的基本操…

套接字(socket)基本知识与工作原理

套接字(socket)基本知识与工作原理 一、Socket相关概念 Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的。) SOCKET用于在两个基于TCP/IP协议的应用程序之…

python 多线程--重点知识

1.全局变量global的用法 2.多线程共享全局变量-args参数 注意args参数类型为元组,逗号不能少!

当导用模块与包的import与from的问题(模块与包的调用)

当在views.py里写impor models会不会报错呢? 1、Python里面的py文件都是每一行的代码。2、Python解释器去找一个模块的时候,只去sys.path的路径里找3、django项目启动(django项目的启动文件是manage.py)启动项目是将manage.py的路…

Python多线程--互斥锁、死锁

1、互斥锁 为解决资源抢夺问题,使用mutex Threading.Lock()创建锁,使用mutex.acquire()锁定,使用mutex.release()释放锁。 代码一: import threading import time# 定义一个全局变量 g_num 0def test1(num):global g_num# 上锁…

freemind 要下载java_Freemind

动手编辑先按Ctrln,新建一个文件。这时出现了一个根节点。用光标单击它,改成“我学FreeMind”,然后在节点之外任一地方点击鼠标(或按Enter)完成编辑。然后,按Insert键,输入“下载安装”,按Enter键&#xff…

pyecharts对于经纬度_一文带你掌握Pyecharts地理数据可视化的方法

本文主要介绍了Pyecharts地理数据可视化,分享给大家,具体如下:一、Pyecharts简介和安装1. 简介Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Pyth…

使用Sqlmap对dvwa进行sql注入测试(初级阶段)

0.测试准备 1)打开Kali虚拟机终端; 2)打开靶机OWASP,并通过浏览器,输入IP地址进入dvwa的主页,然后选择SQL injection进入SQL注入的测试页面 1.获取DVWA的url和cookie 在输入框中输入1,显示有内容&…

如果备份还原SecureCRT、Xshell远程工具远程

因为有时候电脑操作系统要重新安装,需要将远程备份下来。或者要将远程发给其他同事。一、如何备份还原SecureCRT远程1、打开options-global options---general---configuration paths找到配置文件保存路径,如下图:2、打开C:\Users\NUC\AppDat…

Centos7 下yum安装mysql

转载于:https://www.cnblogs.com/nbjjy/p/9023991.html