回到原点
上面两篇文章讲了一些分析情况,整个模型变得很不确定了
数据分析: http://codesnippet.info/Article/Index?ArticleId=00000038
拟合算法: http://codesnippet.info/Article/Index?ArticleId=00000041
滴滴算法大赛到底需要什么样子的答案?
我一开始的想法是建立一个模型,通过天气,POI,交通拥堵的参数来推导出订单数和GAP数。
但是通过现有的数据发现,这个模型很难建立。
其实看一下题目,这是一个预测题:
给定每个区域在时间片tj,tj-1...的各项数据,预测gapi,j+1, ∀di∈D。
如果不是想研究机器学习的话,其实也没有必要(或者没有可能)建立一个完整的模型。
我们只需要知道,数据的发展趋势,例如这个时间点是 N ,按照经验,后一个时间点的趋势是上升还是下降,幅度大约多少即可。
那些因素左右订单
前几天一直在寻找那些因素制约着订单数。
9点整和18点整 全区域订单分析图
订单的总量在不同日期,表现出极大的不同。但是,接单量和司机数有关系,司机数则是比较稳定的,9点的司机数大约是5000人,18点为4500人。(前三个数据是 01-01 到 01-03 节假日 ,01-09 ,01-10,01-16,01-17 分别是节假日,所以早晨的需求比较少 )
通过分析,我们应该可以整理出一张司机数和时间段的对应函数。(节假日和非节假日区分开来)
如果我们按照节假日和非节假日去看分时接单量
- 节假日的早高峰和平日的早高峰项目,相差巨大。
- 节假日和非节假日,其他时段接单量,基本持平。
- 每天的8:30分,17:30分 是两个最高值。
- 根据这个统计数据,我们大概知道了每天的接单情况。可以预测未来的某个时间片的接单量。当然,如果我们能够计算出Gap比率(GAP数/总订单数[GAP+接单数]),Gap数也是可以预测出来的。很遗憾,Gap比率的数据统计如下:(每天订单量起伏比较大,接单数较为固定,GAP比率则变化很大)
日期别9:00和18:00GAP比率
预测订单趋势
上面说了,日期别的订单差异量很大,但是我们是否可以考察一下,每个时段的订单变化率是否有规律可循呢?
例如在 100个时间片上订单时 N,则101个时间片上,根据统计一般会增加 1.5%的话,则可以预测101个时间片上的订单时 1.05 * N;
当然如果就这么计算的话,可能会接近于正确答案,但是完全没有使用POI,天气,交通等数据,基本上是不可能获奖的。。。
不过,我们可以先来试试看,是不是可以找到规律呢。从图表上看,我们应该可以统计出,每个时间点上数据的变化率。
周三的变化:
从第一个周三到第二个周三的变化
从第一个周三到第二个周三的变化率
订单变化率:(这个时间片 - 上个时间片)/ 上个时间片
这样的话,我们大概可以对于各个时间片之间订单的变化率做一个统计平均表。
假设时间片 N 的订单数位 Order ,下一个时间片N+1的订单数为 NextOrder,则 变化率 K = (NextOrder - Order) / Order。
我们可以计算出全区域的每个时间片的变化率,也可以算出单个区域的每个时间片的变化率。
每个区域的订单比例
有些区域订单多,有些区域订单少,这个比例是否会随着时间变化而变化呢?
放心,基本上每个区域的订单比率很固定的。
如何解决问题
题目里面告诉了我们所需测试Gap的时间片的前三个时间片的数据。结合变化率的概念,其实我们可以计算出待预测的时间片的订单量。
还有一个问题是接单量怎么考虑,我的想法是将这三个已知时间片的接单量的平均值作为新的接单量。
(有一种情况,例如一个时间片里 有50个订单,但是有1个GAP,这个时候其实不能认为接单量只有49,而应该认为这个区域的基本上是公供需平衡的。1个GAP有可能是偶然因素。所以我这里认为5个GAP以下都是供需正常的。)
- 第N+1个时间片的GAP = 第N + 1个时间片的订单数 - 第N + 1个时间片的接单能力。
- 第N + 1个时间片的订单数 = 第N 个时间片的订单数 * (订单变化率+ 1)
- 第N + 1个时间片的接单能力 = 第 N ,N-1, N-2 个时间片的接单能力的平均值。
最后公式是:
- 第N+1个时间片的GAP = 第N 个时间片的订单数 * (订单变化率+ 1) - 第 N ,N-1, N-2 个时间片的接单能力的平均值
这种方法计算出来的结果可能接近于答案,也可能远离答案。但是完全没有体现出机器学习的作用,所以本人觉得肯定是有问题的。这里只是给出一种解决方案。接下来,开始思考正统的解决方案。