Алгоритм усиления градиента на Python с помощью Scikit-Learn
Для того чтобы алгоритмы машинного обучения стали более точными, требуется нечто большее, чем просто делать прогнозы и подгонять модели. Методы проектирования признаков и ансамбля использовались большинством успешных моделей в бизнесе или соревнованиях для улучшения их производительности. По сравнению с проектированием признаков эти стратегии проще в использовании, поэтому они и приобрели популярность.
Что такое усиление градиента?
Gradient Boosting — это функциональный градиентный алгоритм, который многократно выбирает функцию, ведущую в направлении слабой гипотезы или отрицательного градиента, чтобы она могла минимизировать функцию потерь. Классификатор Gradient Boosting объединяет несколько слабых моделей обучения для создания мощной предсказывающей модели.
Подробнее: Что такое Scikit Learn?
Повышение градиента в классификации
Повышение градиента состоит из трех основных частей:
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Функция потерь
Цель функции потерь — рассчитать, насколько хорошо модель предсказывает, учитывая имеющиеся данные. В зависимости от конкретной проблемы это может измениться.
Слабый ученик
Слабый обучающийся классифицирует данные, но при этом допускает много ошибок. Обычно это деревья решений.
Аддитивная модель
Вот как деревья добавляются постепенно, итеративно и последовательно. Вы должны приближаться к своей финальной модели с каждой итерацией.
Шаги к повышению градиента
Для классификатора градиентного усиления требуются следующие шаги:
- Подобрать модель
- Адаптируйте гиперпараметры и параметры модели.
- Делать прогнозы
- Интерпретировать результаты
Интуитивное понимание:
Визуализация усиления градиента
1. Метод получит логарифм шансов сделать ранние прогнозы о данных. Обычно это отношение количества значений True к количеству значений False.
2. Если у вас есть набор данных из шести случаев заболевания раком, из которых четыре человека больны раком, а трое не болеют, то log(odds) равен log(4/3) 1,3, и человек, не больной раком, будет иметь значение 0. Человек, больной раком, будет иметь значение 1.
3. Чтобы делать прогнозы, вы должны сначала преобразовать log(odds) в вероятность с помощью логистической функции. Здесь это будет около 1,3, то же самое, что и значение log(odds) 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
- Обновить модель:
Фм(х)= Фм-1(х)+vj=1Jmjm1(xRjm)
Различные улучшенные классификаторы градиентного усиления
Системы повышения оценки могут легко переобучиться на обучающем наборе данных. Однако переобучение можно предотвратить, используя различные ограничения или методы регуляризации, которые повышают производительность алгоритма.
Обучение с санкциями
Определенные ограничения могут предотвратить переобучение в зависимости от топологии дерева решений. Дерево регрессии — это инструмент, который можно использовать в алгоритмах градиентного бустинга.
Ограничения дерева
Ограничивая количество наблюдений при каждом разделении, количество наблюдений, на которых проводится обучение, глубину дерева и количество листьев или узлов в дереве, вы можете контролировать градиент.
Случайная выборка/Стохастическое усиление
Стохастический градиентный бустинг — метод, который подразумевает случайный выбор подвыборок из обучающего набора данных — также может помочь избежать переобучения.
Сокращение/Взвешенные обновления
Влияние деревьев можно заблокировать или замедлить с помощью метода, известного как «усыхание», поскольку прогнозы по каждому дереву суммируются.
Реализация градиентного усиления на Python
импортировать панды как pd импортировать numpy как np Из sklearn.metrics импортировать classification_report из sklearn.datasets импортировать load_breast_cancer из sklearn.ensemble импорт GradientBoostingClassifier из sklearn.model_selection импорт train_test_split |
Импорт необходимых библиотек, которые вам нужны для продолжения, является первым шагом. Наборы данных, используемые в этом примере, включают набор данных cancer, train _test split, градиентный бустинг, отчет о классификации и numpy.
df = pd.DataFrame(load_breast_cancer()('data'), columns=load_breast_cancer()('имя_функций')) df('y') = load_breast_cancer()('target') df.голова(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) |
Функция разделения train-test разделяет набор данных на тестовую и обучающую части.
градиентный_усилитель = GradientBoostingClassifier(learning_rate=0.1) Для реализации градиентного усиления необходимы классификаторы градиентного усиления. градиентный_усилитель.fit(X_train,y_train) Теперь необходимо использовать обучающий набор данных для подгонки модели; если данные подобраны правильно, это приведет к хорошей точности. print(classification_report(y_val,gradient_booster.predict(X_val))) Используйте модуль Python с именем classification report для проверки правильности и качества отчета о точности (). |
Вы увидите, что эта конкретная модель обеспечивает точность 99%.
Сравнение и противопоставление AdaBoost и Gradient Boost
- AdaBoost — первый алгоритм повышения, созданный с использованием определенной функции потерь. Повышение градиента — это общая методика, помогающая в поиске приближений к ответам задач аддитивного моделирования.
- AdaBoost лучше всего работает со слабыми учениками и минимизирует функцию потерь, связанную с любой ошибкой классификации. Проблема дифференцируемой функции потерь решается с помощью градиентного бустинга.
- Gradient Boosting использует градиенты для выявления слабых сторон слабых учеников, в то время как AdaBoost использует для того же самые цели высоковесовые точки данных.
Преимущества и недостатки градиентного усиления
Преимущества:
- Часто имеет замечательную точность прогнозирования.
- Множество вариантов настройки гиперпараметров и возможность оптимизации различных функций потерь.
- Зачастую он хорошо работает с числовыми и категориальными значениями без предварительной обработки входных данных.
- Работает с отсутствующими данными; вменение не требуется.
Недостатки:
- Классификатор Gradient Boosting будет продолжать совершенствоваться, чтобы уменьшить все неточности. Это может привести к переобучению и чрезмерному акценту на выбросах.
- Вычисления дороги, поскольку часто требуют большого количества деревьев (>1000), что может потребовать больших затрат памяти и времени.
- Благодаря высокой степени гибкости многочисленные переменные взаимодействуют и существенно влияют на поведение методики.
- Менее интерпретируемо, хотя это можно легко исправить с помощью нескольких инструментов.
Выберите правильную программу
Ускорьте свою карьеру с курсами Simplilearn по науке о данных! Выберите правильную программу, соответствующую вашим потребностям, и станьте мастером данных. Получите востребованные навыки, учитесь у отраслевых экспертов и откройте для себя захватывающие возможности трудоустройства. Не упустите этот шанс стать востребованным специалистом по данным. Зарегистрируйтесь сегодня!
Название программы | Программа последипломного образования в области науки о данных | ||
Гео | Все Гео | В/РЯД | В |
Университет | Simplelearn | Калтех | ИИТ Канпур |
Продолжительность курса | 11 месяцев | 11 месяцев | 11 месяцев |
Требуется опыт кодирования | Базовый | Нет | Да |
Навыки, которые вы приобретете | Более 10 навыков, включая структуру данных, обработку данных, NumPy, Scikit-Learn, Tableau и многое другое | 8+ навыков, включая Контролируемое и неконтролируемое обучение Глубокое обучение Визуализация данных и многое другое | 8+ навыков, включая НЛП, визуализация данных, построение моделей и многое другое |
Дополнительные преимущества | Прикладное обучение через Capstone и более 25 проектов по науке о данных | До 14 кредитов CEU Членство в кружке Caltech CTME | Мастер-классы в прямом эфире от преподавателей ИИТ Канпура и сертификат от Академии E&ICT, ИИТ Канпур |
Расходы | $$ | $$$$ | $$$ |
Программа исследования | Программа исследования | Программа исследования |
Заключение
Можно использовать классификатор градиентного усиления, который является сильным алгоритмом, для задач классификации и регрессии. На чрезвычайно сложных наборах данных модели градиентного усиления могут работать замечательно хорошо, но они также склонны к переобучению, которого можно избежать с помощью нескольких методов.
Вы можете построить карьеру в области науки о данных, освоив такие темы, как R, Python, машинное обучение, Tableau, Hadoop и Spark, с помощью этой интенсивной магистерской программы Data Scientist. Эта программа предлагается в сотрудничестве с IBM и Университетом Пердью. Она включает в себя живые сессии от внешних экспертов, лабораторий и бизнес-проектов.
Наши учащиеся также спрашивают
1. Можно ли использовать градиентный бустинг для классификации?
Да, градиентное усиление можно использовать для классификации.
2. Что такое алгоритм градиентного усиления?
Метод машинного обучения, называемый градиентным бустингом, используется в задачах регрессии и классификации. Он предоставляет модель прогнозирования в виде ансамбля моделей слабого прогнозирования, подобных деревьям решений.
3. Какой метод используется в модели градиентного бустинга классификатора?
Алгоритм AdaBoosting используется классификаторами градиентного бустинга. Классификаторы и взвешенные входные данные затем пересчитываются один раз в сочетании с взвешенной минимизацией.
4. Является ли классификатор градиентного усиления контролируемым или неконтролируемым?
Это контролируемый метод машинного обучения.
5. Чем XGBoost отличается от градиентного усиления?
XGBoost — более регулируемая версия градиентного бустинга. По сравнению с градиентным бустингом XGBoost предлагает исключительную производительность. Он имеет быструю кривую обучения и может распараллеливать по кластерам.
6. В чем разница между градиентным усилением и случайным лесом?
Они отличаются друг от друга двумя ключевыми факторами. Градиентный бустинг обучается постепенно, по одному дереву за раз, причем каждое дерево обучается для исправления недостатков предыдущего. С другой стороны, мы строим каждое дерево отдельно в случайном лесу.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)