天池新人实战赛-阿里移动推荐算法大赛(离线赛与平台赛)

原创 2016年04月13日 17:04:23

平台赛最终成绩5/1629,算是没辜负我这10天的付出吧。。。我要去玩有奖金的了0.0





竞赛题目 (离线赛与平台赛题目一样,只是数据量不一样,离线2000w+条数据,平台11亿+条数据)


在真实的业务场景下,我们往往需要对所有商品的一个子集构建个性化推荐模型。在完成这件任务的过程中,我们不仅需要利用用户在这个商品子集上的行为数据,往往还需要利用更丰富的用户行为数据。定义如下的符号:
U——用户集合
I——商品全集
P——商品子集,P ⊆ I
D——用户对商品全集的行为数据集合

商品子集都是偏服务类的商品,涵盖阿里巴巴集团十个主要的商品大类,例如汽车售后服务、摄影服务、餐饮、电影等,其特色是线上购买、线下服务。
那么我们的目标是利用D来构造U中用户对P中商品的推荐模型。

数据说明
本场比赛提供20000用户的完整行为数据以及百万级的商品信息。竞赛数据包含两个部分。

第一部分是用户在商品全集上的移动端行为数据(D),表名为tianchi_fresh_comp_train_user_2w,包含如下字段:

 字段

字段说明

提取说明

 user_id

 用户标识

 抽样&字段脱敏

 item_id

 商品标识

 字段脱敏

 behavior_type 

 用户对商品的行为类型

 包括浏览、收藏、加购物车、购买,对应取值分别是1、2、3、4。

 user_geohash

 用户位置的空间标识,可以为空

 由经纬度通过保密的算法生成

item_category

商品分类标识

字段脱敏

time

行为时间

精确到小时级别

 

第二个部分是商品子集(P),表名为tianchi_fresh_comp_train_item_2w,包含如下字段: 

 字段

字段说明

提取说明

 item_id

 商品标识

 抽样&字段脱敏

 item_ geohash

 商品位置的空间标识,可以为空

 由经纬度通过保密的算法生成

 item_category 

 商品分类标识

 字段脱敏

训练数据包含了抽样出来的一定量用户在一个月时间(11.18~12.18)之内的移动端行为数据(D),评分数据是这些用户在这个一个月之后的一天(12.19)对商品子集(P)的购买数据。参赛者要使用训练数据建立推荐模型,并输出用户在接下来一天对商品子集购买行为的预测结果。

有了新想法我先在离线赛上实验,成绩有提升我才去平台赛,不过也遇到一些问题,在hive里运行一点问题没有的SQL语句,到了ODPS里就不能用,有很多限制,毕竟数据量大了好几个数量级,处理起来很费资源,不能那么随意的写了。


刚开始没理解题意,我还纳闷为啥给两张表= =

U——用户集合
I——商品全集
P——商品子集,P ⊆ I
D——用户对商品全集的行为数据集合
那么我们的目标是利用D来构造U中用户对P中商品的推荐模型

让我们预测的是用户会购买商品子集里的哪些商品,不是所有的商品。

提示:根据评分规则可以找到一些讨巧的办法~

刚开始没理解题意,提交的结果F1值极低。

去掉非P中商品之后,F1值咔咔的上去了。然后我就赶紧去平台赛了~


平台赛

去除非P中商品之后F1值咔咔的上去了。

快进前50了!

前50了!

借鉴了李强大神团队的PPT,用了GBDT迭代决策树


直接第6了!


前五了!


--odps sql 
--********************************************************************--
--author:断线纸鸢自由
--create time:2016-04-12 15:12:09
--********************************************************************
describe tianchi_data.tianchi_fresh_comp_train_user_online;

Create table tianchi_fresh_comp_train_item as
select * from tianchi_data.tianchi_fresh_comp_train_item_online;
Create table tianchi_fresh_comp_train_user as
select * from tianchi_data.tianchi_fresh_comp_train_user_online;

。。。。。。

我微信:728972837


离线赛


快到前100了!


前100了!


day3.hql

create external table tianchi_fresh_comp_train_item(item_id string,item_geohash string,item_category string)
row format delimited fields terminated by ','
location '/tianchilxitem';
create external table tianchi_fresh_comp_train_user(user_id string,item_id string,behavior_type bigint,user_geohash string,item_category string,time string)
row format delimited fields terminated by ','
location '/tianchilx';

hive> source /home/guo/day3.hql;


PS:Hive几种导出数据方式


我微信:728972837



补充:

下文中的准确率其实是精确率,他弄混了!建议先看这篇:准确率(Accuracy), 精确率(Precision), 召回率(Recall)

补充的原文地址:http://blog.csdn.net/wangzhiqing3/article/details/9058523

准确率、召回率、F1

