Pul*_*lah 5 python machine-learning tensorflow
有什么方法可以针对特定指标使用内置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 个训练步骤,但我得到的结果不一致。在检查日志中的指标,我发现的行为precision,recall并且accuracy是非常不稳定的。尽管增加了训练步骤的数量,但没有显着改善。所以我想,如果我能让优化器更专注于提高整体 F-score,我可能会得到更好的结果。因此这个问题。有什么我想念的吗?
在分类设置中,优化器最小化损失,例如交叉熵;准确率、F 分数、精确度、召回率等数量本质上是业务指标,在优化过程中不会(也不能)直接最小化它们。
这是一个以各种伪装形式在 SO 中频繁出现的问题;这里有一些线程,希望能帮助您理清概念(尽管它们指的是准确度、精确度和召回率,但 F-score 的论点完全相同):
最重要的是,改编我自己的(链接的)答案之一:
损失和准确性或 F 分数等指标是不同的东西;粗略地说,准确率和 F-score 等指标是我们从业务角度实际感兴趣的,而损失是学习算法(优化器)从数学角度试图最小化的目标函数。更粗略地说,您可以将损失视为业务目标(准确性、F 分数等)到数学领域的“转换”,这是分类问题(在回归问题中,通常是损失和业务目标是相同的,或者至少原则上可以是相同的,例如 RMSE)...