- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对一些不平衡数据(~20:1 比率)执行二元分类,并且获得了几乎完美的交叉验证准确性,但对于训练/测试中未使用的数据,预测率却很糟糕。反面例子有几千个,正面例子有几百个。该数据已标准化,并使用 SMOTE 来平衡类别分布。
使用 RandomForests 分类器,KFold 交叉验证几乎是完美的,但召回率/准确率值在 0.1-0.3 之间。我尝试过不同的平衡方法、PCA(大约有80个原始特征)、多个分类器、CV网格优化,甚至在8倍训练后组合树,但这些都没有显着改善结果。
与新数据相比,训练的效果让我有点惊讶。这有可能是因为训练过度造成的吗?我希望树木的组合能够帮助缓解这种情况,但事实并非如此。这些数据可能很难用可用的功能进行分类,但我是否遗漏了一些明显的东西?
最佳答案
解决办法其实很简单。对于这种不平衡的分类,您需要对您的分类进行加权,以便您的模型学习如何平等地对真假进行分类,而不必丢弃大量数据!
尝试像这样的简单示例:
def calculate_class_weights(train_classifications):
one_count = 0
zero_count = 0
one_weight = 0
for i in train_classifications:
if i == 1:
one_count += 1.0
if i == 0:
zero_count += 1.0
if one_count > zero_count:
one_weight = one_count / zero_count
if one_count < zero_count:
one_weight = zero_count / one_count
return one_weight
这将给出正分类与负分类相比的相对“权重”。然后您可以像这样调用您的模型:
classifier = svm.SVC(probability=True, class_weight={1: one_weight})
classifier.fit(training_set, train_classifiers)
所以这里负数的权重是1,正数的权重是之前计算的值。例如,如果正数是负数的两倍,则可能是 0.5。
祝你好运!
关于python - 数据不平衡的过度训练,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44417317/
我正在开发适用于 Wordpress 的 PSD,并面临着根据颜色过度对齐背景图像或相反的问题。 在桌面上一切都很好,但在移动设备上背景图像变小了(我使用了 background-size: 100%
在标准 Modelica 流体流量源中,通常指定流量或压力。例如,以下边界设置(P 表示压力边界,F 表示流量边界)通常会围绕管道组件: P - 管道 - P F - 管道 - P 但是,有时在同一侧
我正处于设计基于 Azure 的应用程序的早期阶段。考虑到我可能预期的需求的变化性,Azure 吸引我的地方之一是它的可扩展性。因此,我试图保持事物松散耦合,以便我可以在需要时添加实例。 我看到的关于
我与 Xcode 4 dot notation code sense problem 正好相反!点符号的代码完成不仅显示属性,还显示我的方法(在每个完成的左侧标记 P 或 M 分别指示它是属性还是方法
我是一名优秀的程序员,十分优秀!