一般来说,不平衡数据分类主要有三种解决方案。
- 通过生成人工数据或其他方式对薄类进行过采样。在可以生成准确的人工数据的情况下,此解决方案可能会有所帮助。
- 对人口众多的班级进行抽样不足。该解决方案也适用于类人口比例不是很低的情况(例如 30% 到 70% 而不是 1% 到 99%)
- 使用可以处理不平衡数据的适当损失函数。在存在不平衡数据的情况下,有许多指标可以评估分类器的性能。
免责声明:如果您使用 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)