class_docstr: This class tracks a metric during training for the dual purposes of early stopping
  and for knowing whether the current value is the best so far. It mimics the PyTorch
  `state_dict` / `load_state_dict` interface, so that it can be checkpointed along with
  your model and optimizer.
  
  Some metrics improve by increasing; others by decreasing. You can provide a
  `metric_name` that starts with "+" to indicate an increasing metric, or "-"
  to indicate a decreasing metric.
  
  # Parameters
  
  metric_name : `Union[str, List[str]]`
      Specifies the metric or metrics to track. Metric names have to start with
      "+" for increasing metrics or "-" for decreasing ones. If you specify more
      than one, it tracks the sum of the increasing metrics metrics minus the sum
      of the decreasing metrics.
  patience : `int`, optional (default = `None`)
      If provided, then `should_stop_early()` returns True if we go this
      many epochs without seeing a new best value.
code: def combined_score(self, metrics: Dict[str, float]) -> float:
      try:
          return sum(
              factor * metrics[metric_name]
              for factor, metric_name in self.tracked_metrics
          )
      except KeyError as e:
          raise ConfigurationError(
              f"You configured the trainer to use the {e.args[0]} "
              "metric for early stopping, but the model did not produce that metric."
          )
  
file_path: allennlp/allennlp/training/metric_tracker.py
imports: from typing import Optional, Dict, Any, List, Union
  from allennlp.common.checks import ConfigurationError
label_desc: Use image node_id 8 for calling the MetricTracker obj's underlying member method code with example usage: obj.combined_score(metrics) and returns: sum