我正在处理数千个数据集。其中许多是“不平衡的”;要么是具有高度偏态分布的多类列表(例如,三个类别的样本比例为 3500:300:4),要么是具有偏态分布的连续数。我正在寻找一些可以说“数据集有多严重不平衡”的指标。有这样的衡量标准吗?
最终,我想根据它们的平衡指标对这些数据集进行评分,并为它们中的每一个提供不同的平衡/机器学习解决方案。如果存在,我更喜欢 python 解决方案。
我正在处理数千个数据集。其中许多是“不平衡的”;要么是具有高度偏态分布的多类列表(例如,三个类别的样本比例为 3500:300:4),要么是具有偏态分布的连续数。我正在寻找一些可以说“数据集有多严重不平衡”的指标。有这样的衡量标准吗?
最终,我想根据它们的平衡指标对这些数据集进行评分,并为它们中的每一个提供不同的平衡/机器学习解决方案。如果存在,我更喜欢 python 解决方案。
您可以使用香农熵来衡量平衡。
在实例的数据集上,如果你有个大小为的类,你可以按如下方式计算熵:
这等于:
因此,您可以对数据集
使用以下平衡度量:
等于:
根据 Simone 的回答,我编写了这个简短的 python 代码来计算余额,这对我来说效果很好。
def balance(seq):
from collections import Counter
from numpy import log
n = len(seq)
classes = [(clas,float(count)) for clas,count in Counter(seq).items()]
k = len(classes)
H = -sum([ (count/n) * log((count/n)) for clas,count in classes]) #shannon entropy
return H/log(k)
非常感谢你!
我遇到了同样的问题,并寻找了一些指标来衡量我的数据集中的不平衡程度,但我没有找到任何指标。然后,我创建了一个在 0(完全平衡,所有类别中的样本数量相同)和 1(非常不平衡,当所有类别中的样本数量(除一个除外)为 1,其余样本属于一个类)
公式为:
示例:对于平衡情况,则
对于具有500、300和 100 个样本
,和,然后
在极端的三类情况下,我们在每个类中有 500、1 和 1 个样本,那么
,和,然后