用于二进制分类的不平衡训练样本(90%vs 10%)-Tensorflow

时间:2018-09-21 18:08:48

标签: deep-learning logistic-regression loss-function

我有100,000个训练样本(具有5个特征)(其中90,000个分类为“ 0”,其余分类为“ 1”)

我获得了98%的准确度,但准确率/召回率是55%

是否有任何提高精度/召回率的建议?使用张量流

#Loss function after sigmoid applied on yy_
loss = tf.losses.log_loss(yy_, scores, scope="loss")
optimizer = tf.train.GradientDescentOptimizer(learning_rate=.01)
train_op = optimizer.minimize(loss)
prediction = (scores > 0.5)

1 个答案:

答案 0 :(得分:0)

我没有使用过Tensorflow,但这是我的建议

  1. 当数据不平衡时,请勿使用accuracy作为指标。而是使用confusion matrix
  2. learning_rate上进行超参数调整
  3. 如果您过于关注积极的课堂,请使用Precision, Recall, F1 score之类的指标。您也可以尝试ROC&,但是即使您不太在乎正值,也可以使用这些参数,因为这些值可以使您对模型的行为有所了解。
  4. missing values进行适当处理,并根据需要标准化数据。
  5. 从数据中删除重复项
  6. No Free Lunch,即没有固定的算法可以解决所有问题。您必须尝试不同的模型。尝试各种功能等。另外,请确保您泄漏了数据
  7. 尽一切可能Feature Engineering。这是最重要的部分