У нас уже было несколько вопросов о несбалансированных данных при использовании логистической регрессии , SVM , деревьев решений , пакетов и ряда других подобных вопросов, что делает эту тему очень популярной! К сожалению, каждый из вопросов, похоже, зависит от алгоритма, и я не нашел каких-либо общих рекомендаций по работе с несбалансированными данными.
Цитируя один из ответов Марка Клезена , касающийся несбалансированных данных
(...) сильно зависит от метода обучения. Большинство подходов общего назначения имеют один (или несколько) способов справиться с этим.
Но когда именно мы должны беспокоиться о несбалансированных данных? На какие алгоритмы это больше всего влияет и какие способны с этим справиться? Какие алгоритмы понадобятся нам для балансировки данных? Я знаю, что обсуждение каждого из алгоритмов было бы невозможно на сайте вопросов и ответов, как это, я скорее ищу общие рекомендации о том, когда это может быть проблемой.
Ответы:
Не прямой ответ, но стоит отметить, что в статистической литературе некоторые предубеждения против несбалансированных данных имеют исторические корни.
Многие классические модели аккуратно упрощаются в предположении сбалансированных данных, особенно для таких методов, как ANOVA, которые тесно связаны с экспериментальным дизайном - традиционная / оригинальная мотивация для разработки статистических методов.
Но статистическая / вероятностная арифметика становится довольно уродливой, довольно быстрой, с несбалансированными данными. До широкого распространения компьютеров расчеты вручную были настолько обширными, что оценка моделей по несбалансированным данным была практически невозможна.
Конечно, компьютеры в основном сделали это проблемой. Аналогичным образом, мы можем оценивать модели на массивных наборах данных, решать задачи многомерной оптимизации и извлекать образцы из аналитически неразрешимых совместных вероятностных распределений, которые все были функционально невозможны, как пятьдесят лет назад.
Это старая проблема, и ученые потратили много времени на работу над этой проблемой ... между тем, многие прикладные проблемы опередили / устранили это исследование, но старые привычки сильно умирают ...
Изменить, чтобы добавить:
Я понимаю, что не вышел и просто сказал это: нет проблемы низкого уровня с использованием несбалансированных данных. По моему опыту, совет «избегать несбалансированных данных» зависит либо от алгоритма, либо от унаследованной мудрости. Я согласен с AdamO, что в целом несбалансированные данные не представляют концептуальной проблемы для четко определенной модели.
источник
WLOG вы можете сосредоточиться на дисбалансе в одном факторе, а не на более тонкой концепции «разреженности данных» или небольшом количестве ячеек.
В статистическом анализе, не сфокусированном на обучении, мы часто обнаруживаем, что подобная или лучшая сила предоставляется при использовании показателей склонности, чтобы сопоставить меньшую группу и большую группу. Это отчасти потому, что сопоставление служит той же цели, что и противодействие корректировке с точки зрения «уравновешивания» детерминант членства в группах, таким образом блокируя их мешающие эффекты. Обоснование количества факторов, которые можно скорректировать в многомерном анализе, зависит от размера выборки. В некоторых эмпирических правилах указывается одна переменная на каждые 10–20 наблюдений. В несбалансированных данных вы наивно полагаете, что ваши данные достаточно велики, но с редким числом людей, которые встречаются реже: инфляционная дисперсия существенно уменьшает власть. Вы, на самом деле, перестраиваетесь.
Поэтому, по крайней мере, в регрессии (но я подозреваю, что при любых обстоятельствах), единственная проблема с несбалансированными данными заключается в том, что у вас фактически небольшой размер выборки . Если какой-либо метод подходит для числа людей в более редком классе, не должно быть никаких проблем, если их пропорциональное членство несбалансировано.
источник
Несбалансированные данные являются проблемой только в зависимости от вашего приложения. Например, если ваши данные указывают на то, что A происходит в 99,99% случаев, а B - в 0,01% случаев, и вы пытаетесь предсказать определенный результат, ваш алгоритм, вероятно, всегда скажет A. Это, конечно, правильно! Ваш метод вряд ли получит лучшую точность прогноза, чем 99,99%. Однако во многих приложениях нас интересует не только правильность прогноза, но и причина, почему иногда случается B. Вот где несбалансированные данные становятся проблемой. Потому что трудно убедить ваш метод, что он может предсказывать лучше, чем 99,99%. Метод правильный, но не для вашего вопроса. Таким образом, решение несбалансированных данных в основном преднамеренно смещает ваши данные, чтобы получить интересные результаты вместо точных результатов.
В целом есть три случая:
Вы просто заинтересованы в точном прогнозировании и считаете, что ваши данные являются репрезентативными. В этом случае вам не нужно ничего исправлять, грейтесь во славу ваших 99,99% точных прогнозов :).
Вы заинтересованы в прогнозировании, но ваши данные взяты из достоверной выборки, но каким-то образом вы потеряли ряд наблюдений. Если вы потеряли наблюдения совершенно случайным образом, вы все еще в порядке. Если вы потеряли их предвзято, но не знаете, насколько предвзяты, вам понадобятся новые данные. Однако, если эти наблюдения теряются только на основании одной характеристики. (например, вы отсортировали результаты по A и B, но никак иначе, но потеряли половину B) Ypu может загрузить ваши данные.
Вы не заинтересованы в точном глобальном прогнозе, но только в редком случае. В этом случае вы можете раздувать данные этого случая, загружая данные или, если у вас достаточно данных, выкидывая данные из других случаев. Обратите внимание, что это смещает ваши данные и результаты, поэтому шансы и такие результаты неверны!
В целом, это в основном зависит от цели. Некоторые цели страдают от несбалансированных данных, а другие нет. Все общие методы предсказания страдают от этого, потому что иначе они дали бы ужасные результаты в целом.
источник
Давайте предположим, что у нас есть два класса:
Давайте предположим, что мы заинтересованы в идентификации элементов класса B, которые могут быть людьми, затронутыми редким заболеванием или мошенником.
Только угадав А обучающимся бы высокий балл по их потери-функций и очень мало неправильно классифицированы элементы могут не двигаться, численно иглу (в стоге сена, в данном случае). В этом примере интуитивно понятна одна из «хитростей» для смягчения проблемы дисбаланса классов: настройка функции стоимости.
Я чувствую, что несбалансированные данные являются проблемой, когда модели показывают почти нулевую чувствительность и почти одну специфичность. Смотрите пример в этой статье в разделе «игнорирование проблемы» .
Проблемы часто имеют решение. Помимо вышеупомянутого трюка, есть и другие варианты . Тем не менее, они имеют цену: увеличение модели и вычислительной сложности.
Вопрос состоит в том, какие модели с большей вероятностью будут опираться на почти нулевую чувствительность и почти одну специфичность. Я чувствую, что это зависит от нескольких аспектов:
источник
Если вы подумаете об этом: в идеально отделимом сильно несбалансированном наборе данных почти любой алгоритм будет работать без ошибок.
Следовательно, это больше проблема шума в данных и менее привязана к конкретному алгоритму. И вы не знаете заранее, какой алгоритм лучше всего компенсирует один конкретный тип шума.
В конце концов, вам просто нужно попробовать разные методы и принять решение путем перекрестной проверки.
источник