#python #scikit-learn #classification #data-science #imbalanced-data
#python #scikit-learn #классификация #наука о данных #несбалансированные данные
Вопрос:
Я постараюсь сделать это как можно более конкретным, но это тоже своего рода общий вопрос. У меня сильно искаженный набор данных в порядке { 'Class 0': 0.987, 'Class 1':0.012 }
Я хотел бы иметь набор классификаторов, которые хорошо работают с такими наборами данных, а затем создать ученика ансамбля этих моделей. Я не думаю, что хочу передискретизировать или занижать выборку. Я определенно не хочу поражать, потому что они плохо масштабируются для многомерных данных / или приводят к очень большому количеству точек данных. Я хочу использовать чувствительный к затратам подход к созданию своих классификаторов и, следовательно, наткнулся на class_weight=balanced
параметр в scikit-learn
библиотеке. Однако, похоже, это мне не очень помогает, потому что мои оценки в формуле-1 по-прежнему очень ужасны (в диапазоне 0,02 и т. Д.) Я также пытался sklearn.utils.class_weight.compute_class_weight
вручную рассчитать веса, сохранить их в словаре и передать его в качестве параметра class_weight
параметру, однако я не вижу улучшения в оценке F1, и мои ложные срабатывания по-прежнему очень высоки (около 5 тыс.), а все остальное довольно низкое (менее 50). Я не понимаю, чего мне не хватает. Я что-то не так внедряю? Что еще я могу сделать для решения моей проблемы? Когда я меняю свою метрику оценки с f1_score(average='binary')
на f1_score(average='weighted')
оценку F1, оценка увеличивается с ~ 0.от 02 до ~ 98,66, что, я думаю, вероятно, неправильно. Любая помощь, включая ссылки на то, как я мог бы решить эту проблему, будет очень полезна.
Я пытаюсь реализовать XGBOOST, CatBoost, LightGBM, логистическую регрессию, SVC («линейный»), классификаторы случайных лесов
Ответ №1:
Я понял, что этот вопрос возник из-за чистой наивности. Я решил свою проблему, используя библиотеку imbalanced-learn
Python. Подобные алгоритмы imblearn.ensemble.EasyEnsembleClassifier
являются находкой, когда дело доходит до тяжелой несбалансированной классификации, где класс меньшинства важнее, чем класс большинства. Для тех, у кого возникли подобные проблемы, я предлагаю попытаться найти другой алгоритм, отличный от ваших обычных избранных, который поможет вам решить вашу проблему.