我有一个非常不平衡的大数据集 ( 500000 instances
, 60 features
),它很容易发生变化(大小和特征数量的增加)。但是将保持不变的是班级的不平衡,这class 0
将永远是主导的。平均而言,90%
其中的数据将在 中class 0
,其余的将10%
在 中class 1
。
我对使用类标签 1 尽可能准确地分类实例感兴趣,因此我想增加其误分类成本。
我选择的分类器是RandomForest
为了解决类不平衡问题,我正在尝试调整权重,然后使用评估StratifiedKFold
并绘制相应roc_curve
的 k 折。
这是我的分类器的代码:
clf1 = RandomForestClassifier(n_estimators=25, min_samples_leaf=10, min_samples_split=10,
class_weight = "balanced", random_state=1, oob_score=True)
sample_weights = array([9 if i == 1 else 1 for i in y])
我浏览了文档,有些东西我不明白。我测试了所有这些方法,但评估指标的差异很小,所以我很难确定哪些设置优化了我的分类器。
不用说,即使我使用加权我的模型的预测能力非常低,敏感度是平均的0.2
这些是我的问题:
- 应该
sample_weight
和class_weight
同时使用吗? - between
class_weights = "balanced"
andclass_weights = balanced_subsamples
which 应该可以提供更好的分类器性能 - 是否
sample_weight
应该始终根据样本中的不平衡比例进行调整? class_weights = balanced_subsamples
同时sample_weight
使用时会报执行错误。为什么?
另外,如果有更好的方法来评估分类器,请告诉我。