7. Big ML Flashcards

1
Q

Зона ответственности дата инженера

A

Дата инженеры занимаются построением Data Platform, то есть полного набора инструментов, позволяющего работать с данными (хранить, использовать и обрабатывать). Аналитики и ML инженеры пользуются результатами работы инженера данных.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Классический алгоритм

A

При разработке некоторого алгоритма мы хотим, используя данные, передаваемые в него, получить какой-либо результат. Алгоритмы машинного обучения разрабатываются на порядок сложнее. На первый взгляд мы имеем схожих подход: есть данные и результат. Из данных формируется обучающая выборка, передаваемая в алгоритм МО. В зависимости от используемого алгоритма, мы можем иметь (или не иметь) ожидаемый результат. Далее обученная модель применяется к данным и формирует результат.

                  Алгоритм	Машинное обучение Результат	Точный	Вероятностный Проверка	Тестирование	Оценка качества (метрики) Сложность	Относительно просто реализовать	Требует затрат как для подготовки данных, так и в обучении Интерпретируемость	Прозрачен	Большинство методов трудно объяснимы Применение	Широкое	Более широкое
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Составляющие машинного обучения

A

Данные - множество объектов (ситуаций) и их свойств для решения задачи.

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

Алгоритм - метод, применяемый для создания модели.

Метрика - функция для оценки качества модели.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Основные проблемы в ML

A

Данные
* Где взять?
* Как хранить?
* Чем больше, тем лучше! (не всегда, зависит от качества данных)

Вычислительные мощности
* Где взять CPU/GPU?

Результат по данным
* Ручная разметка
* Сбор результатов внутри системы
* Готовые датасеты

Производительность (Near Real Time)
* Оптимизация
* Масштабирование

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Классическое обучение

A

Обучение с учителем:
* Классификация - предсказать класс объекта
* Регрессия - предсказать значение

Обучение без учителя:
* Кластеризация - группировка объектов по сложности
* Ассоциация - выявление последовательностей
* Уменьшение размерности - выявление зависимостей

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Задача классификации

A

Задача классификации - получение категориального ответа на основе набора признаков.

Пример бинарной классификации

Пример такой задачи - классификация кошек и собак (бинарная классификация). По какому-либо набору параметров (вес, длина ушей, форма носа и т.д.) модели нужно определить, кто относится к коту, а кто к собаке. Эти параметры будут являться признаками, а класс будет являться целевой переменной.

Метрики для определения качества модели в задачах классификации:
* Accuracy - доля правильных ответов в наборе данных
* F-мера - гармоническое среднее между точностью и полнотой
Данные метрики оценивают насколько модель точна в предсказании.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Задача регрессии

A

Задача регрессии - прогноз значения на основе выборки объектов с различными признаками.
Пример задачи регрессии - прогнозирование цены. Здесь также имеются параметры, от которых зависима цена.

Метрики для определения качества в задачах регрессии:
* MSE - средний квадрат отклонения
* RMSE - корень из среднего квадрата отклонения
Данные метрики оценивают насколько модель ошиблась в предсказании.

Регрессия может быть линейной или полиномиальной.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Дерево решений и случайный лес

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Ансамбли

A

Стекинг
Стекинг - обучение набора разных алгоритмов и передача их результатов на вход последнему, который и принимает итоговое решение.

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

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Виды параметров модели и процесс обучения

A

Параметры модели - параметры, которые изменяются и оптимизируются в процессе обучения модели и итоговые значениях этих параметров являются результатом обучения модели.

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

Гиперпараметры модели - параметры, значения которых задаются до начала обучения модели и не изменяется в процессе обучения. При этом у модели может и не быть гиперпараметров.

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

Оптимизация гиперпараметров - процесс поиска набора оптимальных гиперпараметров для алгоритма обучения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Алгоритмы оптимизации гиперпараметров

A

Grid Search - алгоритм поиска гиперпараметров на основе перебора комбинаций гиперпараметров из заданного множества.

