我们有没有什么方法可以针对特定的指标使用内置的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
和{
在分类设置中,优化器使损失最小化,例如交叉熵;准确度、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,召回率会降低,精确度会提高,反之亦然。但正如其他人所提到的,这与优化(“最小化”)损失函数不同。在
相关问题 更多 >
编程相关推荐