我正在训练一种机器学习算法来对时间序列中的向上/向下趋势进行分类,而且我使用的是一个不平衡的特征集。似乎有必要平衡数据,因为算法可以学习到对某一特定趋势的偏见,但这是以非代表性数据集为代价的。我应该平衡我的数据吗?如果是这样的话,随机抽样是正确的方法吗?
发布于 2019-03-14 14:47:54
如果您可以更改算法的Loss function,它将非常有用,因此您不需要降低数据样本。在评价不平衡数据集分类方法的性能时,引入了许多有用的度量。其中一些是卡帕、CEN、MCEN、MCC和DP。
免责声明:
如果使用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)https://datascience.stackexchange.com/questions/28200
复制相似问题