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