Машинное обучение — как справиться с дисбалансом тренировочного набора в классификации

машинное обучение

Оригинальный адрес: Птичье небо,blog.CSDN.net/Как использовать Roja…

Как бороться с несбалансированным тренировочным набором в классификации

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

Jason Brownleeответ:

Оригинальное название:8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset
   Когда вы классифицируете несбалансированный набор данных класса, вы получаете точность 90% (точность). При дальнейшем анализе вы обнаружите, что 90% выборок в наборе данных принадлежат к одному и тому же классу, и классификатор относит все выборки к этому классу. В этом случае, очевидно, классификатор недействителен. И эта неэффективность связана с дисбалансом классов в обучающей выборке.
   Во-первых, вот несколько примеров несбалансированности категорий в полученных письмах:

  • В задаче бинарной классификации количество отсчетов класса 1 в обучающей выборке составляет 60:1 по отношению к количеству отсчетов класса 2. Используя логистическую регрессию для классификации, конечным результатом является то, что она игнорирует класс 2, то есть классифицирует все обучающие выборки как класс 1.
  • В наборе данных для задачи классификации есть три категории: A, B, C. В обучающей выборке на выборки класса А приходится 70 %, на выборки класса В — 25 %, на выборки класса С — 5 %. В конце концов мой классификатор переоснастил выборки класса A и недообучил выборки двух других классов.

В чем проблема дисбаланса классов

   Несбалансированность данных категорий является типичной проблемой в задачах классификации. Короче говоря, количество выборок в каждой категории в наборе данных сильно различается. Например, в задаче бинарной классификации имеется 100 отсчетов (100 строк данных, каждая строка данных является представлением отсчета), из которых 80 отсчетов относятся к классу 1, а остальные 20 отсчетов относятся к классу 2, class 1:class2= 80:20=4:1, что является дисбалансом классов. Конечно, дисбаланс классов возникает и в задачах с несколькими классификациями. Их решения одинаковы. Поэтому, чтобы облегчить обсуждение и понимание, мы начнем с задачи бинарной классификации.

Проблема дисбаланса классов - очень распространенная проблема в реальности.

  В большинстве задач классификации количество данных в каждой категории в принципе невозможно быть полностью одинаковым, но небольшая разница не будет иметь никакого влияния или проблемы.
   На самом деле существует много проблем с дисбалансом классов, это распространено, а также разумно и соответствует ожиданиям людей. Например, при выявлении мошеннических транзакций должно быть небольшое количество мошеннических транзакций, то есть большинство транзакций являются нормальными, и лишь очень небольшое количество транзакций являются мошенническими транзакциями. Это обычная проблема дисбаланса классов. В качестве другого примера, в наборе данных об оттоке клиентов подавляющее большинство клиентов будут продолжать пользоваться его услугами (объекты, не связанные с оттоком), и только очень небольшое количество клиентов не будет продолжать пользоваться его услугами (объекты оттока). В общем, если коэффициент дисбаланса классов превышает 4:1, то классификатор будет в значительной степени неспособен удовлетворить требования классификации из-за дисбаланса данных. Поэтому перед построением классификационной модели необходимо разобраться с проблемой классификационного дисбаланса.
  Впереди мы использовали показатель точности для оценки качества классификации.Видно, что когда категории не сбалансированы, показатель оценки точности не работает. Поскольку классификатор относит все выборки к большому классу, значение индикатора все равно будет высоким. То есть классификатор смещен в сторону данных категории большой категории.

