3

我正在使用 scikit-learn 的 LogisticRegression 对象进行正则化二进制分类。我已经阅读了文档,intercept_scaling但我不明白如何明智地选择这个值。

数据集如下所示:

  • 10-20 个特征,300-500 次重复
  • 高度非高斯,事实上大多数观测值为零
  • 输出类不一定同样可能。在某些情况下,它们几乎是 50/50,在其他情况下,它们更像是 90/10。
  • 通常C=0.001会给出良好的交叉验证结果。

该文档包含警告,即拦截本身需要进行正则化,就像其他所有功能一样,intercept_scaling可以用来解决这个问题。但是我应该如何选择这个值呢?一个简单的答案是探索和选择提供最佳性能的参数的许多可能C组合intercept_scaling。但是这个参数搜索需要相当长的时间,如果可能的话,我想避免这种情况。

理想情况下,我想使用截距来控制输出预测的分布。也就是说,我要确保分类器在训练集上预测“class 1”的概率等于“class 1”数据在训练集中的比例。我知道在某些情况下是这样,但在我的数据中并非如此。我不知道这是由于正则化还是输入数据的非高斯性质。

感谢您的任何建议!

4

1 回答 1

1

当您尝试通过设置对正类进行过采样时class_weight="auto"?这有效地对代表性不足的类进行过采样,对多数类进行过采样。

当前的稳定文档有点混乱,因为它们似乎是从 LR 复制粘贴SVC而不是为 LR 编辑的;这只是在最前沿的版本中改变了。)

于 2013-07-18T20:33:44.337 回答