信息检索、分类、识别、翻译等领域两个最基本指标是召回率(Recall Rate)准确率(Precision Rate),召回率也叫查全率,准确率也叫查准率,概念公式:

             召回率(Recall)      =  系统检索到的相关文件 / 系统所有相关的文件总数

             准确率(Precision) =  系统检索到的相关文件 / 系统所有检索到的文件总数

图示表示如下:


注意:准确率和召回率是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下准确率高、召回率就低,召回率低、准确率高,当然如果两者都低,那是什么地方出问题了。一般情况,用不同的阀值,统计出一组不同阀值下的精确率和召回率,如下图:

 

 

如果是做搜索,那就是保证召回的情况下提升准确率;如果做疾病监测、反垃圾,则是保准确率的条件下,提升召回。

所以,在两者都要求高的情况下,可以用F1来衡量。

[python] view plaincopy
  1. F1 = 2 * P * R / (P + R)  

 

公式基本上就是这样,但是如何算图1中的A、B、C、D呢?这需要人工标注,人工标注数据需要较多时间且枯燥,如果仅仅是做实验可以用用现成的语料。当然,还有一个办法,找个一个比较成熟的算法作为基准,用该算法的结果作为样本来进行比照,这个方法也有点问题,如果有现成的很好的算法,就不用再研究了。


版权声明:本文为博主原创文章,转载请加上原文地址,谢谢! https://blog.csdn.net/Dr_Guo/article/details/51130813

H3C-H3CNE 华三网络工程师从入门到精通 自学视频课程[肖哥]

-
  • 1970年01月01日 08:00

天池初体验——新人实战赛之[离线赛]

写在开头:本篇博文的适用对象为对天池比赛完全不知如何下手的小伙伴。本文将从头开始记录如何最简单地整理数据、提取特征,再建立模型或者使用人工规则进行预测,然后选出数据并提交,最后得到结果。所以,本文并不...
  • wy250229163
  • wy250229163
  • 2016-11-05 16:13:14
  • 5261

【手把手教你玩天池新人挑战赛】新浪微博互动预测100行代码

由于第二赛季的时候去做淘宝穿衣搭配了,所以第二赛季成绩不太好。 主要讲下第一赛季是怎么用歪路子做到第6名。换数据之前是第4名。 首先我们先看一下评估指标 评估指标 我们希望参赛队对于每一条博文预...
  • Bryan__
  • Bryan__
  • 2015-12-08 16:19:50
  • 7886

天池体验(二)——新人离线赛数据可视化分析

查看原文:http://www.wyblog.cn/2016/12/16/%e5%a4%a9%e6%b1%a0%e4%bd%93%e9%aa%8c%e4%ba%8c-%e6%96%b0%e4%ba%b...
  • wy250229163
  • wy250229163
  • 2016-12-16 22:15:54
  • 1019

从零开始天池新人离线赛-数据预处理

作为一个数据挖掘和Python编程的双面小白,从零就真的是从一张白纸开始了。 今天,首先学习怎么将阿里给我们的CSV文件导入到Python中; import csv itemcsv = f...
  • jackaroo_zyz1
  • jackaroo_zyz1
  • 2017-05-24 21:28:38
  • 1017

天池新人实战赛----阿里移动推荐算法大赛(御膳房、DTPAI----ODPS初体验)

几个名词: ODPS(OpenData Processing Service):开放数据处理服务由阿里云自主研发,提供针对TB/PB级数据、实时性要求不高的分布式处理能力,应用于数据分析、挖掘、商业智...
  • Dr_Guo
  • Dr_Guo
  • 2016-04-12 18:18:15
  • 2614

天池新人赛之新浪微博互动预测

天池新人赛之新浪微博互动预测比赛思路。
  • jingyi130705008
  • jingyi130705008
  • 2017-10-17 10:11:29
  • 1444

天池新人实战赛之[离线赛]尝试(二)

上一篇文章已经将基本思路列出,现在已经根据第一篇文中的数据预处理方案处理出一个训练数据表训练数据11.22~11.27U-I集合行为数据对应的大数据表名: temp_fin.temp_tianchi_...
  • sinat_17697111
  • sinat_17697111
  • 2018-04-13 13:41:06
  • 39

天池离线赛 - 移动推荐算法(三):特征构建

本文讨论如何进行特征构建,为之后基于模型的方法提供有效的数据支持。
  • Snoopy_Yuan
  • Snoopy_Yuan
  • 2017-07-14 13:43:25
  • 2721

天池离线赛 - 移动推荐算法(二):基于简单规则的预测

本文讨论如何运用一个简单的规则来进行预测,主要目的是感受一下天池赛答题评分的过程。...
  • Snoopy_Yuan
  • Snoopy_Yuan
  • 2017-06-03 10:25:37
  • 1844
收藏助手
不良信息举报
您举报文章:天池新人实战赛-阿里移动推荐算法大赛(离线赛与平台赛)
举报原因:
原因补充:

(最多只允许输入30个字)