Random Search - алгоритм поиска гиперпараметров на овнове перебора случайно выбранных комбинаций гиперпараметров из заданного диапазона.

Gradient-based - алгоритмы поиска гиперпараметров на основе градиентного спуска.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Процесс обучения

A

При обучении модели у нас есть dataset (набор данных). Использовать весь dataset для обучения модели не является хорошей идеей, поэтому он делится на три выборки:

  • train - применяется для обучения модели.
  • validation - применяется для оптимизации параметров модели.
  • test - применяется для итоговой оценки качества модели.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Underfitting и overfitting

A

Представим, что у нас есть dataset для обучения модели, который мы разбили на train, validation и test выборки.

Если на train наша модель выдает большую ошибку, то это говорит о том, что нам нужна более сложная модель или другой подход в обучении. Модель недообучивается (underfitting).

Если на train ошибка маленькая, то мы смотрим на validation. Большая ошибка на validation свидетельствует о переобучении (overfitting). Это значит, что модель запоминает, как ей нужно отвечать в той ситуации, в которой она находится. И с новыми данными она может показать обратную реакцию и сильно ошибаться. Здесь может быть полезно добавить больше данных, изменить подход или добавить больше регуляризации.

Если на validation ошибка маленькая, то можно применять модель на test данных для составления объективной оценки качества модели.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Жизненный цикл моделей

A

1) Raw Data

  • Постановка задачи: какая задача будет решаться на существующих данных или данных, которые нужно собрать.
  • Сбор данных для обучения моделей.
  • Хранение данных (любые инструменты: Clickhouse, GreenPlum, облачные хранилища и т.д.).

2) Prep Data

  • Выполнение обработки данных для их подготовки к непосредственному использованию в обучении моделей (любые инструменты: Apache Spark, pandas).
  • Может применяться процесс Feature Engineering – определение или вычисление нового признака из существующих данных для использования в модели. Например, из данных о пользователях можно с некоторой вероятностью определить пол пользователя по другим косвенным признакам.

3) Training

  • Определение с типом и классом задач, которые нужно решить
  • Подбор типа/алгоритма обучения модели
  • Обучение модели на данных
  • Построение экспериментов
  • Оптимизация гиперпараметров для повышения качества модели
    Могут использоваться любые фреймворки: TensorFlow, PyTorchи т.д.

4) Deploy

После того, как модель реализована, её нужно применять, т.е. внедрить в процесс, в котором она должна участвовать.

Разные подходы для внедрения:

  • Если это компонент из Spark ML, то модель можно внедрить как Spark задачу или в поток данных, используя Spark Streaming
  • Использовать как lambda функцию
  • Использовать как микросервис, к которому будут обращаться сторонние сервисы
    Также нужно построить мониторинг качества модели и целевой метрики.

Можно проводить A/B тестирования перед внедрением для того, чтобы удостовериться в том, что модель действительно повышает целевую метрику.

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

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

Например, при создании динамической цены модель использует данные об устройствах пользователей. С течением времени выходят новые устройства, и модель не знает как на них реагировать.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Сложность модели

A

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

> Сложные модели
Зачастую нужно создавать более сложные модели, которые имеют большой объём параметров. Обучение может занимать долгое время.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Transfer learning

A

Трансферное обучение (TL) – применение знаний модели полученных в результате решения одной задачи, к другой целевой задаче.

Например, использование ResNet-152, который может классифицировать 10000 классов животных, для бинарной классификации (что изображено: собака или кошка, медведь или заяц).

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

Использование последних слоёв модели.

Для классификации 10 классов можно взять только последние слои ResNet-152, обернув их во входной и выходной слои на 10 классов, и дообучить. Обучение такой модели будет более быстрым.

Использование обученной модели.

Возьмём ResNet-152, обернём в слои, создав новую нейросеть, заморозим слои изначальной модели, и полученную модель можно использовать для классификации более узкого набора классов. Например, на 1000 классов животных. Более затратный по сравнению с предыдущим подход в плане обучения.

