Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
40_алгоритмов_Python.pdf
Скачиваний:
10
Добавлен:
07.04.2024
Размер:
13.02 Mб
Скачать

Алгоритмы классификации

207

Ансамблевые методы

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

Реализация градиентного бустинга с помощью алгоритма XGBoost

XGBoost создан в 2014 году и основан на принципах градиентного бустинга (gradient boosting). Он стал одним из самых популярных алгоритмов для ан­ самблей классификации. XGBoost генерирует множество взаимосвязанных деревьев и использует градиентный спуск, чтобы минимизировать остаточную ошибку. Это делает его идеально подходящим для распределенных инфраструк­ тур, таких как Apache Spark, или для облачных систем, например Google Cloud или Amazon Web Services (AWS).

Реализуем градиентный бустинг с помощью алгоритма XGBoost:

1.Создадим экземпляр классификатора XGBClassfier и обучим модель, ис­ пользуя обучающую часть данных (рис. 7.9).

Рис. 7.9

2. Сгенерируем предсказания на основе обученной модели:

y_pred = classifier.predict(X_test)

cm = metrics.confusion_matrix(y_test, y_pred) cm

Результат будет таким (рис. 7.10).

208

Глава 7. Традиционные алгоритмы обучения с учителем

 

 

 

 

 

 

Рис. 7.10

3. Теперь количественно оценим производительность модели:

accuracy= metrics.accuracy_score(y_test,y_pred) recall = metrics.recall_score(y_test,y_pred) precision = metrics.precision_score(y_test,y_pred) print(accuracy,recall,precision)

Это дает следующий результат (рис. 7.11).

Рис. 7.11

Далее рассмотрим алгоритм случайного леса.

Алгоритм случайного леса

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

Обучение модели

В процессе обучения алгоритм случайного леса берет N выборок из обучающих данных и создает m подмножеств из общих данных. Подмножества создаются путем случайного выбора некоторых строк и столбцов входных данных. Алго­ ритм строит m независимых деревьев решений. Эти деревья классификации обозначены от C1 до Cm.

Использование случайного леса для предсказания

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

Обратите внимание, что на предыдущей диаграмме обучено m деревьев, которые обозначены от C1 до Cm. Иными словами‚ Trees = {C1, ..., Cm}.

Каждое дерево генерирует предсказание, которое представлено набором:

Алгоритмы классификации

209

Рис. 7.12

Индивидуальные предсказания = P = {P1, ..., Pm}.

Окончательное предсказание представлено Pf. Оно определяется большинством индивидуальных предсказаний. Для поиска решения большинства может ис­ пользоваться функция mode (она возвращает число, которое повторяется чаще всего, — моду). Индивидуальное и окончательное предсказания связаны следу­ ющим образом:

Pf = mode (P).

Отличие алгоритма случайного леса от бустинга

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

Использование алгоритма случайного леса в задаче классификации

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

210

Глава 7. Традиционные алгоритмы обучения с учителем

Здесь мы рассмотрим два ключевых гиперпараметра:

zz n_estimators zzmax_depth

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

Другими словами, дерево решений может продолжать разделяться до тех пор, пока у него не появится узел, представляющий все примеры из обучающего на­ бора. Задав значение max_depth, мы ограничиваем количество уровней разделения. Это контролирует сложность модели и определяет, насколько точно она соот­ ветствует обучающим данным. Гиперпараметр n_estimatorsуправляет шириной модели случайного леса, а max_depth — глубиной модели (рис. 7.13).

Рис. 7.13

Как только модель случайного леса будет обучена, используем ее для предска­ зания:

y_pred = classifier.predict(X_test)

cm = metrics.confusion_matrix(y_test, y_pred) cm

Получаем результат (рис. 7.14).

Рис. 7.14

Теперь оценим, насколько хороша наша модель:

accuracy= metrics.accuracy_score(y_test,y_pred) recall = metrics.recall_score(y_test,y_pred) precision = metrics.precision_score(y_test,y_pred) print(accuracy,recall,precision)