我正在处理一个二分类问题,每个数据实例包含多个不同指标的时间序列,同时还有一些其他属性。如何处理这些时间序列?是将它们视为独立的属性吗?但这样做会丢失与时间维度相关的信息。
为了更具体地说明,训练实例的一个例子如下所示:
ID MetricA_Day1 MetricA_Day2 ..... MetricA_Day31 MetricB_Day1....MetricB_Day2 AttributeC AttributeD AttributeE
处理这种情况的最佳实践是什么?
回答:
首先,给出一个“通用”的回答:没有所谓的最佳实践在机器学习中。实际上,只有不好的和当前流行的方法,但没有“最佳”的方法。即使是二元线性分类,根据数据的不同,训练几何模型(SVM?)还是概率模型哪个更好也是因数据而异的。即使我们缩小到某个特定模型(比如说神经网络),在数据缩放方面也没有最佳实践。应该是在[0,1]范围内吗?还是[-1,1]?平均值为0,方差为1呢?协方差矩阵又如何处理?
现在进入细节——你的问题几乎没有提供关于数据的任何信息。说“我有一些属性和几个时间序列”远不能提供任何有洞察力和有价值的答案。但这似乎不是一个有明确答案的任务,而是一个长期研究任务。
在研究过程中,你可以寻找什么?
- 这里真的需要这样的丰富表示吗?人们倾向于认为“越多越好”,但在机器学习中这并不一定正确。更简单、更有信息量的表示通常更好。或许可以尝试将你的时间序列表示为一些通用特征,比如一些频率特征、幅度等。
- 核方法可以使用非常广泛的相似性度量,特别是你可以为表示的每个“部分”定义不同的度量——因此时间序列可以使用专门的核,而简单属性可以使用简单的核,总体上你只需使用这些核的和(这也是一个有效的核)。
- 基于距离的方法(如kNN)也可以采用类似的方法,通过为每个维度定义不同的距离来实现。
- 你还可以为表示的每个“部分”训练单独的分类器——因此,再次——时间序列可以有一些专门的时间序列分类器等,并将它们作为一个集成使用(处理这种集成的方法有很多,目前在机器学习中这是一个非常热门的话题)。