in core/src/main/scala/com/microsoft/azure/synapse/ml/automl/EvaluationUtils.scala [42:63]
def getMetricWithOperator(modelType: String, evaluationMetric: String): (String, Ordering[Double]) = {
val chooseHighest = Ordering.Double
val chooseLowest = Ordering.Double.reverse
val (evaluationMetricColumnName, operator): (String, Ordering[Double]) = modelType match {
case SchemaConstants.RegressionKind => evaluationMetric match {
case MetricConstants.MseSparkMetric => (MetricConstants.MseColumnName, chooseLowest)
case MetricConstants.RmseSparkMetric => (MetricConstants.RmseColumnName, chooseLowest)
case MetricConstants.R2SparkMetric => (MetricConstants.R2ColumnName, chooseHighest)
case MetricConstants.MaeSparkMetric => (MetricConstants.MaeColumnName, chooseLowest)
case _ => throw new Exception("Metric is not supported for regressors")
}
case SchemaConstants.ClassificationKind => evaluationMetric match {
case MetricConstants.AucSparkMetric => (MetricConstants.AucColumnName, chooseHighest)
case MetricConstants.PrecisionSparkMetric => (MetricConstants.PrecisionColumnName, chooseHighest)
case MetricConstants.RecallSparkMetric => (MetricConstants.RecallColumnName, chooseHighest)
case MetricConstants.AccuracySparkMetric => (MetricConstants.AccuracyColumnName, chooseHighest)
case _ => throw new Exception("Metric is not supported for classifiers")
}
case _ => throw new Exception("Model type not supported for evaluation")
}
(evaluationMetricColumnName, operator)
}