Spark MLlib прогнозируют, только если порог больше, чем значение - PullRequest
0 голосов
/ 30 октября 2018

У меня есть проблема классификации по нескольким классам (38 классов), и я решил использовать конвейер в Spark ML для ее решения. Вот как я создал свою модель.

val nb = new NaiveBayes()
  .setLabelCol("id")
  .setFeaturesCol("features")
  .setThresholds(Seq(1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25).toArray)

val pipeline = new Pipeline()
  .setStages(Array(stages, assembler, nb))

val model = pipeline.fit(trainingSet)

Я хочу, чтобы моя модель могла прогнозировать класс, только если его достоверность (вероятность) превышает 0,8%.

Я много искал в документации Spark, чтобы лучше понять, что означает пороговый параметр, но единственная релевантная часть информации, которую я нашел, это:

Пороговые значения в мультиклассовой классификации для корректировки вероятности предсказывая каждый класс. Массив должен иметь длину, равную числу классы со значениями> 0, за исключением того, что самое большее одно значение может быть 0. Предсказывается класс с наибольшим значением p / t, где p - оригинал вероятность этого класса и т является порогом класса.

Вот почему мои пороги равны 1,25.

Проблема в том, что независимо от того, какое значение я добавляю для пороговых значений, оно показывает, что это никак не влияет на мои прогнозы.

Знаете ли вы, есть ли возможность прогнозировать только те классы, у которых достоверность (вероятность) превышает определенный порог?

Другим способом было бы выбрать только прогнозы, вероятность которых превышает этот порог, но я ожидаю, что это может быть достигнуто с помощью структуры.

Спасибо.

...