我正在做一个任务--只使用tweet来估计Twitter用户的地理位置。我在Twitter上收集了6000多人的推文(和用户)。每个用户都与一个城市相关联。
在数据集中,每个城市的样本(或用户)数量取决于城市大小。(也就是说,如果A市比B市人口多,则A市在数据集中有更多的用户。)这似乎是公平的,但它创建了一个不平衡的数据集。
现在,我计划收集另一个数据集;一个更加平衡的数据集(即,每个城市的用户数量几乎相同,尽管大城市的用户仍然会更多)。这样做是有意义的,还是应该继续使用不平衡的数据集?对这项工作有什么好处呢?
发布于 2019-03-15 16:18:44
当你一致地从一个社会中抽取样本时,从城市中选择的机会肯定与他们的人口直接相关。因此,更多的用户将从人口更多的城市选择,这是你想要解决的问题中最重要的特征之一。我认为,如果你想平衡数据集,你忽略了数据的一个重要特征,也忽略了你的问题。
我强烈建议继续使用不平衡数据集,并通过选择合适的损失函数和评估方法来处理。
免责声明:
如果使用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/47356
复制相似问题