Восемь решений

  • Можно ли расширить набор данных?
       Столкнувшись с проблемой дисбаланса классов, первое, о чем вы должны подумать, — это возможность добавления дополнительных данных (должны быть выборочные данные небольшого класса), большее количество данных часто превосходит лучшие алгоритмы. Поскольку машинное обучение использует существующие данные для оценки распределения всех данных, чем больше данных, тем чаще можно получить больше информации о распределении и более точные оценки распределения. Даже если добавляются выборочные данные малого класса, добавляются выборочные данные большого класса, эту проблему можно решить, отказавшись от части данных большого класса (то есть занижая выборку данных большого класса).
  • Попробуйте другие показатели оценки
    Из предыдущего анализа видно, что оценочный показатель точности не работает или даже вводит в заблуждение в задачах классификации с несбалансированными категориями (классификатор не работает, но по этому показателю классификатор имеет хороший оценочный показатель Score). Поэтому в задаче классификации несбалансированности классов необходимо использовать более убедительные оценочные показатели для оценки классификатора. Как выбрать эффективные индикаторы оценки для разных задачглянь сюда.
       В статье по гиперссылке выше описывается, как классифицировать данные с несбалансированными категориями рецидивов у пациентов с раком молочной железы. В этой статье рекомендуется несколько метрик оценки, которые более эффективны, чем традиционная точность:

    • Матрица путаницы: Используйте таблицу для расчета выборочной статистики класса, предсказанного классификатором, и его реального класса, а именно: TP, FN, FP и TN.
    • Точность
    • Отзывать
    • Оценка F1: средневзвешенное значение точности и полноты.

    особенно:

  • Повторная выборка набора данных    может использовать некоторые стратегии для уменьшения степени дисбаланса в данных. Стратегия выборки, и есть два основных метода выборки для уменьшения несбалансированности данных.

    • Выборка выборок данных малого класса для увеличения количества выборок данных малого класса, то есть передискретизация (перевыборка, количество выборок больше, чем количество выборок этого класса).
    • Выборка большого класса выборок данных для уменьшения количества выборок данных этого класса, то есть недовыборка (недостаточная выборка, количество выборок меньше количества выборок этого класса).

      Алгоритмы выборки, как правило, просты в реализации, работают быстро и хорошо работают. Подробнее см.здесь.
       Некоторые практические правила:

    • Рассмотрите возможность недостаточной выборки выборок в большой категории (более 10 000, 100 000 или даже больше), то есть удалите некоторые выборки;
    • Рассмотрите возможность передискретизации выборок в классе small (меньше 1 — еще меньше), то есть добавление копий некоторых выборок;
    • Рассмотрите возможность использования двух методов выборки, случайной выборки и неслучайной выборки;
    • Подумайте о том, чтобы попробовать различные коэффициенты выборки для каждой категории, соотношение должно быть 1:1, а иногда 1:1 не годится, потому что оно далеко от реальности;
    • Рассмотрите возможность использования как избыточной, так и недостаточной выборки.
  • Попытка создать искусственные выборки данных
      Простым методом создания искусственных выборочных данных является случайный выбор новой выборки из пространства значений каждого признака атрибута всех выборок в классе, то есть случайная выборка значений атрибутов. Вы можете использовать случайную выборку значений атрибутов на основе опыта для построения новых искусственных выборок или использовать аналогичный наивный метод Байеса, чтобы предположить, что каждый атрибут выбирается независимо друг от друга, так что можно получить больше данных, но нет гарантировать, что атрибуты будут иметь линейную связь (если она существует).
       Существует систематический метод построения искусственных выборок данных SMOTE (Synthetic Minority Over-sampling Technique). SMOTE — это алгоритм передискретизации, который строит новые выборки подкласса вместо создания копий существующих выборок в подклассе, то есть данные, построенные алгоритмом, представляют собой новую выборку, которой нет в исходном наборе данных. Этот метод выбирает две или более похожих выборки в небольшой категории на основе метрики расстояния, затем выбирает одну из выборок и случайным образом выбирает определенное количество соседних выборок, чтобы добавить шум к атрибуту выбранной выборки, обрабатывая один атрибут за единицу времени. время. Таким образом, создается больше зарождающихся данных. Подробнее см.оригинальная бумага.
       Вот несколько различных языковых реализаций алгоритма SMOTE:
    • Python: UnbalancedDatasetМодуль предоставляет несколько различных реализаций алгоритма SMOTE, а также несколько алгоритмов передискретизации.
    • R: DMwR package.
    • Weka: SMOTE supervised filter.
  • Попробуйте разные алгоритмы классификации
       Настоятельно не рекомендуется использовать ваш любимый и знакомый алгоритм классификации для каждой классификации. Его следует сравнивать с использованием разных алгоритмов, потому что разные алгоритмы используются для разных задач и данных. Подробнее см. в разделе «Почему вы должны использовать алгоритмы выборочной проверки в своих задачах машинного обучения».
      Деревья решений, как правило, хорошо работают с данными с несбалансированными классами. Он использует правила разделения на основе переменных классов для создания деревьев классификации, поэтому образцы разных классов могут быть принудительно разделены. Популярными в настоящее время алгоритмами дерева решений являются: C4.5, C5.0, CART и Random. Форест и др. Деревья решений, написанные на R, см.здесь. Посмотрите, как CART использует Scikit-learn на основе Python.здесь.
  • попробуйте наказать модель
    Вы можете использовать тот же алгоритм классификации, но использовать другую перспективу.Например, если ваша задача классификации состоит в том, чтобы идентифицировать эти небольшие классы, вы можете увеличить вес выборочных данных малого класса классификатора и уменьшить вес большого класса выборка (этот метод фактически заключается в создании нового распределения данных, то есть в создании нового набора данных, чтобы классификатор сосредоточился на небольших выборках. Конкретный метод заключается в том, что при обучении классификатора, если классификатор неправильно классифицирует образцы малого класса, к классификатору будут добавлены дополнительные затраты на ошибочную классификацию образцов малого класса.Эта дополнительная стоимость может сделать классификатор более «озабоченным» небольшими выборками образцы класса. Например, алгоритмы Penalized-SVM и Penalized-LDA.
      В Weka предусмотрена общая схема наказания моделей.CostSensitiveClassifier, который может инкапсулировать любой классификатор и использовать собственную матрицу штрафов для штрафа за неправильно классифицированные выборки.
       Если вы привязываетесь к определенному алгоритму и не можете решить проблему дисбаланса с помощью повторной выборки, вы получите плохие результаты классификации. Это позволяет использовать штрафные модели для устранения дисбалансов. Однако настройка матрицы штрафов — дело сложное, поэтому вам нужно попробовать разные матрицы штрафов в соответствии с вашей задачей и выбрать лучшую.
  • Попробуйте взглянуть на проблему под новым углом
    Мы можем решить проблему дисбаланса данных с точки зрения, отличной от классификации, Мы можем взять образцы этих небольших категорий в качестве выбросов, поэтому проблема преобразуется в обнаружение аномалий и обнаружение тенденций изменений (обнаружение изменений).
      Обнаружение выбросовТо есть выявить эти редкие события. Например, неисправности машины идентифицируются по вибрации компонентов машины, а вредоносные программы идентифицируются по последовательности системных вызовов. Эти события редки по сравнению с нормой.
      Обнаружение тренда измененийПодобно обнаружению выбросов, за исключением того, что оно идентифицируется путем обнаружения необычных тенденций. Например, обнаружение необычных изменений в поведении пользователей путем наблюдения за поведением пользователей или банковскими транзакциями.
       Сдвиг в представлении о небольших классах выборок как о выбросах может помочь рассмотреть новые способы разделения или классификации выборок. Два подхода думают с разных точек зрения, позволяя вам попробовать новые способы решения проблем.
  • попробуй вводить новшества
       Тщательно проанализируйте и раскопайте свою проблему, можете ли вы разделить свою проблему на несколько более мелких проблем, и эти небольшие проблемы легче решить. Вы можете получить это из этой статьиIn classification, how do you handle an unbalanced training set?Быть вдохновленным. Например:
    • Сожмите свои большие классы в маленькие классы;
    • Используйте классификатор One Class (используйте небольшие классы в качестве выбросов);
    • Используя метод ансамбля, обучите несколько классификаторов, а затем объедините эти классификаторы для классификации;
    • ….

   Эти идеи — лишь верхушка айсберга, можно придумать еще много интересных и креативных идей для решения проблем. Чтобы получить больше идей, присоединяйтесь к статье Reddit.Woohoo. Quora.com/in-class если я….

выбрать метод и использовать его

Вам не нужно быть мастером алгоритмов, который знает все алгоритмы, или статистиком, который строит точные и надежные модели для работы с несбалансированными данными, вам просто нужно выбрать один или два из вышеперечисленных алгоритмов или методов в соответствии с реальной ситуацией. ваша проблема.метод использования. Надеемся, что некоторые из вышеперечисленных методов решат вашу проблему. Например, использование других показателей оценки или алгоритмов повторной выборки является быстрым и эффективным.

Суммировать

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

Дальнейшее чтение…

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

Sergey Feldmanответ:

  • Предполагая, что количество выборок в суперклассе в L раз превышает количество выборок в очень маленьком классе, тогда в алгоритме стохастического градиентного спуска (SGD, стохастический градиентный спуск) каждый раз, когда встречается выборка в очень маленьком классе для обучение, обучение L раз.
  • Разделите выборки в большом классе на L кластеров, а затем обучите L классификаторов, каждый классификатор получается путем обучения одного кластера в большом классе и всех выборок в малом классе. Наконец, классификаторы L принимают меньшинство, чтобы подчиняться большинству, чтобы классифицировать данные неизвестной категории.Если это непрерывное значение (прогноз), то принимается среднее значение.
  • Предположим, что в подклассе есть N выборок. Сгруппируйте большой класс в N кластеров, затем используйте центр каждого кластера для формирования N образцов в большом классе, а также все образцы в маленьком классе для обучения.
  • Независимо от того, какой из предыдущих методов вы использовали, вы нанесли ущерб одному или нескольким классам. Чтобы не повредить, вы можете использовать весь обучающий набор для создания классификатора с различными методами классификации для получения нескольких классификаторов и использовать голосование для классификации данных неизвестных категорий, Если это непрерывное значение (прогноз), то использовать среднее значение.
  • существуетПоследние документы ICML, что указывает на то, что увеличение количества данных увеличивает ошибку обучающей выборки с известным распределением, то есть разрушает распределение исходной обучающей выборки, тем самым повышая производительность классификатора. Эта статья не имеет отношения к проблеме дисбаланса классов, поскольку в ней неявно используются математически дополненные данные для поддержания постоянного размера набора данных. Тем не менее, я думаю, что было бы полезно сломать исходный дистрибутив.
  • Больше подробностей, чем вам нужно: имхо, самый интересный из искажающих дистрибутивов — это пустой дистрибутив, в котором вы просто обнуляете случайное подмножество признаков. Почему это интересно? Потому что вы помогаете своему классификатору быть надежнее/выносливее предоставляя ему вариации ваших данных, которые имеют по существу отсутствующие функции.Поэтому он должен научиться правильно классифицировать даже в неблагоприятных условиях.Связанная идея заключается в том, что в нейронной сети части единиц скрытого слоя выбираются случайным образом для продолжения обучения (т.е. случайным образом удалить некоторые скрытые единицы слоя (обнулить)). Подробнее см.Web.Stanford.Quota/~Four Kings/CGI-…

Kripa Chettiarответ:

  • Чтобы добавить новые данные, вы можете использоватьSMOTE или SMOTEBoostГенерировать искусственные данные.
  • Сжать категории. Коэффициент сжатия является индивидуальным анализом и зависит от имеющихся у вас данных. Например, есть 30 семплов в классе A и 4000 сэмплов в классе B, тогда вы можете сжать класс B до 1000 (сэмплировать).
  • 1 и 2 можно комбинировать
  • Для задачи классификации, где очень маленький класс является выбросом, классификатор должен изучить интерфейс принятия решения большого класса, то есть классификатор является классификатором одного класса (классификатор одного класса).В Weka есть связанные библиотеки.
  • Получите больше данных.

Рев Нюбё отвечает:

  • Перевыборка небольших классов. А использование интегрированного режима даст лучшие результаты.

Dan Levinответ:

  • Отличный способ справиться с проблемами несбалансированных данных, и он теоретически доказан. Это метод «Сила слабой обучаемости», предложенный Робертом Э. Шапиром в «Машинном обучении» в 1990 году. Этот метод представляет собой повышающий алгоритм, который рекурсивно обучает трех слабых учеников, а затем объединяет этих трех слабых учеников, чтобы сформировать сильного ученика. Мы можем использовать первый шаг этого алгоритма для решения проблемы дисбаланса данных.
       Сначала обучите первого ученика L1, используя исходный набор данных.
       Затем используйте 50% образцов в L1, чтобы выучить правильно, и 50%, чтобы выучить неправильные, чтобы получить ученика L2, то есть выучите неправильный набор образцов из L1 и выучите правильный набор образцов, и сэмплируйте по одному.
       Затем используйте те образцы, которые несовместимы с L1 и L2, для обучения учащегося L3.
       Наконец, используйте метод голосования в качестве окончательного результата.
       Итак, как использовать этот алгоритм для решения проблемы дисбаланса классов?
    Гипотеза    представляет собой проблему бинарной классификации, и большинство выборок являются истинными классами. Пусть вывод L1 всегда будет истинным. Используйте 50 % правильно классифицированных выборок в L1 и 50 % неправильно классифицированных выборок, чтобы получить L2, то есть изучите неверный набор выборок и изучите правильный набор выборок из L1, и отбирайте по одной за раз. Следовательно, обучающие выборки для L2 сбалансированы. L обучается получать L3, используя те выборки, для которых классификации L1 и L2 несовместимы, то есть те выборки, которые классифицируются как ложные в L2. Наконец, при объединении этих трех классификаторов результат классификации определяется голосованием, поэтому только тогда, когда и L2, и L3 классифицируются как ложные, окончательный результат является ложным, в противном случае он является истинным.
       Много раз применяла на практике, эффект хороший.

Kaushik Kasiответ:

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

Ответ пользователя Quora:

  • Простой и быстрый подход: недостаточная выборка больших классов или избыточная выборка малых классов.
  • Более эффективный метод: используйте функцию стоимости, чтобы узнать вес каждого класса, вес большого класса мал, а вес малого класса велик. В начале вы можете установить обратное отношение весов к количеству выборок для каждого класса, а затем вы можете использовать передискретизацию для настройки.

Ответ Дайвида Виктора:

   В отношении дисбаланса категорий необходимо обратить внимание на следующие моменты:

  • Обычные индикаторы оценки классификации могут дать сбой.Например, если все образцы классифицировать по большим категориям, точность и прецизионность будут очень высокими. В этом случае AUC — лучшая оценочная метрика.
  • Вы можете использовать методы выбора прототипа, чтобы уменьшить уровни дисбаланса. Выберите те образцы, которые имеют значение. Односторонний выбор (OSS) — это метод предварительной обработки (используемый перед обучением модели), который может обрабатывать дисбалансы классов.
  • С другой точки зрения, количество выборок в небольших классах может быть увеличено, а также могут использоваться методы передискретизации и создания прототипов.
  • В принципе, при проверке K-кратности пропорция выборок класса должна оставаться одинаковой или похожей в каждом наборе данных.Если количество выборок малого класса в каждом наборе данных слишком мало, значение K должно быть уменьшено до знать количество образцов малого класса достаточно.
       Вообще говоря, если проблема дисбаланса не будет решена заранее, частота ошибок будет очень высокой для выборок малых категорий, то есть большинство или даже все выборки малых категорий будут неправильно классифицированы.

Muktabh Mayankответ:

Sandeep Subramanianответ:

Ответ пользователя Quora:

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

Sumit Somanответ:

  • Если вы используете классификатор SVM для классификации, вы можете использовать Twin SVM (Twin Support Vector Machines for Pattern Classification), который может справиться с проблемой дисбаланса классов.

Abhishek Ghoseответ:

Смотрите также:Ответ Абхишека Гхоша на вопрос «Каков наиболее эффективный алгоритм классификации несбалансированных наборов данных?» И какую предварительную обработку можно выполнить для оптимизации оценки?

оригинал:Woohoo. Quora.com/in-class если я…