时序特征的衍生方法
pd.to_datetime(df['time'])
'2022-01-03;02:31:52' -> '2022-01-03 02:31:52'
df['time'].values.astype('datetime64[ns/D/..]')
df['time-D'] = df['time'].values.astype('datetime64[s/h/D/...]')
df['year'] = df['time'].dt.year / month / day / hour / minute / second
df['quarter'] = df['time'].quarter
df['weekofyear'] = df['time'].weekofyear
df['dayofweek'] = df['time'].dayofweek + 1
df['weekend'] = (df['dayofweek'] > 5).astype(int)
df['hourPeriodOfday'] = (t['hour'] // 6).astype(int) + 1
- 为什么要提取这些时序信息?时序字段衍生的本质:增加分组的细粒度化
分析:首先,时序特征的衍生其本质上就是对用户进行了更多不同维度的分组,该过程可以通过下图进行解释,在tenure时序特征进行特征衍生后,ID1-6号用户在所属年份列中就被划分到了2019年组中,即他们同为2019年入网的用户,而根据入网的季节进行划分,则ID为0、4、5的三个用户会被划归到第一季度入网用户组中,并且时序特征衍生的字段越多、对用户分组的维度也就越多:

而对用户进行分组之所以能够帮助模型进行建模与训练,其根本原因也是因为有的时候,同一组内(或者是多组交叉)的用户会表现出相类似的特性(或者规律),从而能够让模型更快速的对标签进行更准确的预测,例如假设数据集如下所示,在原始数据集看来,标签取值毫无规律可言,但当我们对其进行时序特征的特征衍生后,立刻能发掘很多规律,例如第四季度用户都流失了、2019年第一季度用户流失都流失了等等,同样,这些通过观察就能看到的规律,也很快会被模型捕捉到,而这也是时序字段衍生能够帮助模型进行更好更快的预测的直观体现。