Metric names in additional info are confusing
-
I'm submitting a ...
- [ ] bug report
- [ ] feature request
- [x] support request => Please do not submit support request here, see note at the top of this template.
Issue Description
- When Issue Happens
The
additional_infoin the BaseTask hasxxx_losskey and it has various metrics. However, when the metric property isgreater is better, then the metric is actually transformed. For example,accuracyis notaccuracy, but is handled aserror rate. The naming rule should be re-considered in the future.
Definitely we can improve the naming rule. But the error rate is exactly the idea behind xxx_loss. Additional info contains information about the loss. And to keep it general, the loss is always greater_is_better=False. I do agree that it can be confusing for people and I am not sure how useful it is to tell the error rate for all the other supported metrics. I suggest we store only 'xxx_loss':{<optimize_metric>: <transformed_metric_value>}. Additionally, we can add the score (so raw metric values) for all_supported_metrics to the additional_info. But this is something that we have in common with auto-sklearn, so @eddiebergman how is this handled there?
I don't think we do any renaming of metrics. We don't have anything in line with BaseTask so the only additional_info I'm aware of is from SMAC's runhistory items. We don't actually give much information back to the user about metrics at the moment though so I wouldn't look to us for guidance. Here's some pointer I can give you if it helps:
- Here's an example on how we report back scoring functions, needs a nicer interface for sure.
- You can use
leaderboardas a reference for what we take out of runhistory. We report back the'train_loss'and the'cost', where cost is caluclated usinggreater_is_betterand max values etc.. - Are metrics are defined here
I did not mean we need to completely rename them because it is painstaking in several ways.
- Usage in other methods/functions
- Need to check two names everytime (==> more if statements)
- Vague which states the values are (==> new codes do not work easily although it is a good aspect in terms of safe coding)
I would recommend to put prefix or suffix so that we can easily judge which states those values are now.
For example, as suggested, transformed_accuracy is one example. (or accuracy_loss. This is not an intuitive naming though)
But somehow the transformation is performed by worst_val - metric_val, we cannot just say negative_accuracy, which we can refer if we took - metric_val.