常用的数据处理
监督学习往往需要针对样本数据进行特征和标签的划分,对于单维、多维时间序列以及时序图,其划分的方法都比较类似,具体可以分析如下几种情况:
one to one
不论是单维、多维还是时序图,都是把t时刻的数据作为特征,t+1的数据作
为标签,随着t从序列头部到后部不断移动,由此构造出序列的特征和标签。
one to many:
不论是单维、多维还是时序图,都是把t时刻的数据作为特征,t+K的数据作为标签,随着t从序列头部到后部不断移动,由此构造出序列的特征和标签。
many to one:
不论是单维、多维还是时序图,都是把t-k时刻的数据作为特征,t时刻的数据作为标签,随着t从序列头部到后部不断移动,由此构造出序列的特征和标签。
many to many:
不论是单维、多维还是时序图,都是把t-k时刻的数据作为特征,t+K的数据作为标签,随着t从序列头部到后部不断移动,由此构造出序列的特征和标签。
构建时间特征
抽取时间序列中的时间维度特征, 将时间维度数据分解成八个时间特征:
['hour', 'day_of_week', 'quarter', 'month', 'year', 'day_of_year', 'day_of_month', 'week_of_year']
demo
def create_features(df, label=None): df['date'] = df.index # index: DatetimeIndex df['hour'] = df['date'].dt.hour # dt: DatetimeProperties, hour: Series df['day_of_week'] = df['date'].dt.dayofweek df['quarter'] = df['date'].dt.quarter df['month'] = df['date'].dt.month df['year'] = df['date'].dt.year df['day_of_year'] = df['date'].dt.dayofyear df['day_of_month'] = df['date'].dt.day df['week_of_year'] = df['date'].dt.weekofyear X = df[['hour', 'day_of_week', 'quarter', 'month', 'year', 'day_of_year', 'day_of_month', 'week_of_year']] if label: y = df[label] return X, y return X
评估
1、MSE 对比MAE,MSE可以放大预测偏差较大的值,可以比较不同预测模型的稳定性,应用场景相对多一点。
2、均方根误差 RMSE 因为使用的是平均误差,而平均误差对异常点较敏感,如果回归器对某个点的回归值很不合理,那么它的误差则比较大,从而会对RMSE的值有较大影响,即平均值是非鲁棒的。
改进:使用误差的分位数来代替,如中位数来代替平均数。假设100个数,最大的数再怎么改变,中位数也不会变,因此其对异常点具有鲁棒性。
平均平方差/均方误差是回归任务最常用的性能度量。