Плохая производительность, показанная на моделировании редких событий

datascience.stackexchange https://datascience.stackexchange.com/questions/6042

  •  16-10-2019
  •  | 
  •  

Вопрос

Я работаю над редкой проблемой классификации событий. У меня есть 95% данных в качестве класса большинства и 5% данных в качестве класса меньшинств. Я использую алгоритм классификации деревьев. Я измеряю доброта модели, используя матрицу путаницы.

Поскольку у меня есть класс меньшинства всего 5% от общего объема данных, хотя показатели моего прогнозирования класса меньшинств почти 70%, общее количество ошибок высока.

Например, вот моя матрица путаницы. 0 1 0 213812 7008 1 29083 16877

Хотя класс меньшинства (класс 1) правильно предсказал в 16877 раз (70%, а неправильная классификация составляет всего 30%, но абсолютное значение неправильной классификации очень высока (29083) по сравнению с правильно предсказанным классом минотрий (16877). Решение менее полезно для бизнеса.

Есть ли какая -либо идея для решения таких проблем в таком редком моделировании событий.

Весное примечание: я сбалансировал целевую переменную, используя алгоритм удара перед применением дерева классификации.

Это было полезно?

Решение

Если вы готовы использовать пакет CARET в R и использовать случайные леса, вы можете использовать метод в следующем сообщении в блоге для понижения с несбалансированными наборами данных: http://appliedpredictivemodeling.com/blog/2013/12/8/28rmc2lv96h8fw8700zm4nl50busep

По сути, вы просто добавляете одну строку в свою тренироваться вызов. Вот соответствующая часть:

> rfDownsampled <- train(Class ~ ., data = training,
+                        method = "rf",
+                        ntree = 1500,
+                        tuneLength = 5,
+                        metric = "ROC",
+                        trControl = ctrl,
+                        ## Tell randomForest to sample by strata. Here, 
+                        ## that means within each class
+                        strata = training$Class,
+                        ## Now specify that the number of samples selected
+                        ## within each class should be the same
+                        sampsize = rep(nmin, 2))

Я добился некоторого успеха с таким подходом в вашей ситуации.

Для некоторого контекста, вот глубокий пост об экспериментах с несбалансированными наборами данных: http://www.win-vector.com/blog/2015/02/does-balance-classes-improve-classifier-performance/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top