【问题标题】:imbalanced-learn: how is the threshold calculated in the instance hardness threshold method?不平衡学习:实例硬度阈值方法中的阈值是如何计算的?
【发布时间】:2020-10-14 13:08:45
【问题描述】:

我正在查看来自不平衡学习的 InstanceHardnessThreshold 转换器的源代码,这里:https://github.com/scikit-learn-contrib/imbalanced-learn/blob/12b2e0d/imblearn/under_sampling/_prototype_selection/_instance_hardness_threshold.py#L167

我想知道阈值是如何计算的,原理是什么?

【问题讨论】:

    标签: imbalanced-data


    【解决方案1】:

    在与不平衡学习包的维护者讨论后,这是我学到的:

    阈值确定如下:

    threshold = np.percentile(
                probabilities[y == target_class],
                (1.0 - (n_samples / target_stats[target_class])) * 100.0,
    )
    

    其中 n_samples 是来自多数类的最终数据集中所需的样本数,而 target_stats[target_class] 是原始数据集中存在的多数类的总数。

    我们需要找到一个概率阈值,使得高于该阈值的样本数与sampling_strategy 中请求的样本数一致。默认为少数类中的样本数,除非用户另有声明。

    实例硬度是观察被漏分类的概率。换句话说,它是 1 - 类的概率。

    这个想法是估计器给出的概率与样本属于该类的确定性有关。因此,百分位数 0.0 意味着我们选择所有样本,而百分位数 1.0 意味着我们将选择单个样本(概率最大的样本)。因此,阈值对应于选择 N 个最确定的样本属于 C 类,如估计器所见。 N 由 sampling_strategy 参数定义(例如,预期的平衡比率)。

    此方法可能会返回比用户请求的更多的观察结果。这在文档中有所提及。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-19
      • 2017-08-30
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      相关资源
      最近更新 更多