www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Повышение точности ваших моделей машинного обучения

Дата публикации May 30, 2017

Устали от низкой точности моделей машинного обучения? Повышение здесь, чтобы помочь.Boosting - это популярный алгоритм машинного обучения, который повышает точность вашей модели,что-то вроде того, когда гонщики используют закись азота для увеличения скорости своего автомобиля.

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

Бутстрапирование

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

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

  1. Создайте много (например, 100) случайных подвыборок нашего набора данных с заменой (то есть мы можем выбрать одно и то же значение несколько раз).
  2. Изучите (обучите) дерево решений по каждому образцу.
  3. Учитывая новый набор данных, рассчитать прогноз для каждой подвыборки.
  4. Вычислите среднее значение всех наших собранных прогнозов (также называемых оценками начальной загрузки) и используйте его в качестве оценочного прогноза для данных.

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

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

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

Оценка ошибки

Простой способ оценки погрешности теста в пакетной модели без необходимости перекрестной проверкиОценка ошибок вне пакета, Наблюдения, которые не использовались для подгонки к данному дереву в мешках, называются наблюдениями вне мешка (OOB). Мы можем просто предсказать ответ дляяЭто наблюдение с использованием каждого из деревьев, в котором это наблюдение было OOB. Мы усредняем эти предсказанные ответы или принимаем большинство голосов, в зависимости от того, является ли ответ количественным или качественным.Может быть вычислен общий OOB MSE (среднеквадратическая ошибка) или коэффициент ошибки классификации.Это приемлемый уровень ошибок при тестировании, потому что прогнозы основаны только на деревьях, которые не были подобраны с использованием этого наблюдения.

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

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

Мы можем улучшить точность предсказания деревьев в мешках, используя случайные леса

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

  • Для классификации хорошим значением по умолчанию является: m = sqrt (p)
  • Для регрессии хорошим значением по умолчанию является: m = p / 3

Таким образом, в среднем, (п-м) /пиз расколов не будет даже считать сильным предиктором. Это известно какдекорреляциидеревья, так как мы решаем проблему каждого дерева, используя один и тот же сильный предиктор.

Еслимзнак равноптогда случайные леса равны сумке.

Важность функции

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

стимулирование

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

Основная идея повышения - преобразование многих слабых учеников в единого сильного ученика.Что мы подразумеваем под слабыми учениками?

Слабый ученикявляется учеником, который всегда будет делать лучше, чем шанс, когда он пытается маркировать данные, независимо от того, как распределены данные обучения. «Лучше, чем шанс» означает, что у нас всегда будет уровень ошибок менее 1/2.Это означает, что алгоритм ученика всегда собирается чему-то научиться и не всегда будет абсолютно точным, то есть он слабый и плохой, когда речь идет об изучении взаимосвязей между входными данными и целью.Это также означает, что правило, сформированное с использованием одного предиктора / классификатора, не является мощным по отдельности.

Мы начинаем находить слабых учеников в наборе данных, делая некоторые распределения и формируя из них небольшие деревья решений. Размер дерева настраивается с использованием количества расщеплений, которые оно имеет. Часто хорошо работает 1, где каждое дерево состоит из одного разбиения. Такие деревья известны какРешение Пни.

Еще одним повышением параметров является количество итераций или количество деревьев в этом случае. Кроме того, он присваивает входные значения на основе того, были ли они правильно предсказаны / классифицированы или нет. Давайте посмотрим на алгоритм.

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

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

Приведенный выше алгоритм лучше объясняется с помощью диаграммы. Предположим, у нас есть 10 входных наблюдений, которые мы хотим классифицировать как «+» или «-».

Источник изображения: Analytics Vidhya
  • Алгоритм повышения начинается с блока 1, как показано выше. Он присваивает равные веса (обозначенные размером знаков) всем входным данным и прогнозирует «+» для входных данных в синей области и «-» для входных данных в красноватой области, используя пень решения D1.
  • В следующей итерации, вставке 2, вы увидите, что веса неправильно классифицированных знаков плюс больше, чем другие входные данные. Таким образом, точка принятия решения D2 выбрана так, что эти наблюдения теперь классифицируются правильно.
  • В последней итерации, вставке 3, в ней есть 3 неправильно классифицированных негатива из предыдущего цикла. Таким образом, пень решения D3 выбран, чтобы исправить это.
  • Наконец, сильный ученик или вставка 3 имеют строгое правило, объединяющее отдельные слабые решения. Вы можете увидеть, как мы увеличили классификацию нашей модели.

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

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

Другой популярной версией повышения является алгоритм повышения градиента, Основная концепция остается той же,кроме того, что мы не играем с весами, ноподгонять модель по остаткам(измерение разницы в прогнозировании и исходном результате), а не исходных результатах.Adaboost реализован с использованием итеративно уточненных весов выборки, в то время как в Gradient Boosting используется модель внутренней регрессии, итеративно обученная по остаткам.Это означает, что новые слабые ученики формируются с учетом входных данных, которые имеют высокие остатки.

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

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

  1. Деревья решений нелинейны. Увеличение с помощью линейных моделей просто не работает хорошо.
  2. Слабый ученик должен быть постоянно лучше, чем случайные догадки. Обычно вам не нужно настраивать параметры для дерева решений, чтобы получить такое поведение.Например, для обучения SVM действительно необходим поиск параметров. Поскольку данные повторно взвешиваются на каждой итерации, вам, вероятно, потребуется выполнить поиск другого параметра на каждой итерации. Таким образом, вы увеличиваете объем работы, которую вы должны сделать с большим отрывом.
  3. Деревья решений достаточно быстро обучаются.Поскольку мы собираемся построить 100 или 1000 из них, это хорошая собственность. Их также можно быстро классифицировать, что опять-таки важно, когда вам нужно запустить 100 или 1000, прежде чем вы сможете вывести свое решение.
  4. Изменяя глубинуу вас есть простой и легкий контроль над компромиссом / отклонением,зная, что повышение может уменьшить смещение, но также значительно уменьшает дисперсию.

Это чрезвычайно упрощенное (возможно, наивное) объяснение повышения, но оно поможет вам понять самые основы. Популярная библиотека для реализации этого алгоритмаScikit-Learn, Он имеет прекрасный API, который может запустить вашу модель свсего несколько строк кода в Python,


Если вам понравилась эта статья, обязательно нажмите ❤ ниже, чтобы порекомендовать ее, и если у вас есть какие-либо вопросы,Оставить комментарийи я сделаю все возможное, чтобы ответить.

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

Вы также можете подписаться на меняTwitter в@ Prashant_1722,напишите мне напрямуюилинайди меня на linkedin, Я хотел бы услышать от вас.

Вот и все, приятного дня :)

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map