什么时候应该平衡时间序列数据集?

数据挖掘 机器学习 分类 时间序列 阶级失衡
2021-09-18 05:06:40

我正在训练一种机器学习算法来对时间序列中的向上/向下趋势进行分类,并且我正在使用不平衡的特征集。似乎有必要平衡数据,因为该算法可以学习对特定趋势的偏见,但这是以非代表性数据集为代价的。我应该平衡我的数据吗?如果是这样,随机欠采样是正确的方法吗?

1个回答

如果您可以更改Loss function算法,这将非常有帮助,因此您不需要对数据进行下采样。引入了许多有用的指标来评估不平衡数据集的分类方法的性能。其中一些是KappaCENMCENMCCDP

免责声明:

如果您使用 python,PyCM模块可以帮助您找出这些指标。

这是一个从该模块获取推荐参数的简单代码:

>>> from pycm import *

>>> cm = ConfusionMatrix(matrix={"Class1": {"Class1": 1, "Class2":2}, "Class2": {"Class1": 0, "Class2": 5}})  

>>> print(cm.recommended_list)
["Kappa", "SOA1(Landis & Koch)", "SOA2(Fleiss)", "SOA3(Altman)", "SOA4(Cicchetti)", "CEN", "MCEN", "MCC", "J", "Overall J", "Overall MCC", "Overall CEN", "Overall MCEN", "AUC", "AUCI", "G", "DP", "DPI", "GI"]

之后,您想用作损失函数的每个参数都可以按如下方式使用:

>>> y_pred = model.predict      #the prediction of the implemented model

>>> y_actu = data.target        #data labels

>>> cm = ConfusionMatrix(y_actu, y_pred)

>>> loss = cm.Kappa             #or any other parameter (Example: cm.SOA1)