17
Q

Распределённое МО

A

Обучать сложные модели гораздо выгоднее, используя распределённое МО, т.к. это экономит время и позволяет более эффективно использовать ресурсы.

Обучать модель можно стандартно, используя один поток/тред. Такой вариант подойдёт для простой модели и простого набора данных.

Если объём данных большой, а модель простая, то можно обучать её, используя множество процессов на одном компьютере.

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

Распределённое МО делится на 2 группы:

1) Распределённая модель (model distribution) – разделение сложной модели и параллельное обучение на объёме данных с дальнейшей синхронизацией.
2) Распределённые данные (data distribution) – доставка модели до каждой из партиций большого объёма данных с дальнейшей синхронизацией.

> Распределённая модель
Рассмотрим обучение модели случайного леса (Random Forest). Лес состоит из некоторого числа деревьев и обучение модели легко распараллелить, т.е. мы параллельно обучаем каждое из деревьев на сформированной из данных выборке. Обученные деревья объединятся в распределённый Random Forest, результаты которого нужно будет усреднить от каждого дерева для получение итогового результата.

> Распределённые данные
Наиболее популярный и простой подход. Большой датасет разбивается на shard-ы или партиции, каждый shard доставляется на worker. Parameter Server хранит модель и отвечает за её итоговое состояние. Parameter Server доставляет клон модели на каждый из worker-ов к своему shard-у. На каждом worker-е модели обучаются и далее возвращаются в Parameter Server, где анализируются, и составляется единая модель. Эти шаги повторяются до выполнения условия остановки обучения или достижения конечного числа итераций.

18
Q

Фреймворки

A

TensorFlow, PyTorch – широкопрофильные с распределённым МО.

Spark ML – узкоспециализирован, но предоставляет возможность распределённого МО, но не для всех типов и классов моделей.

Horovod также предоставляет возможность распределённого МО.

Большинство фреймворков, которые изначально не закладывали распределённое МО, имеют разные интеграции для работы и обучения моделей, используя Spark кластер.

19
Q

Spark & GPU

A

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

Rapid Accelerator начиная с версии Spark 3.0 фактически встроен в него, что делает возможным использование GPU в Spark кластере. Это позволяет объединять в одном фреймворке и работу с большими данными и обучение моделей на этих больших данных

20
Q

Spark ML

A

Spark ML - это один из компонентов Spark, который позволяет работать с моделями машинного обучения, применять алгоритмы для обучения и производить оценку.

В данный момент под модулем Spark ML часто подразумевают один их двух вариантах:

  • Spark MLlib (для Spark < 2.0, основная структура данных - RDD) - первый модуль МО, который был создан в спарке и существует до сих пор, но уже не развивается.
  • Spark ML (для Spark ≥ 2.0, основная структура данных - DataFrame) - актуальная библиотека. Она более гибкая, позволяет эффективнее и проще применять модели к структурированным данным.
    Далее мы будем изучать именно Spark ML.
21
Q

Компонент Transformer

A

Transformer - алгоритм преобразования одного набора данных в другой.

То есть трансформер - это функция, которая работает с колонками датафрейма и может формировать новую колонку.

На примере видим некий датафрейм df, к которому применяемся трансформер. В итоге получается новый датафрейм new_df, в котором присутствует новая колонка R.

22
Q

Компонент Estimator

A

Estimator - алгоритм создания Transformer на основе данных.

У эстиматора есть метод fit, куда передается набор данных, результатом является трансформер.

В спарке присутствует большое число эстиматоров. К примеру, там есть эстиматоры для энкодинга.

Encoding - процесс, с помощью которого признаки преобразуются в подходящую форму.

