(这里只是做分析,不提供源代码,毕竟是一个比赛)

题目分析

赛题详情
构建一个模型,根据天气,交通,区域里面的各种设施,以往历史数据,预测未来的某个时间点,某个区域里,打车需求的缺口。整个算法其实就是一个有监督的机器学习的过程。

数据整理

下载后的整个压缩数据包575M,其中包括的订单数据大约900万条。(其他Master表数据量很小,这里忽略不计)
使用MongoDB存储的话,大概使用2GB的空间,全部导入之后,工作用计算机十分卡顿。MongoCola管理软件失去响应。所以,这里的订单按照日期导入。(训练的时候,按照天来训练)注意:官方的订单数据的 订单号 OrderID是主键重复的。这里以第一次出现的订单号的数据为准。

由于数据量非常庞大,所以这里建议将中间的计算结果也放入数据库中备用。

订单数据整理

订单数据整理,主要是整理出各个时段,各个地域的订单数据。

  • 时间段
  • 地域编号
  • 需求数
  • 缺口
  • 缺口比例

数据整理尽量使用LINQ进行处理,MONGODB查询是消耗时间的!!!,这里数据库只是用作数据的存储不做计算

        private void btnImportDB_Click(object sender, EventArgs e){string rootFolder = txtRootDir.Text;//Order: Root + "\order_data"foreach (var filename in Directory.GetFiles(rootFolder + "\\order_data")){if (!filename.Contains("._")){string strDate = filename.Substring(filename.LastIndexOf("_") + 1);var colname = "Order_" + strDate;Database.Clear(colname);var orderlist = new List<Order>();var read = new StreamReader(filename);while (!read.EndOfStream){var o = Order.Gernerate(read.ReadLine());orderlist.Add(o);}orderlist = orderlist.Distinct(x => x.order_id).ToList();Database.InsertRecBatch(orderlist, colname);var orderGaplist = new List<OrderGap>();Database.Clear("OrderGap_" + strDate);for (int time = 1; time < 144 + 1; time++){for (int area = 1; area < 66 + 1; area++){var m = new OrderGap() {  DistrictId = area,TimeSlient = time};m.Total = orderlist.Count((x) => { return x.DistrictID == area && x.TimeSlient == time; });  m.Gap = orderlist.Count((x) => { return x.DistrictID == area && x.TimeSlient == time && x.driver_id == "NULL" ; });m.GapPercent = m.Total == 0 ? 0 : Math.Round(((double)m.Gap / m.Total) * 100, 2);orderGaplist.Add(m);}}Database.InsertRecBatch(orderGaplist, "OrderGap_" + strDate);//暂时只分析一天数据break;}}}

利用Excel,可视化数据

以下是2016-01-01的数据分析。蓝色的是GAP缺口数,红色的是Total数。
一天24个小时整体需求分布可以看个大概了。

拟合

Gap的预测,是建立在一个拟合函数上的。也有一些机器学习的味道。

总的Gap函数 = 函数(时间,地区)

  • TimeID : 时间片编号
  • DistricID:地区编号
  • Traffic:交通流量
  • Weather:天气
  • POI:设施数

POI说明

交通流量和时间有关,一个地方的拥堵程度和时间有关系
不同的地区,各种设施配置不同。
天气和时间有关。

Gap函数 = 函数(交通拥挤度函数(时间,地区编号),POI函数(地区编号),天气函数(时间))

这里可以认为,一个地方的打车人数,交通越堵,则打车的GAP越大。天气不好,打车的人则越多,GAP也越大。设施越多的地方,打车的需求也越多,GAP可能也越大。但是这一切都只是可能性。
(题外话,其实真实的情况也要考虑节假日的问题,在节假日的时候,GAP可能会变大。当然这是一个人文的考量了)

算法

交通拥堵函数:
这里的交通拥堵函数是使用4个等级表示的。

  • LV1 20条路 权重8
  • LV2 10条路 权重4
  • LV3 15条路 权重2
  • LV4 05条路 权重1
    那么拥堵指数怎么计算呢?这里应该是对每个拥堵哟一个权重,等级越高,权重越大。
    拥挤度 = SUM(权重 * 数量)
    当然权重也是一个需要训练和拟合的。
    (设施数和天气差不多,也是同样考虑的。)
    这里有三个指标,每种指标对于整体的影响程度也是需要训练的。

本博文将在 http://www.codesnippet.info/Article/Index?ArticleId=00000038 进行实时更新。
任何疑问,讨论,请移步 http://www.codesnippet.info/Article/Index?ArticleId=00000038
本文不求大部分关注,只求算法爱好者的参与。

转载于:https://www.cnblogs.com/TextEditor/p/5513552.html

滴滴算法大赛算法解决过程(实时更新)相关推荐

  1. 滴滴算法大赛算法解决过程 - 机器学习

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

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

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

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

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

  4. 首届全球RTB(实时竞价)广告DSP算法大赛

    首届全球RTB(实时竞价)广告DSP算法大赛 首届全球RTB(实时竞价)广告DSP算法大赛 竞赛指南     RTB (Real Time Bidding, 实时竞价) 是近年来计算广告领域最激动人心 ...

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

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

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

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

  7. 赛后复盘 - DataCastle 科大讯飞AI营销算法大赛

    最近这个月参加了DataCastle上的科大讯飞AI营销算法大赛,最后的名次是97 / 1086,没能进入复赛(要求前50名).其实也没什么好失落的,已经尽力了,这就是我现阶段的真实水平.最大的遗憾, ...

  8. 一文梳理2019年腾讯广告算法大赛冠军方案

    ‍‍ 点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 作为从本次比赛共157队伍中脱颖而出的冠军方案,评分达到87.9683,从数据清 ...

  9. 备战2020腾讯广告算法大赛:(2017-2019比赛开源和数据等)

    期待与各位在2020腾讯社交广告算法大赛中相遇!!! 写在前面 最近突然之间讨论腾讯广告赛的人多了不少,也有很多人加我微信讨论19年腾讯赛的方案和代码.虽然2020腾讯赛还未开始,不过大家已经提前进入 ...

最新文章

  1. 混合办公时代来了?携程试点每周两天居家办公,76%的员工主动报名!
  2. python全栈-Day 1
  3. AntDesign组件库的使用
  4. TensorFlow报错:'dict' object has no attribute 'SerializeToString'
  5. 前端—每天5道面试题(1)
  6. 21天Jenkins打卡Day6安装插件
  7. Vmware虚机机挂起后无法远程连接
  8. 提升研发效率 保障数据安全——阿里云宣布数据管理DMS企业版正式商业化 1
  9. linux nginx源码安装
  10. 31_管家婆家庭记账软件
  11. java万年历有农历_家庭农民历五行曰历,日历为什么叫“万年历”
  12. 怎么能防止网站被注入eval(base64_decode这种类型的木马?
  13. Pycon 2017: Python可视化库大全
  14. https双向认证java
  15. Java如何进行Base64的编码(Encode)与解码(Decode)?
  16. 【转载】PyCharm 或者其他 Idea 官网打不开解决办法:
  17. 互联网摸鱼日报(2023-01-11)
  18. 中控考勤机连服务器显示1007,中控智慧ZK-S1007动态人脸识别考勤门禁终端
  19. 微信趣味测评小程序独立版源码
  20. Android OpenGL ES 画出三棱锥

热门文章

  1. c语言编程平均分,用C语言编程平均分数
  2. 剑指Offer #13 调整数组顺序使奇数位于偶数前面 | 图文详解
  3. git stash pop冲突_这有一份 git 日常使用清单,你需要吗?
  4. html 文件路径 d files,tmpfiles.d
  5. 9张表格学会,子网划分
  6. 【实验】华为静态路由基础配置
  7. Kubernetes 集群升级指南:从理论到实践
  8. 拒做工具人!教你一键快速部署应用到容器镜像仓库
  9. 配电箱接线口诀_电路设计和家庭电路控制系统大全,学会接线不求人!
  10. java选择循环_java选择和循环结构