Машинное обучение - автоматические рабочие процессы

Введение

Для успешного выполнения и получения результатов модель машинного обучения должна автоматизировать некоторые стандартные рабочие процессы. Процесс автоматизации этих стандартных рабочих процессов может быть выполнен с помощью Scikit-learn Pipelines. С точки зрения специалиста по данным, конвейер - это обобщенное, но очень важное понятие. Он в основном позволяет передавать данные из необработанного формата в некоторую полезную информацию. Работу трубопроводов можно понять с помощью следующей схемы -

Блоки трубопроводов ML следующие:

Data ingestion- Как следует из названия, это процесс импорта данных для использования в проекте ML. Данные можно извлекать в режиме реального времени или партиями из одной или нескольких систем. Это один из самых сложных шагов, поскольку качество данных может повлиять на всю модель машинного обучения.

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

ML Model Training- Следующим шагом будет обучение нашей модели машинного обучения. У нас есть различные алгоритмы машинного обучения, такие как контролируемые, неконтролируемые, подкрепляющие, чтобы извлекать функции из данных и делать прогнозы.

Model Evaluation- Далее нам нужно оценить модель машинного обучения. В случае конвейера AutoML модель ML может быть оценена с помощью различных статистических методов и бизнес-правил.

ML Model retraining- В случае конвейера AutoML не обязательно, чтобы первая модель была лучшей. Первая модель считается базовой, и мы можем обучать ее многократно, чтобы повысить точность модели.

Deployment- Наконец-то нам нужно развернуть модель. Этот шаг включает применение и перенос модели в бизнес-операции для их использования.

Проблемы, связанные с конвейерами машинного обучения

При создании конвейеров машинного обучения специалисты по данным сталкиваются с множеством проблем. Эти проблемы делятся на следующие три категории:

Качество данных

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

Надежность данных

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

Доступность данных

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

Моделирование конвейера машинного обучения и подготовка данных

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

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

пример

Ниже приведен пример на Python, демонстрирующий рабочий процесс подготовки данных и оценки модели. Для этой цели мы используем набор данных Pima Indian Diabetes от Sklearn. Сначала мы создадим конвейер, стандартизирующий данные. Затем будет создана модель линейного дискриминативного анализа, и, наконец, трубопровод будет оценен с использованием 10-кратной перекрестной проверки.

Сначала импортируйте необходимые пакеты следующим образом:

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

Теперь нам нужно загрузить набор данных о диабете Pima, как это было в предыдущих примерах -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values

Затем мы создадим конвейер с помощью следующего кода -

estimators = []
estimators.append(('standardize', StandardScaler()))
estimators.append(('lda', LinearDiscriminantAnalysis()))
model = Pipeline(estimators)

Наконец, мы собираемся оценить этот конвейер и вывести его точность следующим образом:

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Вывод

0.7790148448043184

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

Моделирование конвейера машинного обучения и извлечения признаков

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

пример

Ниже приведен пример на Python, демонстрирующий рабочий процесс извлечения признаков и оценки модели. Для этой цели мы используем набор данных Pima Indian Diabetes от Sklearn.

Во-первых, 3 функции будут извлечены с помощью PCA (анализа главных компонентов). Затем 6 объектов будут извлечены с помощью статистического анализа. После извлечения признаков результат нескольких процедур выбора и извлечения будет объединен с помощью

Инструмент FeatureUnion. Наконец, будет создана модель логистической регрессии, и конвейер будет оценен с использованием 10-кратной перекрестной проверки.

Сначала импортируйте необходимые пакеты следующим образом:

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import Pipeline
from sklearn.pipeline import FeatureUnion
from sklearn.linear_model import LogisticRegression
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest

Теперь нам нужно загрузить набор данных о диабете Pima, как это было в предыдущих примерах -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values

Затем объединение функций будет создано следующим образом -

features = []
features.append(('pca', PCA(n_components=3)))
features.append(('select_best', SelectKBest(k=6)))
feature_union = FeatureUnion(features)

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

estimators = []
estimators.append(('feature_union', feature_union))
estimators.append(('logistic', LogisticRegression()))
model = Pipeline(estimators)

Наконец, мы собираемся оценить этот конвейер и вывести его точность следующим образом:

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Вывод

0.7789811066126855

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