вступление

С возвращением, это третья часть серии Дополнительное машинное обучение для потоковой передачи данных с рекой. В первой части серии мы обсудили необходимость постепенного обучения, некоторые проблемы и терминологию, а также исследовали дрейф модели. Мы также познакомились с пакетом River Python, который ориентирован на предоставление удобной для пользователя библиотеки машинного обучения для работы с потоковыми данными и инкрементным/онлайн-обучением. Во второй части серии мы обсудили, как имитировать потоковые данные (для экспериментов и исследований), а затем сосредоточились на нескольких алгоритмах на основе дерева для выполнения добавочного обучения.

В этой части 3 серии мы сосредоточимся на методах ансамблевого обучения с потоковыми данными. Ансамблевое обучение смешивает множество моделей, чтобы повысить точность прогнозирования на невидимых данных. Наиболее популярными методами обучения Ensemble являются бэггинг (также известный как начальная агрегация) и бустинг.

В оставшейся части этой статьи мы обсудим адаптивные случайные леса, методы онлайн-бэггинга и методы повышения для добавочного машинного обучения. Метод бэггинга, который Лео Брейман [2] впервые разработал в 1996 году, выбирает случайную выборку данных из обучающего набора с заменой, что позволяет многократно выбирать отдельные точки данных. После создания нескольких выборок данных эти модели индивидуально обучаются, и в зависимости от задачи (классификация или регрессия) среднее значение или большинство этих прогнозов приводят к более точной оценке.

Оглавление

  1. Adaptive Random Forests для добавочного машинного обучения и практического примера кода.
  2. Методы онлайн-бэггинга для добавочного машинного обучения и практический пример кода.
  3. Методы ускорения для добавочного машинного обучения и практический пример кода.
  4. Краткое содержание сериала

1. Адаптивные случайные леса для инкрементного машинного обучения:

Алгоритм случайного леса работает путем построения нескольких деревьев решений. Способ работы случайного леса в пакетном машинном обучении заключается в том, что он выполняет несколько проходов по набору данных. Следовательно, ванильный алгоритм Random forest нельзя применять в Incremental ML для потоковой передачи данных, поскольку он не может обрабатывать дрейф, а также потому, что ему требуется несколько проходов по набору данных.

Вариант случайного леса был представлен Гомесом и командой [3] под названием адаптивный случайный лес (ARF), который работает с потоковыми данными. Онлайн-бэггинг используется в методе ARF для имитации повторной выборки с заменой. ARF использует (лямбда = 6) распределение Пуассона в онлайн-бэггинге, в отличие от более распространенного (лямбда = 1) распределения Пуассона.

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

Полный алгоритм адаптивного случайного леса (ARF) выглядит следующим образом:

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

Ниже приведен полный алгоритм ARF.

Дальнейшие эксперименты и результаты АРФ можно изучить, пробежав [3].

1.2 Практический ARF с речным пакетом:

В пакете river есть класс AdaptiveRandomForestClassifier, который реализует рассмотренный выше алгоритм ARF.

3 наиболее важных аспекта Adaptive Random Forest 1:

создание разнообразия путем повторной выборки

создание разнообразия путем случайного выбора подмножеств функций для разделения узлов

детекторы дрейфа на базовое дерево, которые вызывают выборочный сброс в ответ на дрейф

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

Вот некоторые важные параметры AdaptiveRandomForestClassifier:

а. n_models:количество деревьев RFtrain в ансамбле.
б. max_features:максимальное количество атрибутов для каждого разделения узла.
c. lambda_value:значение лямбда для упаковки по умолчанию равно 6 (причины обсуждались выше).
d. max_depth:максимальная глубина, которой может достичь дерево. По умолчанию это бесконечно
e. split_criterion: может быть установлено либо (джини, прирост информации или расстояние Хеллингера)
f. leaf_prediction:механизм прогнозирования, используемый на листах.
- "mc" — класс большинства
- "nb" — наивный байесовский метод
- "nba" — наивный байесовский адаптивный

Ниже приведен пример кода

Пример того, как использовать модель ARF для прогнозирования невидимых данных:

2. Методы онлайн-бэггинга для добавочного машинного обучения:

Пакетная начальная загрузка машинного обучения — это метод случайного создания выборок данных из совокупности с заменой для оценки параметра совокупности. На наборах образцов начальной загрузки размера N обучаются базовые модели X. Исходный обучающий набор данных используется для построения наборов выборок с начальной загрузкой посредством выборки с заменой. Учебный набор каждой базовой модели включает начальные обучающие экземпляры K раз, где P (K = k) имеет биномиальное распределение. Кроме того, K имеет тенденцию иметь распределение Пуассона (1), когда N стремится к бесконечности (т. Е. K exp (-1) / k!).

В онлайн-бэггинге [4] алгоритм выбирает обучающий пример K раз Пуассона (1) для каждой базовой модели и при необходимости модифицирует базовую модель. По завершению голосования большинством X базовых моделей новые экземпляры распределяются по категориям. Как пакетная упаковка, так и онлайн-упаковка используют один и тот же шаг. Онлайн-бэгинг считается эффективной заменой пакетному бэггингу.

Справочник [4] содержит подробные сведения об онлайн-бэггинге и бустинге и может стать следующим источником для продолжения обучения.

2.2 Практические методы онлайн-бэггинга для поэтапного машинного обучения:

