拟合

概论

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

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

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

百度地图POI说明
注意:每家公司的POI分类都是不同的,这里只是将百度POI做个例子,滴滴打车的POI和百度的POI定义好像是不同的。

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

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

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

zhihu网友的算法

作者:四名评论员
链接:你对滴滴算法大赛赛题的解决思路是什么?
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

利益不相关,不是参赛选手,不是滴滴工作人员,纯粹觉得题目好玩。
我的分析:
这个题目的目标是预测,预测的核心是发掘信息,信息才是消除不确定性的唯一途径。信息存在于乘客与司机的几种行为模式,以及POI的不同功能类型。
乘客的行为基本上有三类模式,周期性的(每天上下班、每周去上补习班)、集中偶发性的(音乐会)和随机性的(各类杂事)。司机的行为模式包括出车、收车、找活、趴活、午休。POI类型也可以分为周期性的(工作单位)、集中偶发性(电影院、体育馆、演播大厅)、随机性的(医院、车站),当然每个POI的功能类型不是绝对的。
GAP是用车需求和供给的差,那么分别为需求和供给建立模型。
简单说,一个完整的打车需求包括出发地、目的地、时间。首先任意两个POI之间都存在一条线路,每条线路的人流量可以按照乘客的行为模式进行分解,这样也就包含了时间因素。这样最终就可以算出从每个POI出发的人数。由于数据只有方格的总数,这看起来是一个隐马尔科夫链。至于天气则基本可以看成线路人流量的一个系数。
司机接单在全天大多数时间里都是找活的状态,也就是附近有单就抢,那么某个方格某个时间片司机接单数应该是空车数量*一个系数,空车数量=上一个时间片到达的乘客数+其他司机漫无目的找活出入方格的净值+趴活司机数(找活、趴活数应该和poi类型有关,这得问问老司机拉活的窍门),系数就是抢单成功率。
非专业人士,以上只是粗浅的想了一下,还有很多细节没有考虑,抛砖引玉,达人莫笑!非专业人士,以上只是粗浅的想了一下,还有很多细节没有考虑,抛砖引玉,达人莫笑!

算法

交通拥堵

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

  • LV1 20条路 权重8
  • LV2 10条路 权重4
  • LV3 15条路 权重2
  • LV4 05条路 权重1
    那么拥堵指数怎么计算呢?这里应该是对每个拥堵哟一个权重,等级越高,权重越大。
    拥挤度 = SUM(权重 * 数量)

在上文中 滴滴算法大赛算法解决过程 - 数据分析 提过了通过统计分析可以得知,LV1的路大约占2/3强,估计LV4,LV3的路是变化的关键。

由于数据量非常庞大,所以这里建议将中间的计算结果也放入数据库中备用。
博客园不支持图片放大功能,如果您想更好的查看图片,也可以使用以下网址获得更好的阅读体验:
http://codesnippet.info/Article/Index?ArticleId=00000041

我们尝试使用最小二分法拟合 LV4和 订单总量
从图中可以看到,大部分的点在一个 Y = AX+ B 的直线函数中。
(未去噪点)
A:4.67355309006603
B:18.931303546517

(去除1500以上的噪点)
A:1.08888907683687
B:192.700547917395

