Верно ли, что в машинном обучении группы работают лучше, чем отдельные лица?

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

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

Классификаторы голосования

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

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

Используя созданный набор данных, мы собираемся разделить его на наборы данных для обучения и тестирования, затем мы реализовали классификаторы и ансамбль жесткого голосования, подогнали его и протестировали, как показано ниже:

Для создания мягкого классификатора голосования необходимо установить голосование = ”True” и
заставить весь классификатор оценивать вероятности класса, как это было сделано в классификаторе SVM:

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

Упаковка и вставка

Другой способ сгруппировать разнообразный набор классификаторов в один - использовать один и тот же алгоритм обучения для каждого предиктора, однако обучая их на случайных выборках обучающего набора. При таком подходе выборка может выполняться с заменой (упаковка или агрегирование начальной загрузки) и без замены (Вставка).

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

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

Sci-kit Learn предлагает простой способ реализации как Bagging (bootstrap = «True»), так и вставки (bootstrap = «False»), что упрощает установку классификатора (SVM, дерево решений, логистическая регрессия и т. Д.), Как многие из них хотят тренироваться (n_estimators), количество данных поезда, используемых для обучения каждого классификатора (max_samples), и то, хочет ли кто-то получить оценку вне сумки (oob_score).

Обратите внимание, что оценка вне сумки выше, чем оценка, полученная с помощью оценки упаковки, что показывает, что модель хорошо ведет себя с невидимыми данными. Кроме того, у Bagging была немного лучшая точность, чем у Pasting, что ожидается, потому что бутстрапирование делает подмножества, на которых обучаются алгоритмы, немного более разнообразными, что приводит к более высоким смещениям, но также и к менее коррелированным предикторам, что снижает дисперсию ансамбля. В целом, Bagging предлагает лучшие модели, чем Pasting, что показывает, почему его часто предпочитают. Более того, на картинке сравниваются границы одного дерева решений с объединениями и вставкой, сделанными из 500 деревьев решений. Можно видеть, что обе модели имеют более гладкие границы, чем дерево решений, что означает лучшие характеристики обобщения.

Случайный лес

Как было сказано ранее, алгоритм случайного леса представляет собой ансамбль, состоящий из деревьев решений. Обычно он обучается с помощью метода Bagging с max_samples, установленным в 1.0, что означает, что деревья будут обучаться с выборкой того же размера, что и обучающий набор. Sci-kit learn предоставляет функцию, которая устанавливает случайный классификатор Forrest (или регрессор, в зависимости от цели) напрямую, вместо того, чтобы строить его внутри метода Bagging.

Пример: сравнение суммирования, вставки и случайного форреста с использованием набора данных о доходах переписи 1994 года.

В качестве примера, чтобы показать, как представленные методы работают с реальными данными, мы собираемся использовать набор данных о доходах за 1994 год, также известный как набор данных для взрослых. Его можно скачать на сайте Калифорнийского университета в Ирвине. Этот набор данных дает некоторые характеристики людей (такие как пол, уровень образования, рабочий класс, семейное положение) и обычно используется при создании моделей, которые классифицируют людей на высокий доход (зарабатывающий 50 тысяч долларов в год или более) и низкий доход (зарабатывающий меньше). чем 50к $ / год).

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

  • Возраст (непрерывный): возраст человека.
  • Рабочий класс (категориальный): Категория рабочего класса. (Частный, Self-emp-not-inc, Self-emp-inc, Федеральное правительство, Местное правительство, Государственное правительство, Без оплаты, Никогда не работал).
  • Образование (категориальное): числовое представление образовательной квалификации в диапазоне от 1 до 16; (Бакалавры, Some-College, 11-е, HS-Grad, Prof-school, Assoc-acdm, Assoc -ocal, 9, 7-8, 12, магистры, 1-4, 10, докторская степень, 5-6, дошкольные учреждения);
  • Семейное положение (категориальное): Семейное положение лица (женат-гражданский-супруг, разведен, не был в браке, разлучен, вдовец, женат-супруг-отсутствует, женат-AF-супруг);
  • Род занятий (категориальный): Тип работы человека (ech-support, Craft-repair, Other-service, Sales, Exec-managerial, Prof-speciality, Handlers-cleaners, Machine-op-inspct, Adm-clerical, Сельское хозяйство-рыболовство, Транспорт-переезд, Прив-дом-Сервис, Охрана-Сервис, Вооруженные Силы);
  • Отношения (категориальные): Семейное положение человека (жена, собственный ребенок, муж, не в семье, другой родственник, не женат);
  • Раса (категориальная): Представляет расу человека (Белый, Азиатско-Тихоокеанский островитянин, Амер-Индийский-Эскимос, Другой, Черный);
  • Пол (категориальный): Пол человека;
  • Fnlwgt: представляет окончательный вес, который представляет собой количество единиц в целевой популяции, которое представляет отвечающая единица;
  • Прирост капитала (непрерывный): общий прирост капитала человека;
  • Убыток капитала (непрерывный): Убыток капитала;
  • Часы в неделю (непрерывно): Общее количество рабочих часов в неделю;
  • Страна (категориально): страна, в которой проживает человек;
  • Ярлык дохода (категориальный): ярлык, разделяющий людей на тех, кто зарабатывает менее 50 000 долларов в год (неверно), и тех, кто зарабатывает 50 000 долларов в год или более (верно) .

Данные для обучения и тестирования были выбраны с использованием одной и той же функции Train Test Split с обучением 80% и тестированием 20%. Чтобы снабдить алгоритмы данными, мы должны выполнить некоторые шаги предварительной обработки. Во-первых, преобразуйте категориальные данные в числовые категории (с особым вниманием к столбцу Country, который был преобразован в USA и NON_USA, потому что в исходном наборе данных присутствуют люди из слишком многих разных стран) и масштабируйте непрерывные данные. Это было сделано с использованием конвейера для каждой задачи, а затем создания нового конвейера, который объединяет их результаты, что приводит к единому набору числовых характеристик:

Чтобы сравнить производительность Bagging, Pasting, Random Forest и Decision Tree, мы использовали функцию GridSearchCV из sci-kit learn, создав надежное пространство поиска, объединяющее эти три алгоритма с разными гиперпараметрами:

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

Из таблиц можно сделать вывод, что модели Bagging и Pasting переоснащены, имеют небольшое отклонение и большую разницу в показателях тренировки и точности. Однако, даже несмотря на то, что они переобучились, у них был лучший результат, чем у метода дерева решений. Случайный лес показал лучшие результаты между ними, имея схожие результаты для обучения и тестирования.

Методы определения важности функций

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

Просматривая список, можно сделать вывод, что функции fnlwgt, age, capital_gain, Relations и education_num являются пятью наиболее важными в модели, в то время как native_country, race, sex, education и capital_loss были наименее важными.

Чтобы сравнить этот метод важности признаков, мы реализовали на классификаторе функцию Eli5 show_weights (). Eli5 - это пакет Python, который работает с классификаторами с целью объяснения своих прогнозов.

Чтобы установить пакет Eli5:

!pip install eli5

Используя его в той же модели случайного леса:

Методы показывают аналогичные значения для важности функции, однако метод Eli5 дает больше информации, отображая значения в ранге важности, а также дает отклонение важности, а не только среднее значение, как в случае метода feature_importance_.

Ссылки







Https://archive.ics.uci.edu/ml/index.php

Https://yourstory.com/journal/the-wisdom-of-the-crowds-can-it-beat-or-match-expe-zl424v9h4k