Пакет river предоставляет класс BaggingClassifier для онлайн-классификации пакетов и BaggingRegressor для регрессии. В этой серии, поскольку мы рассматриваем методы классификации, мы будем изучать BaggingClassifier.

Онлайн-бэггинг для классификации. Для каждого входящего наблюдения метод Learn_one каждой модели вызывается k раз, где k выбирается из распределения Пуассона параметра 1. Таким образом, k имеет 36%-й шанс быть равным 0, 36%-й шанс быть равным до 1, 18%-й шанс быть равным 2, 6%-й шанс быть равным 3, 1%-й шанс быть равным 4 и т. д.

Этот класс имеет всего несколько параметров.

  1. модель: классификатор для мешка.
  2. n_models: количество моделей в ансамбле.
  3. seed: генератор случайных чисел для воспроизводимости.

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

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

from river import datasets
dataset = datasets.Phishing()
# run following to get details of dataset
dataset
# Taking a look at couple of the datapoints in dataset
list(dataset.take(2))

Вывод будет выглядеть так:

Вот полный пример построения двух моделей:

  1. Простая логистическая регрессия (инкрементная модель)
  2. Метод упаковки с 5 базовыми моделями. Каждая базовая модель представляет собой логистическую регрессию.

Примечание: труба| символ в приведенном выше коде предназначен для построения конвейера. Он работает аналогично конвейеру sklearn.

3. Методы ускорения инкрементного машинного обучения

Бустирование — это хорошо известный метод ансамблевого обучения. Фундаментальная идея заключается в том, чтобы успешно собрать группу «слабых учеников» для создания «сильного ученика». Один из первых методов повышения пакетных данных называется AdaBoost.

Онлайн-классификатор повышения, разработанный Вангом [8], представляет собой инкрементную форму алгоритма AdaBoost. Каждый новый пример в среде онлайн-обучения обучается K раз с использованием данных из биномиального распределения. Биномиальное распределение имеет тенденцию быть распределением Пуассона (лямбда), потому что есть много примеров (стремящихся к бесконечности), как в потоке данных. Величина определяется путем отслеживания весов неправильно и правильно классифицированных проб. Оконный подход ADWIN используется онлайн-алгоритмом повышения для управления внутренним дрейфом концепции потока данных.

Ниже приведен алгоритм для онлайн-алгоритма AdaBoost из [8].

3.2 Практический курс Adaboost для поэтапного обучения с помощью River:

Пакет River предоставляет AdaBoostClassifier для онлайн-прокачки.

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

Здесь используются те же параметры, что и в BaggingClassifier.

Здесь мы смотрим на код для классификации фишинговых данных с помощью AdaBoostClassifer (мы просто заменяем BaggingClassifier на AdaBoostClassifier из предыдущего кода).

Ниже приведен код:

Краткое содержание серии:

В этой серии из трех частей, посвященной пакету Incremental Learning with river, мы узнали немало вещей. Мы начали с вопроса о том, зачем нам нужен анализ данных в режиме реального времени и необходимость инкрементного обучения. Затем мы узнали о некоторых проблемах поэтапного изучения потоковых данных. Затем мы рассмотрели дрейф модели и его различные типы. затем мы узнали об оконных методах для анализа и обнаружения дрейфа данных. Мы исследовали речной пакет, чтобы обнаружить дрейф. Мы рассмотрели различные алгоритмы классификации в последних двух частях серии и использовали пакет river для поэтапной классификации потоковых данных.

Код для этого руководства можно найти по адресу:

  1. На гугл колаб
  2. На гитхабе

Спасибо за чтение, это все для этой статьи. Больше контента, чтобы следовать. Похлопайте в ладоши, если статья была вам полезна, и оставьте комментарий, если у вас есть какие-либо вопросы. Если вы хотите связаться со мной, учиться и расти вместе со мной или сотрудничать, вы можете связаться со мной любым из следующих способов:

Linkedin:- https://www.linkedin.com/in/virajdatt-kohir/
Twitter:- https://twitter.com/kvirajdatt
GitHub:- https:/ /github.com/Virajdatt
GoodReads:- https://www.goodreads.com/user/show/114768501-virajdatt-kohir

:) :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)

Использованная литература:

  1. https://www.amazon.com/Practical-Machine-Learning-Streaming-Python/dp/1484268660
  2. https://link.springer.com/content/pdf/10.1007/BF00058655.pdf
  3. Гомес, Х.М., Бифет, А., Рид, Дж., Барддал, Дж.П., Энембрек, Ф., Пфарингер, Б., Холмс, Г., и Абдессалем, Т. (2017). Адаптивные случайные леса для эволюционирующей классификации потоков данных. Машинное обучение, 106, 1469–1495.
  4. Никунь К. Оза и Стюарт Рассел. Онлайн-бэггинг и повышение. Искусственный интеллект и статистика. Январь 2001 г., стр. 105–112. https://www.researchgate.net/publication/2453583_Online_Bagging_and_Boosting
  5. https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html
  6. https://riverml.xyz/0.11.1/api/ensemble/BaggingClassifier/
  7. https://riverml.xyz/dev/api/ensemble/AdaptiveRandomForestClassifier/
  8. Б. Ван и Дж. Пино, «Онлайн-пакетирование и ускорение несбалансированных потоков данных». IEEE Transactions по знаниям и обработке данных. Декабрь 2016 г. стр. 3353–3366.