«Это 11-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г.".
Уведомление! ! Предупреждение о множестве изображений! !
1. Интегрированное обучение
1.1 Что такое ансамблевое обучение
Ансамблевое обучение решает одну задачу прогнозирования путем построения нескольких моделей. как это работаетСоздание нескольких классификаторов/моделей, каждый учится и делает прогнозы независимо.Эти прогнозы, наконец, объединяются в комбинированные прогнозы, что превосходит любые прогнозы одного класса..
1.2 Две основные задачи машинного обучения
1.3 Бустирование и бэггинг в ансамблевом обучении
Пока производительность одного классификатора не так уж плоха, результаты обучения ансамбля всегда лучше, чем у одного классификатора.
2. Упаковка
2.1 Принцип интеграции бэггинга
Цель: классифицировать следующие круги и квадраты.
Процесс реализации:
-
Примеры различных наборов данных
-
обучить классификатор
-
Равное голосование, получить окончательный результат
2.2 Процесс построения случайного леса
В машинном обучении,Random Forest — это классификатор с несколькими деревьями решений., а выходная категория определяется режимом выходной категории отдельного дерева
Случайный лес = бэггинг + дерево решений
Например, если вы обучаете 5 деревьев, 4 из которых истинны, а 1 ложно, то окончательный голос будет истинным.
Ключевые шаги в процессе построения случайных лесов(Используйте N для представления количества обучающих случаев (выборок) и M для представления количества функций):
1) Случайным образом выбрать одну выборку за раз, с замещающей выборкой, и повторить N раз (могут быть повторяющиеся выборки)
2) Случайным образом выбрать m признаков, m
-
считать
-
1. Зачем выбирать обучающую выборку случайным образом?
Если случайная выборка не выполняется, обучающая выборка каждого дерева одинакова, то окончательные результаты классификации обучающего дерева точно такие же.
-
2. Зачем нужен замещающий отбор?
Если нет выборки с заменой, то обучающие выборки каждого дерева разные, и пересечения нет, так что каждое дерево "необъективно" и абсолютно "однобоко" (конечно можно сказать, что Нет), то есть каждое дерево обучается очень по-разному, и окончательная классификация случайного леса зависит от голосования нескольких деревьев (слабых классификаторов).
-
2.3 API случайного леса
- sklearn.ensemble.RandomForestClassifier (n_estimators = 10, критерий = 'gini', max_depth = None, bootstrap = True, random_state = None, min_samples_split = 2)
- n_estimators: целое, необязательный (по умолчанию = 10) количество деревьев в лесу 120, 200, 300, 500, 800, 1200
- Критерий: строка, необязательная (по умолчанию = "gini"). Метод измерения функций сегментации.
- max_depth : целое или None, опционально (по умолчанию = None) максимальная глубина дерева 5,8,15,25,30
- max_features="auto", максимальное количество функций в дереве решений
- If "auto", then
max_features=sqrt(n_features)
. - If "sqrt", then
max_features=sqrt(n_features)
(same as "auto"). - If "log2", then
max_features=log2(n_features)
. - If None, then
max_features=n_features
.
- If "auto", then
- bootstrap: логическое значение, необязательный (по умолчанию = True), использовать ли замещающую выборку при построении дерева.
- min_samples_split: минимальное количество сэмплов для деления узла
- min_samples_leaf: минимальное количество выборок для конечных узлов.
- Гиперпараметры: n_estimator, max_depth, min_samples_split, min_samples_leaf
2.4 Случайный случай предсказания леса
-
экземпляр случайного леса
# 随机森林去进行预测 rf = RandomForestClassifier()
-
Определить список выбора гиперпараметров
param = {"n_estimators": [120,200,300,500,800,1200], "max_depth": [5, 8, 15, 25, 30]}
-
Поиск по сетке с помощью GridSearchCV
# 超参数调优 gc = GridSearchCV(rf, param_grid=param, cv=2) gc.fit(x_train, y_train) print("随机森林预测的准确率为:", gc.score(x_test, y_test))
Уведомление:
- Процесс построения случайного леса
- Глубину дерева, количество деревьев и т. д. нужно настраивать по гиперпараметрам
2.5 Преимущества интеграции с мешками
Бэгинг + дерево решений/линейная регрессия/логистическая регрессия/глубокое обучение… = метод ансамблевого обучения бэггинга
Интегрированный метод обучения, состоящий из вышеперечисленных методов:
- Оба могут повысить точность обобщения примерно на 2% по сравнению с исходным алгоритмом.
- простой, удобный, универсальный
3. Повышение
3.1 Принцип усиления интеграции
3.1.1 Что такое буст
От слабого к сильному по мере накопления знаний
Короче говоря: каждый раз, когда добавляется слабый ученик, общая способность улучшается.
Репрезентативные алгоритмы: Adaboost, GBDT, XGBoost.
3.1.2 Процесс реализации
-
Обучить первого ученика
-
Настройте распределение данных
-
обучать второго ученика
-
Снова настроить распределение данных
-
Обучайте учащегося по очереди и корректируйте распределение данных
ключевой момент:
Как подтвердить вес голосования?
Как настроить распределение данных?
Краткое изложение процесса построения AdaBoost
Разница между интеграцией бэггинга и интеграцией бустинга:
-
Отличие 1: аспекты данных
- Бэггинг: обучение выборке данных;
- Повышение: отрегулируйте важность данных на основе результатов предыдущего раунда обучения.
-
Отличие 2: голосование
- Бэггинг: все учащиеся голосуют одинаково;
- Повышение: взвешенное голосование за учащихся.
-
Отличие 3: порядок обучения
- Обучение бэггингу происходит параллельно, и у каждого учащегося нет зависимостей;
- Ускоренное обучение является последовательным, а обучение имеет последовательность.
-
Отличие четвертое: главная роль
- Бэггинг в основном используется для улучшения производительности обобщения (для решения проблемы переобучения можно также сказать, что он уменьшает дисперсию).
- Повышение в основном используется для повышения точности обучения (для решения проблемы недостаточной подгонки можно также сказать, что оно уменьшает систематическую ошибку)
3.1.3 Введение в API
- from sklearn.ensemble import AdaBoostClassifier
3.2 GBDT
Дерево принятия решений по повышению градиента (дерево решений по повышению градиента GBDT)алгоритм итеративного дерева решений,** Алгоритм состоит из нескольких деревьев решений, и выводы всех деревьев суммируются для получения окончательного ответа. ** Когда он был предложен, он считался алгоритмом с сильной способностью к обобщению. В последние годы он привлек всеобщее внимание из-за модели машинного обучения, используемой для ранжирования в поиске.
GBDT = градиентный спуск + бустинг + дерево решений
3.2.1 Градиент
3.2.2 Процесс выполнения GBDT
Если hi(x) = модель дерева решений в приведенной выше формуле, приведенная выше формула принимает вид:
GBDT = градиентный спуск + бустинг + дерево решений
3.2.3 Случаи
Предсказать высоту числа 5:
Нумерация | возраст) | Вес (кг) | Высота (м) |
---|---|---|---|
1 | 5 | 20 | 1.1 |
2 | 7 | 30 | 1.3 |
3 | 21 | 70 | 1.7 |
4 | 30 | 60 | 1.8 |
5 | 25 | 65 | ? |
Шаг 1: Рассчитайте функцию потерь и найдите первое предсказанное значение:
Шаг 2: Решите точку разделения
Получаем: возраст 21 год - дисперсия точки деления = 0,01 + 0,0025 = 0,0125
Третий шаг: решить h1(x), изменив целевое значение
Шаг 4: Решите h2(x)
приходить к выводу:
Число 5 Высота = 1,475 + 0,03 + 0,275 = 1,78
3.2.4 Основная идея реализации GBDT
-
Используйте градиентный спуск для оптимизации функции стоимости;
-
Используйте один слой дерева решений в качестве слабого ученика и отрицательный градиент в качестве целевого значения;
-
Используйте стимулирующие идеи для интеграции.
3.3 XGBoost
XGBoost = расширение Тейлора второго порядка + повышение + дерево решений + регуляризация
- Вопрос из интервью: Знаете ли вы XGBoost, пожалуйста, объясните его принцип подробно
Ответы: разложение Тейлора второго порядка, бустинг, деревья решений, регуляризация.
Boosting: XGBoost использует Boosting для итеративного обучения нескольких слабых учеников.
Расширение Тейлора второго порядка: В каждом раунде обучения XGBoost выполняет разложение Тейлора второго порядка для функции потерь и использует градиенты первого и второго порядка для оптимизации.
Древо решений: В каждом раунде обучения XGBoost использует алгоритм дерева решений в качестве слабого обучения для оптимизации.
Регуляризация: В процессе оптимизации, чтобы предотвратить переоснащение, XGBoost добавляет штрафной член к функции потерь, чтобы ограничить количество конечных узлов дерева решений и значение конечных узлов дерева решений.
3.4 Расширение Тейлора
Чем больше разложений Тейлора, тем точнее результаты вычислений.