当你统一从一个社会中抽取样本时,从城市中选择的机会肯定与他们的人口直接相关。因此,更多的用户将从更多人口稠密的城市中选出,这是您试图解决的问题的最重要特征之一。我认为,如果您想平衡数据集,您会忽略数据的这一重要特征以及您的问题。
我强烈建议继续使用不平衡的数据集并通过选择适当的损失函数和评估方法来处理它。
免责声明:
如果您使用 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)