京东赛告一段落。作为一个菜菜鸟,虽然无缘前十,但是也算是有一点小感悟和一些对数据挖掘的认知。毕竟这是第一次接触比较接近实际工程中的数据,而且是时间序列相关的数据。

一. 数据集的划分

在做京东赛的时候,第一眼看到数据集就是懵的,感觉和房屋预测的咋一点都不一样·········训练集也没有,测试集也没有,而且还有好多个表,咋往一块拼呢·········后来看了wepon在天池优惠券核销预测的代码后,才渐渐有了一点思路,在这里感谢wepon大神,代码在这里。

对于我过去接触过的机器学习问题,训练集就是原始数据,测试集就是新数据。我在原始数据和新数据中,挖掘出相同维的特征,区别就是原始数据有标签,而新数据没有标签。用有标签的数据学习出一个模型,再应用到具有相同特征维的没有标签的数据上,预测得到结果。
但对于时序数据来说,就不一样了。

时间序列预测的核心思想是:用过去时间里的数据预测未来时间里的Target。

也就是说,在构建特征的时候,我需要所有的历史数据构建预测特征。有时候,也会有待预测时间段的一些特征,比如在天池的O2O赛中(不过这也是一个leakage,在实际工程中,是不会得到这个数据的)。将历史数据的预测特征,和新数据的一些预测特征结合起来,得到完整的所需要的特征,然后放到模型里面,得到预测结果。

还有一个比较重要的部分就是,负样本的建立。在这里的数据,所有买过的都算是正样本,但是还需要负样本。我这里就是自己造了个负样本。按照1:1的比例,对所有数据,随机进行1-2天的前后移动,然后把这些数据里的错误数据删去(错误数据:在这个时间里有过购买行为的为错误的数据)。由此得到负样本。

有了特征,那我们的target怎么找?
这里我们就要从历史数据中构建target.
一个比较常用的方法就是滑窗。

二. 滑窗与模型构建

通过时间滑窗,人为的构造target,让模型进行学习。也就是对于历史数据,再人为设置历史窗口和未来窗口。怎么做呢?具体示意图如下:

(图片来源为这里,这篇讲的也挺好的,对我理解时间序列起了很大帮助)
假如有1-6月的历史数据,要预测7月份的销售量

  • 1,2,3月份提取预测特征A,4月份提取预测特征B,并提取预测target,也就是销售量

  • 2,3,4月份提取预测特征A,5月份提取预测特征B,并提取预测的target。

以此类推,以一个月为周期向前滚动。

最后呢,我把所有提取到的特征,也就是每个窗口的预测特征A+预测特征B作为训练集,所有的预测target作为训练集的target。用这些数据训练模型。

(他们之间的连接是按列连接,并非按行连接。也就是说,不管是哪段时间窗口,我提取到的特征维度都是一样的,不同的时间窗口,相当于只是增加了我的训练实例(instance))

对于新数据,我的输入为(当前例子中)4,5,6月份的预测特征A加上7月份的预测特征B,整体构成特征集合。输入到模型中,得到预测结果。

按我的理解,时间滑窗相当于增加了样本量,并且通过对不同时间段的采样,可以得到更丰富的特征。

三. 特征工程的构建

感觉在数据比赛中,最最关键的还是特征。有时候模型可以稍微弱一点,甚至是单模型,也可以优于xgboost这种提升模型。比如今年的IJCAI中的阿里妈妈算法大赛,夺冠的解决方案就是单模型的·····膜拜一下大神。
在这一块儿还差的很远。而且,京东赛分数不高的原因也是因为特征选的太弱,不够多。但是有几个思路吧:
1. 皮尔森相关系数的应用,可以看看特征和target之间的相关程度。太弱的或者可以直接抛弃。
2. 选择一些强相关性的特征,通过一些个运算啊什么的构造一些新的特征。
3. 结合业务场景,构造一些业务中常用的一些个指标。
4. 对于一些特殊日期的关注。比如电商销售额预测,双十一双十二的数据肯定是异于平常的,此时可以对他进行单独的预测,或者和平时的进行加权,等(这可能是数据预处理阶段的工作)
5. 构建了一系列的特征,其实并非所有的都那么重要,可以对特征进行选择,去掉冗余特征。比如说,可以用xgboost方法或者GBDT这种有feature_importances方法(或者score这种)的,对训练完的模型的特征根据评分的不同进行排序,以此选择一些较好的特征。

大致就是这些了。算法之路,漫漫其修远兮,吾将上下而求索(拽一下·····)。

