特征工程常用
常用特征处理:
- 常见时间日期类特征:年/月/时、第几周/周次、是否周末、节假日、时差等
- 日期类聚合特征:客户最活跃的月份、某类产品上周累计销售、特定客户的周末消费额等
- 常用统计类特征:最值、均值、唯一值、偏度、峰度、KStat、分位数等
更多时序类衍生特征可参考tsfresh概述
其他特征处理技巧:
- 多项式特征(
preprocessing.PolynomialFeatures
) - 分箱(数值型变量 转 类别型变量,
pandas.cut
) - 对数化(修正存在高方差的数值型变量,
numpy.log
)
缺失填充也可以是特征工程的一部分:
- 简单缺失填充(补零、均值/中位数/众数填充)
- 算法填充缺失(knn、回归模型预测)
时序特征工程
格拉姆角场
格拉姆角场(Gramian Angular Field, GAF)是结合坐标变换和格拉姆矩阵的相关知识,实现将时间序列变换成图像的一种编码方法。
格拉姆矩阵是两两向量的内积组成,可以保存时间序列的时间依赖性,却不能有效的区分价值信息和高斯噪声。因此,在进行格拉姆矩阵变换之前,时间序列需要进行空间变换
普遍的方法是将笛卡尔坐标系转换成极坐标系(半径、角度)
对于一个时间序列$X=(x_t,t=1,2,...,N)$,可以通过以下步骤得到 GAF 图:
- 使用最小-最大定标器(Min-Max scaler),将原始时间序列数据缩放到
[-1,1]
$$\begin{gathered}\widetilde{x}_{-1}^i=\frac{(x_i-\max(X)+(x_i-\min(X))}{\max(X)-\min(X)} \\ \\\mathrm{or}\quad\widetilde{x}_0^i=\frac{x_i-\min(X)}{\max(X)-\min(X)}\end{gathered}$$ - 将第一步的结果进行极坐标系变换,得到每一个数据点对应的半径和角度 $$\left. \left\{\begin{aligned}\phi&=\arccos(\widetilde{x}_i),-1\leq\widetilde{x}_i\leq1,\widetilde{x}_i\in\widetilde{X} \\r&=\frac{t_i}N,t_i\in\mathbb{N}\end{aligned}\right.\right.$$
- 利用和角关系和差角关系,得到对应的 GASF 图和 GADF 图 $$\begin{aligned}
&\text{GASF} =[\cos(\phi_i+\phi_j)] =\tilde{X}^{\prime}\cdot\tilde{X}-\sqrt{I-\tilde{X}^2}^{\prime}\cdot\sqrt{I-\tilde{X}^2} \\ &\text{GADF} =[\sin(\phi_i-\phi_j)] =\sqrt{I-\tilde{X}^2}^{\prime}\cdot\tilde{X}-\tilde{X}^{\prime}\cdot\sqrt{I-\tilde{X}^2} \end{aligned}$$