机器学习算法竞赛实战(五)

时间序列

什么是时间按序列

时间序列是按时间按顺序索引的一系列数据点,因此,组成时间序列的数据由相对确定的时间戳组成,与随机样本数据相比,从时间序列数据中能够提取更多的附加信息。

从变量角度可以将这些变量归纳为单变量时间序列和多变量时间序列,其次可以从预测目标角度将这些问题归纳为单步预测多步预测

交叉验证

由于时间序列中包含时间结构,因此一般在保留这种结构的同时要注意不能在折叠中出现数据穿越的情况。如果进行随机化的交叉验证,那么标签值之间的所有的时间相关性都将丢失,并且会导致数据穿越。

我们首先用初始时间到t时刻的数据来训练模型,然后从t到t+n的时刻进行线下验证,并计算评价指标的分数;接下来,将训练样本扩展到t+n时刻,用t+n到t+2n时刻的数据进行验证,不断重复这个过程,直到达最后一个可用的标签值。验证次数可以自由控制,最后对多次验证结果计算平均值得到最终的线下验证结果。

基本规则方法

  • 加权平均 \[ y_t=\frac{1}{N}{(w_1*y_{t-1}+w_2*y_{t-2}+\dots+w_N*y_{t-N}} \]

  • 指数平滑 \[ y_i=a\sum_{n=0}^{t}{1-a}y_{t-n} \]

时间序列模式

  • 趋势性
  • 周期性
  • 相关性
  • 随机性

特征提取方式

历史平移

时间序列数据存在者前后关系,时间序列中越是相近的标签,其相关性越高。我们可以借助这个特性构造历史平移特征,即直接将历史记录作为特征。具体的,如果当前时刻为t,那么可以将t-1,t-2,...,t-n时刻的值作为特征,这个值可以是标签值,也可以是与标签值存在关联性的值。

窗口统计

不同于历史平移从单个序列单位中提取特征,窗口统计是从多个序列单位中提取特征。窗口统计可以反应区间内序列数据的状况。

序列熵特征

在时间序列中,熵可以用来描述序列的确定性与不确定性。

实战案例:全球城市计算AI挑战赛

全球城市计算AI挑战赛-天池大赛-阿里云天池 (aliyun.com)

赛题理解

赛题FAQ

Q: 本次竞赛的标签需要自己构建,如何建模能使我们在给定的数据集上达到尽可能大的预测性?

A: 构建地铁站的流量标签是本次竞赛的首要任务。在初次观察数据后,会发现存在或多或少的问题,比如出现了凌晨进出地铁站流量不为0的记录,不同地铁站的数据存在一定的差异性。为了保证结果的稳定性,获取可以尝试对进出地铁站的流量按地铁站进行处理(归一化,标准化等)

Q: 地铁站的流量存在太多影响因素,应该如何处理异常值,保证模型稳定?

A: 特殊因素带来的影响非常多,针对这类问题,常见的方法有异常去除,异常标记和异常平滑。

Baseline方案

  • 数据准备
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
import pandas as pd
from tqdm import tqdm
import lightgbm as lgb

#读取数据
path = './input/'
for i in tqdm(range(1, 26)):
if i < 10:
train_tmp = pd.read_csv(path + 'Metro_train/record_2019-01-0' + str(i) + '.csv')
else:
train_tmp = pd.read_csv(path + 'Metro_train/record_2019-01-' + str(i) + '.csv')
if i == 1:


机器学习算法竞赛实战(五)
https://www.spacezxy.top/2021/11/04/ML-Pratice/ML-Algorithm-pratice-5/
作者
Xavier ZXY
发布于
2021年11月4日
许可协议