写于京东赛(JData)----如期而至,用户购买日期预测----之后相关推荐

  1. 2018年京东JDATA算法 大赛:如期而至-用户购买时间预测,方案分享

    前言 去年6月份和实习生一起参加京东jdata2018算法大赛,取得了17名的成绩,本来以为这个成绩对于第一次参加算法大赛的我们来说已经算是不错了,但在听了决赛答辩之后感觉今后的路还很长,需要学习的东 ...

  2. JData大数据竞赛18年赛题-如期而至-用户购买时间预测

    年前做的,也是学习别人的作品作为记录 一.赛题 表1:sku基本信息表(jdata_sku_basic_info) 表2:用户基本信息表(jdata_user_basic_info) 表3:用户行为表 ...

  3. JData数据处理及高潜用户购买意向预测

    竞赛概述: 本次大赛以京东商城真实的用户.商品和行为数据(脱敏后)为基础,参赛队伍需要通过数据挖掘的技术和机器学习的算法,构建用户购买商品的预测模型,输出高潜用户和目标商品的匹配结果,为精准营销提供高 ...

  4. 【机器学习】京东用户购买意向预测-数据集介绍和数据清洗 - 1

    主题:京东用户购买意向预测 数据集: 这里涉及到的数据集是京东最新的数据集: JData_User.csv 用户数据集 105,321个用户 JData_Comment.csv 商品评论 558,55 ...

  5. 京东用户购买意向预测(一)

    数据清洗 故事背景: 数据集: 数据挖掘流程: 数据集验证 首先检查JData_User中的用户和JData_Action中的用户是否一致 因为数据量很大所以每次读取的时间有点长,所以很着急看结果的话 ...

  6. 京东JData算法大赛——高潜用户购买意向预测

    赛题分析 京东提供了用户在2016-02-01-2016-04-15时间区域内用户对商品的行为评价等数据,预测2016-04-16-2016-04-20时间区间内用户的下单情况. 赛题和阿里的第一个竞 ...

  7. 京东用户购买意向预测(一)数据清洗

    故事背景: 京东作为中国最大的自营式电商,在保持高速发展的同时,沉淀了数亿的忠实用户,积累了海量的真实数据.如何从历史数据中找出规律,去预测用户未来的购买需求,让最合适的商品遇见最需要的人,是大数据应 ...

  8. 京东JData算法大赛高潜用户购买意向预测——复现(并没有),提供数据集

    19-1-15更新,后面改了做法所以随笔烂尾了,具体内容不用看,想参考的可以看下面的参考链接 另外提供数据集在百度云,希望能帮到大家 链接: https://pan.baidu.com/s/1ojjV ...

  9. 京东JData算法大赛-高潜用户购买意向预测(github源码)

    向AI转型的程序员都关注了这个号

最新文章

  1. 手机安装pem_抓包神器Charles的配置安装与弱网测试,你会了吗?
  2. sarama-cluster之panic: non-positive interval for NewTicker 问题
  3. 【渝粤题库】陕西师范大学201571金融法作业(专升本)
  4. Java api 1.8 中文 帮助文档
  5. 文本处理三剑客之sed(流编辑器)
  6. linux 命令全集
  7. 通过设置proxyTable实现调用接口跨域
  8. FZU 2148 Moon Game --判凹包
  9. 可以替代basemap的几个工具
  10. php导出excel数据
  11. Permute3 mac最新多种媒体视频格式转换工具
  12. 深度置信网络基础知识及程序代码
  13. 基于云开发的成语答题小程序
  14. windows下安装Bugzilla 2.18
  15. 大豆技术面分析_大豆优质高产技术分析,种植大豆产量低,只因这几点你没做到...
  16. Python中的多线程是假的多线程?
  17. Reptile_02 json网页爬虫QQ华晨宇音乐
  18. 文章结构层次序数(序号)的规范要求
  19. 用高斯约当法求逆矩阵​​​​​​​​​​​​​​​​​​​​​A-1
  20. JAVA基础(JAVA移位运算符)

热门文章

  1. ejs java_ejs使用文档
  2. linux里面uniq某一列,Linux之uniq 命令示例
  3. 三维组态可视化解决方案
  4. STM32开发,HAL函数实现待机唤醒功能以及SVN使用简介
  5. 利用platform.x509和platform.pk8生成系统签名文件
  6. flask连接数据库——flask-SQLALchemy
  7. nginx一致性hash在k8s中的实践,解决k8s部署前端页面不走正常nginx缓存问题
  8. Arxiv 速递丨时间序列相关研究论文一览
  9. Android---给Linearlayout设置边框+弧度角
  10. 无法上网,qq等程序无法启动显示initialization failure 0x0000000c 的解决办法