按照前面文章的方法进行数据预测,完全不使用POI,天气,交通情况的数据,可以达到0.43的成绩。
不过如果想要获得更好的成绩,简单的预测方法显然无法满足要求了。

GBDT

网友说可以使用GBDT的方法来进行数据预测。所以,我们先来聊聊GBDT算法的一些基础知识。

凡是说到算法,人工智能,机器学习的文章,多半一定要说到 熵 这个概念的。什么是熵?
百度一下:

熵(entropy)指的是体系的混乱的程度,它在控制论、概率论、数论、天体物理、生命科学等领域都有重要应用,在不同的学科中也有引申出的更为具体的定义,是各领域十分重要的参量。熵由鲁道夫·克劳修斯(Rudolf Clausius)提出,并应用在热力学中。后来在,克劳德·艾尔伍德·香农(Claude Elwood Shannon)第一次将熵的概念引入到信息论中来。

一个体系越是单调,则熵越低,反之亦然。
这里我们引用数据挖掘大神的文章来接单说一下熵。

  • 如果有一个字符串,里面包含了4种字符,每种出现的概率都是P= 1/4。
    P(X=A) = 1/4
    P(X=B) = 1/4
    P(X=C) = 1/4
    P(X=D) = 1/4
    这样的字符串可能是:BAACBADCDADDDA。传送这样的字符串,每一个字符需要用几个bit?
    答案是2个bit
    A = 00, B = 01, C = 10, D =11

  • 如果有一个字符串,里面包含了4种字符,但是每个字符串出现的概率不同
    P(X=A) = 1/2
    P(X=B) = 1/4
    P(X=C) = 1/8
    P(X=D) = 1/8
    传送这样的字符串,每一个字符平均需要用几个bit?注意这里说平均。
    答案是1.75个bit
    A = 0, B = 10, C = 110, D =111
    (如果使用等概率的方法, A = 00, B = 01, C = 10, D =11,则无法节省编码量,还是2个bit)
    这里巧妙的做到了,出现概率高的字符,使用的bit位少,同时做到了编码上的问题。
    (AB =〉010 和 C 110,D 111 不重复。AA =〉00 和 B 10 不重复 等)

  • 有如果有一个字符串,里面3种字符串,每种出现概率都是 1/3呢?
    最简单的编码方式是 A = 00, B = 01, C = 10, 这样是2个bit,但是如果好好计算一下,可以做到1.6个bit。
    A=10,B= 11,C = 0(理论上是1.58496 个bit)

  • 有如果有一个字符串,里面N种字符串,每种出现概率是 PN呢?

  • 如果有一个字符串,里面包含了4种字符,每种出现的概率都是P= 1/4 = 0.25。
    log(0.25,2) = - 2
    H(X) = - (1/4) * log(0.25,2) - (1/4) * log(0.25,2) - (1/4) * log(0.25,2) - (1/4) * log(0.25,2) = 2;

  • 如果要表示下图的H(X)和H(Y)呢?

这个很容易计算
这个很容易计算
H(X)= 1.5

P(Math) = 1/2 P(History)= 1/4 P(CS)= 1/4
log(0.25,2) = - 2 log(0.5,2) = - 1
H(X) = - (1/2) * log(0.5,2) - (1/4) * log(0.25,2) - (1/4) * log(0.25,2) = 0.5 + 0.5 + 0.5 = 1.5;

H(Y)= 1
P(Yes) = 1/2 P(No) = 1/2
H(Y) = - (1/2) * log(0.5,2) - (1/2) * log(0.5,2) = 0.5 + 0.5 = 1;

  • 如果说,我们的计算范围只是 X = Math 的数据。那么这个时候 H(Y | X = Math) 是多少呢?是多少呢?答案是1。(一共4条记录,但是Y有两种可能性)
  • 如果说,我们的计算范围只是 X = Histroy 的数据。那么这个时候 H(Y| X = Histroy)是多少呢?答案也是 0 。(一共2条记录,但是Y只是一种可能性)
  • 如果说,我们的计算范围只是 X = CS 的数据。那么这个时候 H(Y| X = CS)是多少呢?答案也是 0 。(一共2条记录,但是Y只是一种可能性)

H(Y | X ): 条件熵 Conditional Entropy

现在我们考虑一个问题,如果我们需要将Y传输出去。当然,如果直接传输的话, H(Y)= 1。
如果我们在传输的时候,双方都知道X的值,则需要熵定义为H(Y | X )。

例如:大家都知道X=History,则 Y 必然是 NO, H(Y ) = 0 , Histroy的可能性是1/4 ,需要的传输量是 0(CS同理)
大家都知道X=Math,则 Y 可能是 Yes或者No,H(Y ) = 1 ,Math的可能性是1/2 ,需要的平均传输率是 1/2 * 1 = 0.5
Math的概率 P(Math) = 1/2 ; History的概率 P(Histroy)= 1/4; History的概率 P(CS)= 1/4;
则我们定义H(Y | X ) = H(Y | X = Math) * P(Math) + H(Y| X = Histroy) * P(Histroy) + H(Y| X = CS) * P(CS) = 0.5

Information Gain 信息增益 和 Relative Information Gain

从上文可知,比起直接传输Y,条件熵则更加划算了。这些划算的部分,我们称为信息增益IG。
IG(Y|X) = H(Y) - H(Y | X)
上面的例子,IG(Y|X) = H(Y) - H(Y | X) = 1 - 0.5 = 0.5
进一步,这样划算的部分,占原来所需部分的比重是多少呢?
RIG= IG(Y|X) / H(Y) = 0.5 / 1 = 0.5 (节省的部分占了50%)

