java.lang.Object
org.elasticsearch.xpack.core.ml.dataframe.evaluation.common.AbstractAucRoc
org.elasticsearch.xpack.core.ml.dataframe.evaluation.outlierdetection.AucRoc
All Implemented Interfaces:
NamedWriteable, Writeable, org.elasticsearch.xcontent.ToXContent, org.elasticsearch.xcontent.ToXContentObject, EvaluationMetric

public class AucRoc extends AbstractAucRoc
Area under the curve (AUC) of the receiver operating characteristic (ROC). The ROC curve is a plot of the TPR (true positive rate) against the FPR (false positive rate) over a varying threshold. This particular implementation is making use of ES aggregations to calculate the curve. It then uses the trapezoidal rule to calculate the AUC. In particular, in order to calculate the ROC, we get percentiles of TP and FP against the predicted probability. We call those Rate-Threshold curves. We then scan ROC points from each Rate-Threshold curve against the other using interpolation. This gives us an approximation of the ROC curve that has the advantage of being efficient and resilient to some edge cases. When this is used for multi-class classification, it will calculate the ROC curve of each class versus the rest.
  • Field Details

    • INCLUDE_CURVE

      public static final org.elasticsearch.xcontent.ParseField INCLUDE_CURVE
    • PARSER

      public static final org.elasticsearch.xcontent.ConstructingObjectParser<AucRoc,Void> PARSER
  • Constructor Details

  • Method Details

    • fromXContent

      public static AucRoc fromXContent(org.elasticsearch.xcontent.XContentParser parser)
    • getWriteableName

      public String getWriteableName()
    • writeTo

      public void writeTo(StreamOutput out) throws IOException
      Throws:
      IOException
    • toXContent

      public org.elasticsearch.xcontent.XContentBuilder toXContent(org.elasticsearch.xcontent.XContentBuilder builder, org.elasticsearch.xcontent.ToXContent.Params params) throws IOException
      Throws:
      IOException
    • getRequiredFields

      public Set<String> getRequiredFields()
      Description copied from interface: EvaluationMetric
      Returns the set of fields that this metric requires in order to be calculated.
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • aggs

      public org.elasticsearch.core.Tuple<List<AggregationBuilder>,List<PipelineAggregationBuilder>> aggs(EvaluationParameters parameters, EvaluationFields evaluationFields)
      Description copied from interface: EvaluationMetric
      Builds the aggregation that collect required data to compute the metric
      Parameters:
      parameters - settings that may be needed by aggregations
      evaluationFields - fields that may be needed by aggregations
      Returns:
      the aggregations required to compute the metric
    • process

      public void process(InternalAggregations aggs)
      Description copied from interface: EvaluationMetric
      Processes given aggregations as a step towards computing result
      Parameters:
      aggs - aggregations from SearchResponse
    • getResult

      public Optional<EvaluationMetricResult> getResult()
      Description copied from interface: EvaluationMetric
      Gets the evaluation result for this metric.
      Returns:
      Optional.empty() if the result is not available yet, Optional.of(result) otherwise