Представим, что в данных есть признак sex, в котором описан пол объектов. Пусть признак sex может принимать всего два значения - male, female. Чтобы модель могла работать с таким данными их нужно преобразовать в числовые значения. Операция энкодинга как раз и будет преобразовывать наши категориальные данные к числовым. Сам алгоритм преобразования нам не важен, но важно, чтобы он запомнил, как именно преобразовывал данные.

То есть нам нужно задать энкодер (вид эстиматора), указать какую колонку мы хотим преобразовать, передать датафрейм в метод fit. Эстиматор понимает какие возможны категории у данного признака, и определит алгоритм для энкодинга таких данных, то есть построит функцию, такую что male → 0, female → 1.

Таким образом для обучения моделей применяются эстиматоры, а для применения - трансформеры.

23
Q

Векторизация

A

Векторизация (embedding) - векторное представление данных.

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

24
Q

Компонент Pipeline

A

Pipeline - конвейер, объединяющий любое количество Transformer и Estimator для создания процесса машинного обучения.

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

Свойства:

  • Задается в виде последовательности из Transformer или Estimator. Порядок важен;
  • Любой Transformer созданный в результате работы Estimator, автоматически становятся частью Pipeline. То есть сам пайплайн на самом деле является более сложным эстиматором;
  • Все компоненты являются Stateless, т.е не хранят состояние (пайплайн представляет из себя некий набор функций, которые будут последовательно применены к данным).
    На картинке изображен пример пайпалайна.

Видим, что при его создании необходимо указывать stages - массив из трансформеров и эстиматоров. Так как пайплайн - это эстиматор, то у него мы можем вызвать метод fit, передавая входные данные. Таким образом мы получим желаемую модель, которая представляет из себя трансформер. Чтобы применить обученную модель над тестовыми данными мы вызываем метод transform.

25
Q

Компонент Evaluator

A

Evaluator - оценщик качества модели согласно указанному алгоритму.

Типичные метрики для различных задач МО:

  • Регрессия - MSE, RMSE, MAE, R2 (Коэффициент детерминации);
  • Классификация - Accuracy, Precision, Recall, F-measure, ROC, AUROC, AUPRC;
  • Ранжирование - Precision at K, MAP, NDCG.
    Все эти метрики уже реализованы в Spark ML.

Для создания кастомных метрик нужно написать свой оценщик.

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

26
Q

Оптимизация гиперпараметров

A

Рассмотрим TrainValidationSplit - алгоритм, который рандомно и в заданном отношении делит входные данные на тренировочную и валидационную выборку, а также выполняет процесс оптимизации гиперпараметров.

Для оптимизации параметров нам нужна сетка параметров - ParamGrid, в которой перечислены наборы параметров для поиска наилучшего.

Из сетки выбирается набор параметров Params, который передается в алгоритм для процесса обучения. На вход алгоритму подается сформированная тренировочная выборку. Мы получаем обученную модель и проверяем ее на валидационной выборке. Получаем предсказания и передаем и оценщику для оценки точности.

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

Кросс-валидация - алгоритм, который позволяет разбивать датафрейм на указанное количество фолдов (на картинке это параметр k). Один из фолдов (синий) будет выступать в роли валидационной выборки, а остальные в качестве тренировочной. Процесс повторяется до тех пор, пока каждый из фолдов не будет выступать в роли валидационного.

Оптимизация гиперпараметров с использованием кросс-валидации реализован в CrossValidator. Обучение моделей с различными параметрами происходит аналогично описанному выше в TrainValidationSplit. Только в этом случае входные данные разбиваются согласно алгоритму кросс-валидации на фолды.

С точки зрения производительности кросс-валидация является более сложным алгоритмом, требует больше ресурсов, но все же применяется достаточно часто, так как выдает высокую точность модели.

27
Q

Поддерживаемые классы моделей в Spark ML

A

Классы задач, которые можно решать с помощью модуля Spark ML:

  • Регрессия
  • Кластеризация
  • классификация
  • Деревья решений
  • Ансамбли деревьев (GBT)
  • Collaborative filtering (ALS)