豆腐鱼大佬的博文:https://blog.csdn.net/oXiaoBuDianEr123/article/details/79309022
好吧,直接复制粘贴过来,以备以后学习。
一:问题描述
题目中涉及到严格的时间概念,例如:预测未来N天的流量(人流,销售等),预测未来N天内的用户-对象对(用户-商品等)的问题等,都可以利用滑窗法解决。诸如类似形式的问题,尤其是要有严格的时间概念的问题。
二:基本方法
假设:题目描述为预测未来N天的流量信息,其中N的取值为大于等于1。基本诸如此种问题,题目会给出前X天的详细信息。这样,我们就知道,其完整的数据为 X+N 的形式,其中 N 是需要我们预测的部分,其真实值未知。
具体题目:recruit-restaurant-visitor-forecasting
通过机器学习的方法解决此类问题,需要构造与问题描述类似的样本格式。
我们需要在 X 中构造出与 X+N 格式一致的样本,这种情况下,切分X为两个部分,[X-M,M],其中M=N的长度。这样,就拥有了带有标签的数据,其中M是我们线下预测的部分其本质是符合线上的N的部分,而X-M类似于在[X,N]中的X部分。
线上预测部分:[X,N]
线下模拟部分:[X-M,M]
在这种情况下,由于仅仅划分了一部分的X为线下模拟部分,其数据量太小。因此,我们可以通过 滑窗法 增加更大部分的样本,以覆盖尽可能多的数据达到能够让我们的模型学习到更多的情况。
我们对于X-M进一步分割为 [X-M-L,L] 其中L=M=N
现在的数据格式
线上预测部分:[X,N]
线下模拟部分:[X-M,M],[X-M-L,L]
通过一次又一次的对数据的形式划分,可以得到充足的数据。
其中,对于L,M,N其数值也可以不等。
例如N=39,L=28,N=14,这种情况下,针对具体问题,需要通过验证的方式去调试。
++++++++++++++++++++++++++++++++++++++++++++++++++++++
划分好了类似的数据,这样我们需要明确哪些数据可以进行统计,同时也要知道那些数据作为需要预测的Y。
回顾问题,我们要预测N,那么N天内的销量就是我们待预测Y_pred,这样我们已经线下划分了不同的子区间,那么根据对应关系,其M就可以提取出真实的Y,而在X-M对应于在[X,N]区间的X,这个部分可以尽情的做数据的统计。
普遍在代码实现时,在[X-M,M]区间中,我们会首先提取M中的真实值Y和唯一标识ID,之后再X-M中不停的统计,最后通过唯一标识ID拼接到这个M中。
这样就把[X-M,M]转化为一个带有Y的data。
梳理一下最后的结果
[X,N]最后为不带Y的data,
[X-M,M]带有Y的data,
[X-M-L,L]带有Y的data.
假设我们提取了很多数据,我们可以自己划分train,valid
train 为 {[X-M-L,L] , [X-M-L-K,L-K],}
val 为 [X-M,M]
之后可以通过模型训练并进行对[X,N]的预测。
特征的提取需要结合具体题目,没有一定的套式。
诸如此种方式逐步可以增加更多的数据,其数据基本格式模拟线上的基本形式。
三:U-I-Rank问题
假设:某宝购物平台要预测一天的用户购买情况,这种情况下也是一个和时间有关的问题,不过这个问题中,我们既要预测用户买不买,同时也要预测买啥。
问题转换:这个问题,我们可以同时提取USER-ITEM对,转化为用户-产品对的形式,理解为:将user-item作为唯一标识,最终选择user-item预测概率最大的topN作为结果。
具体题目链接:天池新人赛
关于天池新人赛的题目在CSDN上面有很多人分享了思路,可以作为参考。
四:总结
对比以上所说的两类问题,都是和时间有密切关系且都是预测未来N天的一些Label值,都可以采取这类方式做最基本的处理。
这里简单描述了针对时间严格的问题的一种方案,我也是初学者,如有不足或者问题,请指出。