(这里使用的是2016-01-01 #51 的数据)

  1. #region 最小二乘法拟合
  2. ///<summary>
  3. ///用最小二乘法拟合二元多次曲线
  4. ///例如y=ax+b
  5. ///其中MultiLine将返回a,b两个参数。
  6. ///a对应MultiLine[1]
  7. ///b对应MultiLine[0]
  8. ///</summary>
  9. ///<param name="arrX">已知点的x坐标集合</param>
  10. ///<param name="arrY">已知点的y坐标集合</param>
  11. ///<param name="length">已知点的个数</param>
  12. ///<param name="dimension">方程的最高次数</param>
  13. public static double[] MultiLine(double[] arrX, double[] arrY, int length, int dimension)//二元多次线性方程拟合曲线
  14. {
  15. int n = dimension + 1; //dimension次方程需要求 dimension+1个 系数
  16. double[,] Guass = new double[n, n + 1]; //高斯矩阵 例如:y=a0+a1*x+a2*x*x
  17. for (int i = 0; i < n; i++)
  18. {
  19. int j;
  20. for (j = 0; j < n; j++)
  21. {
  22. Guass[i, j] = SumArr(arrX, j + i, length);
  23. }
  24. Guass[i, j] = SumArr(arrX, i, arrY, 1, length);
  25. }
  26. return ComputGauss(Guass, n);
  27. }
  28. private static double SumArr(double[] arr, int n, int length) //求数组的元素的n次方的和
  29. {
  30. double s = 0;
  31. for (int i = 0; i < length; i++)
  32. {
  33. if (arr[i] != 0 || n != 0)
  34. s = s + Math.Pow(arr[i], n);
  35. else
  36. s = s + 1;
  37. }
  38. return s;
  39. }
  40. private static double SumArr(double[] arr1, int n1, double[] arr2, int n2, int length)
  41. {
  42. double s = 0;
  43. for (int i = 0; i < length; i++)
  44. {
  45. if ((arr1[i] != 0 || n1 != 0) && (arr2[i] != 0 || n2 != 0))
  46. s = s + Math.Pow(arr1[i], n1) * Math.Pow(arr2[i], n2);
  47. else
  48. s = s + 1;
  49. }
  50. return s;
  51. }
  52. private static double[] ComputGauss(double[,] Guass, int n)
  53. {
  54. int i, j;
  55. int k, m;
  56. double temp;
  57. double max;
  58. double s;
  59. double[] x = new double[n];
  60. for (i = 0; i < n; i++) x[i] = 0.0;//初始化
  61. for (j = 0; j < n; j++)
  62. {
  63. max = 0;
  64. k = j;
  65. for (i = j; i < n; i++)
  66. {
  67. if (Math.Abs(Guass[i, j]) > max)
  68. {
  69. max = Guass[i, j];
  70. k = i;
  71. }
  72. }
  73. if (k != j)
  74. {
  75. for (m = j; m < n + 1; m++)
  76. {
  77. temp = Guass[j, m];
  78. Guass[j, m] = Guass[k, m];
  79. Guass[k, m] = temp;
  80. }
  81. }
  82. if (0 == max)
  83. {
  84. // "此线性方程为奇异线性方程"
  85. return x;
  86. }
  87. for (i = j + 1; i < n; i++)
  88. {
  89. s = Guass[i, j];
  90. for (m = j; m < n + 1; m++)
  91. {
  92. Guass[i, m] = Guass[i, m] - Guass[j, m] * s / (Guass[j, j]);
  93. }
  94. }
  95. }
  96. //结束for (j=0;j<n;j++)
  97. for (i = n - 1; i >= 0; i--)
  98. {
  99. s = 0;
  100. for (j = i + 1; j < n; j++)
  101. {
  102. s = s + Guass[i, j] * x[j];
  103. }
  104. x[i] = (Guass[i, n] - s) / Guass[i, i];
  105. }
  106. return x;
  107. }//返回值是函数的系数
  108. #endregion

任务

  • 研究同一时间片,同一地区,按照日期变化,数据的变化。观察天气对数据变化的影响
  • 研究同一时间片,不同地区,POI的数量对数据变化的影响
  • 研究每个区域的需求量,可能每个区域的需求量基准数值都是差不多的。

滴滴算法大赛算法解决过程 - 拟合算法相关推荐

  1. 数据拟合算法c语言实现,数据拟合算法剖析及C语言实现.doc

    数据拟合算法剖析及C语言实现 数据拟合算法剖析及C语言实现 [摘要]数据拟合在很多地方都有应用,主要用来处理实验或观测的原始离散数据.通过拟合可以更好的分析和解释数据.在引用前人的算法基础上,采用正交 ...

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

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

  3. 蚂蚁算法C语言解决,蚂蚁优化算法在解决CVRP中的应用

    摘要: According to the disadvantage of basic ant swarm optimization algorithm such weak convergence an ...

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

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

  5. 腾讯广告算法大赛高分秘籍来袭!大咖直播详解TI-ONE与Angel框架

    2020腾讯广告算法大赛自开赛以来,已经吸引了近两万名技术人才关注.目前算法大赛已进入初赛阶段,针对参赛选手的真实问题反馈,为提升选手的赛事体验,特开启腾讯广告算法大赛系列直播课程,邀请大咖在线答疑解 ...

  6. 机器人曲线插值拟合算法研究现状简述

    混沌无形 混沌系统是世界本质,无形之中存在规律.机器人智能化发展从线性过渡到混沌,本号将分享机器人全栈技术(感知.规划.控制:软件.机械.硬件等). 38篇原创内容 公众号 [文末提供原文PDF免费下 ...

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

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

  8. 数模学习(四)---拟合算法

    一 Abstract 与插值问题不同,在拟合问题中不需要曲线一定经过给定的点.拟合问题的目标是去寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小化损失函数) ...

  9. 200万奖金广聚天下算法英雄,第二届广州·琶洲算法大赛要来了!

    随着深度学习不断驱动技术创新,人工智能加速与实体经济深度融合发展.作为中国首个自主研发.开源开放的产业级深度学习平台,飞桨与百度自研的产业级知识增强文心大模型,共同构筑了产业智能化基座,并联合产学研用 ...

最新文章

  1. 4行代码,让app自动化框架支持 webview 混合应用操作
  2. php 操作txt,PHP 从txt文件中读取数据
  3. 在Ubuntu上安装Odoo 11(企业版)
  4. linux阿波罗配置文件放在哪,Apollo阿波罗配置中心
  5. 计算机采购类增值税税率是多少,各个行业的税率是多少?
  6. redis——sentinel
  7. hadoop伪分布式(单机版)安装,Linux
  8. HTML+CSS+JS实现 ❤️H5图片列表滑动特效❤️
  9. html文字如何排布成圆形,css多个扇形怎么拼凑成圆?
  10. mysql 8.0空间索引_牛逼!MySQL 8.0 中的索引可以隐藏了…
  11. mysql主键外键_MySQL数据库的主键和外键详解3
  12. log4j.properties打印日志
  13. Verilog常用语法
  14. java最新2019面试题
  15. vue里面使用echarts实现根据浏览器屏幕大小自适应
  16. 如何修改Julia语言环境的安装包默认安装文件夹的位置
  17. [74系列------74HC595]
  18. MQ--1( Message queuing)RabbitMQ
  19. hdu 1849 Rabbit and Grass Nim博弈
  20. 【拦截器】和【过滤器】

热门文章

  1. 计蒜客/51Nod题目
  2. 初学c++基础知识——第一个c++程序
  3. 苹果怎样运行低版本php,Mac如何安装多个php版本
  4. tof摄像头手势识别_TOF(Time Of Flight)+模型匹配,ThisVR想让手势识别低成本小型化...
  5. python宝石与石头_771. 宝石与石头
  6. 计算机二级一年几次湖南省,湖南省计算机二级多少分可以通过
  7. 易语言webservice接口_易语言语音通知webservice接口
  8. timespan怎么比较大小_装饰画怎么挂都不好看?那是你不懂技巧!整理了一篇攻略,请拿好...
  9. java判断邮箱名和文件名_Java公开课|想学好Java,教你操作Java校验文件名和邮箱地址,快来看看...
  10. esp8266设置sta失败_使用NodeMCU_ESP8266驱动OLED