Алгоритм повышения градиента в Python с помощью Scikit-Learn

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

Что такое повышение градиента?

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

Подробнее: Что такое Scikit Learn?

Повышение градиента в классификации

Повышение градиента состоит из трех основных частей:

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Функция потерь

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

Слабый ученик

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

Аддитивная модель

Таким образом деревья добавляются постепенно, итеративно и последовательно. С каждой итерацией вы должны приближаться к окончательной модели.

Шаги к повышению градиента

Классификатор повышения градиента требует следующих шагов:

  • Подходит для модели
  • Адаптируйте гиперпараметры и параметры модели.
  • Делайте прогнозы
  • Интерпретация результатов

Интуитивное понимание:

Визуализация повышения градиента

1. Метод получит журнал шансов сделать ранние прогнозы относительно данных. Обычно это отношение количества значений True к значениям False.

2. Если у вас есть набор данных из шести случаев рака, из которых четыре человека больны раком и трое не страдают, то log(шансы) равен log(4/3) 1,3, и человек, свободный от рака, будет имеют значение 0. Человек, больной раком, будет иметь значение 1.

3. Чтобы делать прогнозы, вы должны сначала преобразовать журнал (шансы) в вероятность с помощью логистической функции. Здесь оно будет около 1,3, что соответствует значению журнала (шансов), равному 1,3.

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

e*log(шансы)/(1 + e*log(шансы))

5. Приведенная выше формула определит остатки для каждого случая в обучающем наборе.

6. После этого строится дерево решений для прогнозирования предполагаемых остатков.

7. При создании дерева решений можно использовать максимальное количество листьев. Это приводит к двум потенциальным результатам:

  • Несколько экземпляров находятся в одном листе.
  • Лист не единичный экземпляр.

Вы должны использовать формулу для изменения этих значений здесь:

ΣНевязка/Предыдущая проверка (1 – Предыдущая проверка))

8. Теперь вам необходимо выполнить две вещи:

  • Получите прогноз журнала для каждого экземпляра обучающего набора.
  • Превратите прогноз в вероятность.

9. Формула для составления прогнозов будет следующей:

base_log_odds + (ставка_обучения * прогнозируемая остаточная стоимость)

Математическое понимание

1. Инициализируйте модель постоянным значением:

Fo(x)= argmini=1nL(yi,

От m=1 до M:

  • Вычисление остатков rim=L(yi, F(x)=Fm-1(X) F(f(xi)

для i = 1,…, n

  • Обучите дерево регрессии с помощью функций x по сравнению с r и создайте причины терминального узла.

R для j = 1,…,Jm

  • Вычислите jm=argminXiRjmL(Yi,Fm-1(Xi)+) для j=1,……Jm
  • Обновите модель:

Fm(x)= Fm-1 (x)+vj=1Jmjm1(xRjm)

Различные улучшенные классификаторы повышения градиента

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

Наказуемое обучение

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

Ограничения дерева

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

Случайная выборка/стохастическое повышение

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

Уменьшение/взвешенные обновления

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

Реализация повышения градиента в Python

импортировать панд как pd

импортировать numpy как np

Из sklearn.metrics импорт классификации_отчета

из sklearn.datasets импортируйте load_breast_cancer

из sklearn.ensemble импорт GradientBoostingClassifier

из sklearn.model_selection импорт train_test_split

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

df = pd.DataFrame(load_breast_cancer()('данные'),

columns=load_breast_cancer()('feature_names'))

df('y') = load_breast_cancer()('цель')

df.head(5)

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

X,y = df.drop('y',axis=1),df.y

test_size = 0.30 # 70:30 обучения и тестового набора

seed = 7 # Начальное число случайных чисел для повторяемости кода

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=seed)

Функция разделения теста поезда разделяет набор данных на части тестирования и обучения.

gradient_booster = GradientBoostingClassifier (learning_rate=0,1)

Классификаторы повышения градиента необходимы для реализации повышения градиента.

gradient_booster.fit(X_train,y_train)

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

print(classification_report(y_val,gradient_booster.predict(X_val)))

Используйте модуль Python с именем «Отчет о классификации», чтобы проверить правильность и качество отчета о точности ().

Вы заметите, что эта конкретная модель дает точность 99%.

Сравнение и противопоставление AdaBoost и Gradient Boost

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

Преимущества и недостатки градиентного повышения

Преимущества:

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

Недостатки:

  • Классификатор Gradient Boosting будет постоянно улучшаться, чтобы уменьшить все неточности. Это может привести к переоснащению и чрезмерному акценту на выбросах.
  • Вычисления требуют больших затрат, поскольку часто требуется большое количество деревьев (>1000), что может занимать много памяти и времени.
  • Благодаря высокой степени гибкости множество переменных взаимодействуют и существенно влияют на поведение метода.
  • Менее интерпретативен, хотя это можно легко исправить с помощью нескольких инструментов.

Выберите правильную программу

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

Название программы

степень магистра

Последипломная программа в области науки о данных

Профессиональный сертификационный курс по науке о данных

ГеоВсе регионыВ/СТРОКАВ
УниверситетПростое обучениеКалтехИИТ Канпур
Продолжительность курса11 месяцев11 месяцев11 месяцев
Требуется опыт кодированияБазовыйНетДа
Навыки, которые вы изучитеБолее 10 навыков, включая структуру данных, манипулирование данными, NumPy, Scikit-Learn, Tableau и многое другое.8+ навыков, включая
Контролируемое и неконтролируемое обучение
Глубокое обучение
Визуализация данных и многое другое.
8+ навыков, включая
НЛП, визуализация данных, построение моделей и многое другое.
Дополнительные преимуществаПрикладное обучение через Capstone и более 25 проектов по науке о данныхДо 14 кредитов CEU Членство в кружке Caltech CTMEЖивые мастер-классы от преподавателей IIT Kanpur и сертификат Академии E&ICT, IIT Kanpur
Расходы$$$$$$$$$
Изучите программу Изучите программуИзучите программу

Заключение

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

Вы можете продолжить карьеру в области науки о данных, освоив такие темы, как R, Python, машинное обучение, Tableau, Hadoop и Spark, с помощью этой интенсивной магистерской программы для специалистов по данным. Эта программа предлагается в сотрудничестве с IBM и Университетом Пердью. Он включает в себя живые занятия со стороны внешних экспертов, лабораторий и бизнес-проектов.

Наши ученики также задают вопросы

1. Можно ли использовать повышение градиента для классификации?

Да, повышение градиента можно использовать для классификации.

2. Что такое алгоритм повышения градиента?

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

3. Какой метод используется в модели классификатора повышения градиента?

Алгоритм AdaBoosting используется классификаторами повышения градиента. Классификаторы и взвешенные входные данные затем пересчитываются после взвешенной минимизации.

4. Является ли классификатор повышения градиента контролируемым или неконтролируемым?

Это контролируемый метод машинного обучения.

5. Чем XGBoost отличается от повышения градиента?

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

6. В чем разница между повышением градиента и случайным лесом?

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

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *