У меня есть проблема классификации по нескольким классам (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.
Проблема в том, что независимо от того, какое значение я добавляю для пороговых значений, оно показывает, что это никак не влияет на мои прогнозы.
Знаете ли вы, есть ли возможность прогнозировать только те классы, у которых достоверность (вероятность) превышает определенный порог?
Другим способом было бы выбрать только прогнозы, вероятность которых превышает этот порог, но я ожидаю, что это может быть достигнуто с помощью структуры.
Спасибо.