针对tensorflow中的特定指标进行优化

我们能否使用内置的tensorflow优化器来针对特定指标进行优化?如果不能,应该如何实现?例如,如果我想专注于最大化我的分类器的F分数,这是可能的吗?

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个训练步骤,我得到的结果仍然不一致。在查看日志中的指标时,我发现precisionrecallaccuracy的行为非常不稳定。尽管增加了训练步骤的数量,也没有显著的改善。因此我想,如果我能让优化器更多地关注于提高整体F分数,我可能会得到更好的结果。因此提出了这个问题。我是否遗漏了什么?


回答:

在分类设置中,优化器最小化的是损失,例如交叉熵;像准确率、F分数、精确率、召回率等量本质上是业务指标,它们在优化过程中无法直接最小化。

这个问题在Stack Overflow上以各种形式频繁出现;这里有一些线程,希望能帮助你理清这些概念(虽然它们提到的是准确率、精确率和召回率,但对于F分数的论证是完全相同的):

损失和准确率 – 这些学习曲线合理吗?

成本函数训练目标与准确率期望目标

在Keras中是否有基于精确率或召回率而不是损失的优化器?

总结一下,改编我自己的一个(链接的)回答:

损失和像准确率或F分数这样的指标是不同的东西;大体来说,像准确率和F分数这样的指标是从业务角度我们真正感兴趣的,而损失是从数学角度学习算法(优化器)试图最小化的目标函数。更粗略地说,你可以将损失视为业务目标(准确率、F分数等)的“翻译”到数学领域,这种翻译在分类问题中是必要的(在回归问题中,通常损失和业务目标是相同的,或者至少原则上可以是相同的,例如均方根误差)…

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注