scikit 学习中的样本权重和 class 权重选项有什么区别?
What is the difference between sample weight and class weight options in scikit learn?
我有 class 不平衡问题,想使用成本敏感学习来解决这个问题。
- 样本不足和样本过多
- 赋予class权重以使用修改后的损失函数
问题
Scikit learn 有 2 个选项,分别称为 class 权重和样本权重。样本权重实际上是在执行选项 2) 和 class 权重选项 1)。选项 2) 是处理 class 不平衡的推荐方法。
这是相似的概念,但是使用 sample_weights 可以强制估计器更加关注某些样本,使用 class_weights 可以强制估计器关注某些特定的 class. sample_weight=0 或 class_weight=0 基本上意味着估计器在学习过程中根本不需要考虑这样的 samples/classes。因此 classifier(例如)永远不会预测一些 class 如果 class_weight = 0 对于这个 class。如果某些 sample_weight/class_weight 大于其他 samples/classes 上的 sample_weight/class_weight - 估算器将首先尝试将 samples/classes 上的误差最小化。您可以同时使用用户定义的 sample_weights 和 class_weights。
如果您想 undersample/oversample 您的训练集使用简单的 cloning/removing - 这将等于对应 sample_weights/class_weights 的 increasing/decreasing。
在更复杂的情况下,您还可以尝试使用 SMOTE.
等技术人工生成样本
sample_weight
和class_weight
有一个类似的作用,就是让你的估计器更加关注一些样本。
实际样本权重将为 sample_weight * weights from class_weight
。
这与 under/oversampling 的目的相同,但行为可能不同:假设您有一个随机选择样本的算法(如在随机森林中),您是否过度采样很重要。
总结一下:
class_weight
和 sample_weight
都做 2),选项 2) 是 一种 处理 class 不平衡的方法。我不知道普遍推荐的方法,我会针对您的具体问题尝试 1)、2) 和 1) + 2),看看哪种方法最有效。
我有 class 不平衡问题,想使用成本敏感学习来解决这个问题。
- 样本不足和样本过多
- 赋予class权重以使用修改后的损失函数
问题
Scikit learn 有 2 个选项,分别称为 class 权重和样本权重。样本权重实际上是在执行选项 2) 和 class 权重选项 1)。选项 2) 是处理 class 不平衡的推荐方法。
这是相似的概念,但是使用 sample_weights 可以强制估计器更加关注某些样本,使用 class_weights 可以强制估计器关注某些特定的 class. sample_weight=0 或 class_weight=0 基本上意味着估计器在学习过程中根本不需要考虑这样的 samples/classes。因此 classifier(例如)永远不会预测一些 class 如果 class_weight = 0 对于这个 class。如果某些 sample_weight/class_weight 大于其他 samples/classes 上的 sample_weight/class_weight - 估算器将首先尝试将 samples/classes 上的误差最小化。您可以同时使用用户定义的 sample_weights 和 class_weights。
如果您想 undersample/oversample 您的训练集使用简单的 cloning/removing - 这将等于对应 sample_weights/class_weights 的 increasing/decreasing。
在更复杂的情况下,您还可以尝试使用 SMOTE.
等技术人工生成样本sample_weight
和class_weight
有一个类似的作用,就是让你的估计器更加关注一些样本。
实际样本权重将为 sample_weight * weights from class_weight
。
这与 under/oversampling 的目的相同,但行为可能不同:假设您有一个随机选择样本的算法(如在随机森林中),您是否过度采样很重要。
总结一下:
class_weight
和 sample_weight
都做 2),选项 2) 是 一种 处理 class 不平衡的方法。我不知道普遍推荐的方法,我会针对您的具体问题尝试 1)、2) 和 1) + 2),看看哪种方法最有效。