针对特定指标进行优化

2024-06-17 01:42:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我们有没有什么方法可以针对特定的指标使用内置的tensorflow优化器进行优化?如果没有,如何做到这一点?例如,如果我只想把重点放在最大化我的分类器的F分数上,是否可以在tensorflow中这样做?在

estimator = tf.estimator.LinearClassifier(
  feature_columns=feature_cols,
  config=my_checkpointing_config,
  model_dir=output_dir,
  optimizer=lambda: tf.train.FtrlOptimizer(
      learning_rate=tf.train.exponential_decay(
          learning_rate=0.1,
          global_step=tf.train.get_or_create_global_step(),
          decay_steps=1000,
          decay_rate=0.96)))

我正试图优化我的分类器,特别是在获得更好的F分数的基础上。尽管使用了衰减的learning_rate和300个训练步骤,我得到的结果却不一致。在检查日志中的度量时,我发现precisionrecall和{}的行为非常不稳定。尽管增加了培训步骤,但没有明显改善。所以我想如果我能让优化器把更多的精力放在提高F分数上,我可能会得到更好的结果。这就是问题所在。我有什么遗漏吗?在


Tags: configrate分类器tftensorflowstepdir步骤
2条回答

在分类设置中,优化器使损失最小化,例如交叉熵;准确度、F分数、精确度、召回率等基本上是业务指标,在优化过程中它们不是(也不能)直接最小化。在

这是一个经常出现的问题,以各种形式出现;下面是一些线索,希望能帮助你理清这些概念(尽管它们涉及准确度、精确性和回忆力,但F分数的论点完全相同):

Loss & accuracy - Are these reasonable learning curves?

Cost function training target versus accuracy desired goal

Is there an optimizer in keras based on precision or recall instead of loss?

底线是,调整我自己(链接)的答案之一:

损失和诸如准确度或F-score之类的指标是不同的;粗略地说,从业务角度来看,准确度和F-score等指标是我们真正感兴趣的,而损失是学习算法(优化器)试图从数学角度最小化的目标函数。更粗略地说,你可以把损失看作是商业目标(准确度、F分数等)到数学领域的“翻译”,这是分类问题(在回归问题中,通常损失和商业目标是相同的,或者至少在原则上可以是相同的)中的翻译,e、 g.皇家海军陆战队。。。在

可以从技术上调整区分1类和0类的阈值参数。例如,在logistic回归中,如果阈值从0.5降低到0.3,召回率会降低,精确度会提高,反之亦然。但正如其他人所提到的,这与优化(“最小化”)损失函数不同。在

相关问题 更多 >