Машинное обучение — интегрированное обучение

машинное обучение
Машинное обучение — интегрированное обучение

«Это 11-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г.".

Уведомление! ! Предупреждение о множестве изображений! !

1. Интегрированное обучение

1.1 Что такое ансамблевое обучение

什么是集成学习.png

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

1.2 Две основные задачи машинного обучения

机器学习的核心任务.png

1.3 Бустирование и бэггинг в ансамблевом обучении

boosting和bagging.png

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

2. Упаковка

2.1 Принцип интеграции бэггинга

Цель: классифицировать следующие круги и квадраты.

Bagging的集成原理.png

Процесс реализации:

  1. Примеры различных наборов данных

采样不同数据.png

  1. обучить классификатор

训练分类器.png

  1. Равное голосование, получить окончательный результат

平权投票.png

2.2 Процесс построения случайного леса

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

Случайный лес = бэггинг + дерево решений

随机森林的构造.png

Например, если вы обучаете 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.
    • 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 Преимущества интеграции с мешками

Бэгинг + дерево решений/линейная регрессия/логистическая регрессия/глубокое обучение… = метод ансамблевого обучения бэггинга

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

  1. Оба могут повысить точность обобщения примерно на 2% по сравнению с исходным алгоритмом.
  2. простой, удобный, универсальный

3. Повышение

3.1 Принцип усиления интеграции

3.1.1 Что такое буст

进化图.jpg

От слабого к сильному по мере накопления знаний

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

Репрезентативные алгоритмы: Adaboost, GBDT, XGBoost.

3.1.2 Процесс реализации

  1. Обучить первого ученика

训练数据.png

  1. Настройте распределение данных

调整数据分布.png

  1. обучать второго ученика

训练第二个学习器.png

  1. Снова настроить распределение данных

再次调整.png

  1. Обучайте учащегося по очереди и корректируйте распределение данных

第三轮调整.png

ключевой момент:

Как подтвердить вес голосования?

Как настроить распределение данных?

如何确认投票权重.png

如何调整数据分布.png

Краткое изложение процесса построения AdaBoost

AdaBoost构造小结.png

Разница между интеграцией бэггинга и интеграцией бустинга:

  • Отличие 1: аспекты данных

    • Бэггинг: обучение выборке данных;
    • Повышение: отрегулируйте важность данных на основе результатов предыдущего раунда обучения.
  • Отличие 2: голосование

    • Бэггинг: все учащиеся голосуют одинаково;
    • Повышение: взвешенное голосование за учащихся.
  • Отличие 3: порядок обучения

    • Обучение бэггингу происходит параллельно, и у каждого учащегося нет зависимостей;
    • Ускоренное обучение является последовательным, а обучение имеет последовательность.
  • Отличие четвертое: главная роль

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

Bagging集成.png

3.1.3 Введение в API

3.2 GBDT

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

GBDT = градиентный спуск + бустинг + дерево решений

3.2.1 Градиент

梯度.png

梯度2.png

梯度下降.png

3.2.2 Процесс выполнения GBDT

GBDT执行流程.png

Если 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: Рассчитайте функцию потерь и найдите первое предсказанное значение:

计算损失函数-得出预测值.png

Шаг 2: Решите точку разделения

求解划分点.png

Получаем: возраст 21 год - дисперсия точки деления = 0,01 + 0,0025 = 0,0125

Третий шаг: решить h1(x), изменив целевое значение

调整后目标值.png

Шаг 4: Решите h2(x)

求解h(2x).png

приходить к выводу:

得出结果.png

Число 5 Высота = 1,475 + 0,03 + 0,275 = 1,78

3.2.4 Основная идея реализации GBDT

  1. Используйте градиентный спуск для оптимизации функции стоимости;

  2. Используйте один слой дерева решений в качестве слабого ученика и отрицательный градиент в качестве целевого значения;

  3. Используйте стимулирующие идеи для интеграции.

3.3 XGBoost

XGBoost = расширение Тейлора второго порядка + повышение + дерево решений + регуляризация

  • Вопрос из интервью: Знаете ли вы XGBoost, пожалуйста, объясните его принцип подробно

Ответы: разложение Тейлора второго порядка, бустинг, деревья решений, регуляризация.

Boosting: XGBoost использует Boosting для итеративного обучения нескольких слабых учеников.

Расширение Тейлора второго порядка: В каждом раунде обучения XGBoost выполняет разложение Тейлора второго порядка для функции потерь и использует градиенты первого и второго порядка для оптимизации.

Древо решений: В каждом раунде обучения XGBoost использует алгоритм дерева решений в качестве слабого обучения для оптимизации.

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

3.4 Расширение Тейлора

泰勒展开式.png

Чем больше разложений Тейлора, тем точнее результаты вычислений.