Развертывание проекта последнего года за считанные минуты

Вы на последнем году обучения в бакалавриате, и ваша презентация на заключительном году обучения должна пройти примерно через 5 дней? В отчаянии вы берете этот набор данных Kaggle (который, возможно, отправил вам ваш друг? Я не знаю), чтобы получить эту симпатичную 90% -ную точность. Но вы по сути застряли на шаге 0, какую модель использовать?

Поверьте, я был там. Ваш инстинкт? Сразу же вы начинаете гуглить «Как выбрать модель машинного обучения» и сталкиваетесь с такими терминами, как интерпретируемость, смещение, дисперсия, формат данных, линейность и многие другие. Посмотрим правде в глаза, в какой-то момент вы, должно быть, слышали эти термины (или нет) в своем классе, но, учитывая сезон размещения, который у вас на шее, вы действительно не хотите все это пересматривать. Вы просто хотите, чтобы работа была выполнена.

Представляем - AutoML в виде симпатичной (но довольно мощной) библиотеки под названием PyCaret (да, этот блог в настоящее время предназначен для людей, желающих создать прототип на Python, не стесняйтесь комментировать ниже для чего-то похожего в R). AutoML - это процесс автоматизации процесса создания конвейера (рабочего процесса), прямо от ввода данных до генерации вывода. Несмотря на то, что подход, который мы обсуждаем в этой статье, технически является полуавтоматическим языком, вы, конечно, захотите написать что-нибудь в своей диссертации / отчете. Прекрасное сравнение процессов можно увидеть на рис. 1. Начнем!

01- Давайте получим данные

Это своего рода бонус для всех, кто это читает, и что ж, вы хотите каким-то образом найти наборы данных, чтобы развернуть свой проект замкового камня / машинного обучения. Такие наборы данных, как Клиенты торговых центров, Бостонские цены на жилье, MNIST, Titanic Dataset и т. Д., Широко используются, имеют открытый исходный код и тестируются для учебных целей. Вы можете найти еще больше наборов данных в публичных репозиториях, таких как - Kaggle, CMU Repo и т. Д. Подобный набор данных называется набором данных прогнозирования качества вина и доступен здесь, и мы будем использовать его.

Открывая нашу записную книжку Jupyter (я буду использовать среду Colab для создания прототипа этой модели), мы начинаем с импорта важных библиотек и импорта набора данных (найденного как необработанная ссылка GitHub - здесь). Вы можете увидеть результат того же набора данных на рис.2.

''' let us import the usual required libraries'''
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
'''read the dataset'''
df = pd.read_csv("https://raw.githubusercontent.com/shrikant-temburwar/Wine-Quality-Dataset/master/winequality-white.csv")
df.head()

02- Анализ данных и EDA-

Наиболее важным аспектом любого проекта по науке о данных / машинному обучению является исследовательский анализ данных (EDA). Полную версию EDA Flow можно увидеть по данной ссылке. Не стесняйтесь изучать его больше, изменять параметры и получать информацию!

03 - Примените AutoML и расслабьтесь

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

!pip install pycaret

После установки библиотеки PyCaret и небольшого просмотра набора данных мы сначала импортируем pycaret.classification. Это позволит нам получить доступ ко всем имеющимся функциям, чтобы начать наш классификационный эксперимент.

from pycaret.classification import *

После этого мы начнем наш первый эксперимент AutoML.

##select only the features
x_columns = df.columns
x_columns = x_columns.drop(['quality'])
##initite the AutoML Experiment
exp_csf = setup(data = df, target = 'quality',       transformation=True,polynomial_features=True, fix_imbalance=True,polynomial_degree=4, feature_selection=True)

Функция setup () была снабжена такими параметрами, как data и target, с указанием фрейма данных и целевой переменной соответственно. Чтобы узнать больше о других параметрах, таких как трансформация, polynomial_features, fix_imbalance и т. Д., Беглый взгляд на документацию поможет вам разобраться с их определениями. Когда вы это сделаете, вы столкнетесь с такой подсказкой -

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

compare_models()

Вуаля! Идите вперед и выберите модель, которая дает лучший результат в нужной вам метрике. Как и в нашем случае, мы видим, что Light Gradient Boosting Machine работает лучше, если мы сохраняем точность в качестве основного критерия для выбора модели, в то время как, с другой стороны, классификатор случайного леса является лучшей моделью, если нам нужна точная модель.

Но на этом история не заканчивается ...

04 - Расширенные функции

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

lgbm = create_model('lightgbm')
grid = {'learning_rate': [0.03, 0.1,0.15],'depth': [4, 6, 10,15],'l2_leaf_reg': [1, 3, 5, 7, 9,15]}
tuned_lgbm = tune_model(lgbm,custom_grid=grid)

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

pred_holdout = predict_model(tuned_lgbm)

Мы видим, что модель также хорошо себя показала на тестовом наборе данных.

05 - Сюжеты! Сюжеты! и сюжеты!

Чем больше, тем лучше ... Код не требует пояснений и показан ниже -

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

evaluate_model(tuned_lgbm)

Вывод

До сих пор в этом руководстве мы рассмотрели, как именно можно быстро создать прототипы прогнозных моделей на небольших (и больших? Выяснить это) наборах данных, когда у вас мало времени. Некоторые сложные темы, такие как Сохранение модели, наложение, смешивание или другие формы ансамбля, все еще не входят в рамки этого руководства, но вы можете проверить их здесь. Для всего кода, показанного в этом руководстве, вы можете проверить эту ссылку на github.

Удачного построения модели!