信息增益是什么,我们先从它的用处来了解它:
信息增益是特征选择中的一个重要指标,它定义为一个特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要。

指标选择

回到滴滴算法的问题,我们应该挑选哪些指标作为GBDT的参考呢?

滴滴算法大赛算法解决过程 - 数据分析
滴滴算法大赛算法解决过程 - 拟合算法
滴滴算法大赛算法解决过程 - 方案设计
滴滴算法大赛算法解决过程 - 机器学习

滴滴算法大赛算法解决过程 - 机器学习相关推荐

  1. 滴滴算法大赛算法解决过程 - 拟合算法

    拟合 概论 Gap的预测,是建立在一个拟合函数上的.也有一些机器学习的味道. 总的Gap函数 = 函数(时间,地区) TimeID : 时间片编号 DistricID:地区编号 Traffic:交通流 ...

  2. 滴滴算法大赛算法解决过程 - 方案设计

    数据分析: http://codesnippet.info/Article/Index?ArticleId=00000038 拟合算法: http://codesnippet.info/Article ...

  3. 滴滴算法大赛算法解决过程(实时更新)

    (这里只是做分析,不提供源代码,毕竟是一个比赛) 题目分析 赛题详情 构建一个模型,根据天气,交通,区域里面的各种设施,以往历史数据,预测未来的某个时间点,某个区域里,打车需求的缺口.整个算法其实就是 ...

  4. 【天池、京东算法大赛、Kaggle等机器学习打比赛模板】

    文章目录 引言 一.定义问题 1.分析题目 2.导入 二.理解数据 1.描述性统计 2.可视化数据信息 3.数据EDA(探测性分析,生成数据报告) 三.数据的准备 1.数据清洗与转换 2.特征工程 四 ...

  5. 名校大厂 AI 高手云集,芒果 TV 音视频算法大赛硕果累累

    东京奥运会已正式开幕,最新的IT技术也在进入奥运赛场. 本届奥运会引入的 AI 辅助打分,扮演了"助理裁判"的角色.这项技术可以追踪选手动作并实时转换为三维立体图像,再由系统根据图 ...

  6. 算法“视”界杯来袭,2021腾讯广告算法大赛正式开启

    全球算法达人注意啦,2021腾讯广告算法大赛强势归来!本届赛事围绕视频广告议题开设两大赛道--"视频广告秒级语义解析"与"多模态视频广告标签"两大前沿命题等你来 ...

  7. 腾讯广告算法大赛已启动,逆向算法,等你来战

    2020年 腾讯广告算法大赛广撒"英雄帖" 面向全社会召集技术人前来一"战"! 腾讯广告算法大赛步入第四年 已经为来自海内外的企业和研究人员 提供了富有研究价值 ...

  8. ML:从0到1 机器学习算法思路实现全部过程最强攻略

    ML:从0到1 机器学习算法思路实现全部过程最强攻略 目录 思维导图 设计思路 思维导图 设计思路 相关文章 ML之FE:结合Kaggle比赛的某一案例细究Feature Engineering思路框 ...

  9. 【算法大赛直播周】如何让人人都可以使用AI技术?北大崔斌教授亲解自动化机器学习

    2020腾讯广告算法大赛已于近日落下帷幕(点击回顾),但算法研习之路永无止境.为了更好地推动前沿技术的分享和交流,持续助力产学研融合落地,腾讯广告特邀三位大赛顶级评委开启"2020腾讯广告算 ...

最新文章

  1. 开发日记-20190915 关键词 汇编语言王爽版 第十二章
  2. CMake 与 Finder
  3. Oracle数据表和Constraint管理
  4. dart系列之:创建Library package
  5. java jcifs 速度_java – JCIFS:文件检索太慢而无法使用
  6. 我是如何学习写一个操作系统(二):操作系统的启动之Bootloader
  7. 简述python解释器的作用_什么是python解释器?
  8. Docker(二) docker帮助、镜像及容器相关操作命令介绍
  9. (转)Arcgis for Js之GeometryService实现测量距离和面积
  10. win10自带虚拟机安装CentOS7系统(转)
  11. 微信公众号教程(16)公司通讯录开发 终
  12. 【Linux 内核网络协议栈源码剖析】sendto 函数剖析
  13. 下百度文库要券?来用 Python 自动下
  14. 密码爆破 hashcat+rar2john破解rar5压缩包密码
  15. 拆一台微型计算机步骤,台式微型计算机拆装.doc
  16. Vertical roller mill lead blast furnace slag processing equipment
  17. pybind11学习笔记
  18. python 绘图如何画螺旋圈_如何画出python螺旋线
  19. 官网下载Eclipse历史版本
  20. 机器学习算法工程师面试学习经验

热门文章

  1. android应用开发全程实录出版
  2. 关于微机开操作票的研究22437
  3. 802.11n 原理解析
  4. jquery程序 windows移植到linux显示不了,windows程序移植linux
  5. OSError: Cannot initialize new instance of inotify, Errno=Too many open files (EMFILE) 问题解决
  6. 关闭oracle自动统计,禁用oracle 11g 的统计数据自动功能
  7. padding和卷积的区别_池化、池化与卷积异同、zero-padding
  8. vue如何获取数组中的键值_vue中操作数组的相关方法
  9. flex 平铺布局_CSS3 Flex布局(伸缩布局盒模型)学习
  10. html div实时监听,jquery实时监听div高度变化