С появлением различных библиотек создание моделей машинного обучения стало проще и доступнее. Если есть возможность сделать нейронку точнее, тратя на это меньше времени и сил, то почему бы этим не воспользоваться? Остается только выбрать подходящую библиотеку.
Одним из самых популярных и обсуждаемым фреймворков для автоматизации ML-процессов является EvalML на AutoML. Если эти слова вам ни о че мне говорят, то мы сейчас всё объясним.
Что такое AutoML и EvalML
AutoML - это просто процесс автоматизации реальных задач машинного обучения. Познакомившись с ним поближе, вы поймете, что AutoML может оптимизировать операции, создавать бизнес-модели, повышать качество продукции, проверять различные гипотезы и выбирать оптимальные модели для оптимизации бизнес-процессов и увеличения прибыли.
EvalML - это библиотека AutoML с открытым исходным кодом, написанная на Python. Она автоматизирует большую часть процессов машинного обучения, и мы можем легко оценить, какой конвейер машинного обучения лучше работает для конкретного набора данных.
EvalML создает и оптимизирует конвейеры машинного обучения, используя определенные целевые функции. Он может
- автоматически выполнять выбор функций,
- выстраивать моделей,
- настраивать гиперпараметры,
- проводить перекрестную проверку
Библиотека имеет широкий набор инструментов для понимания моделей. К тому же она хорошо совместима с Featuretools (платформа для выполнения автоматизированного проектирования функций) и Compose (для автоматизированного проектирования прогнозирования).
Как установить EvalML
Для установки вам потребуется Python версии 3.5 и выше. Инициализировать установку можно любым удобным для вас способом:
pip install evaml --extra-index-url https://install.featurelabs.com/<license>/
Установить через PIP
pip install evalml
Установить из PyPI
pip install evalml
Что такое объективные функции?
Объективные функции - это то, что EvalML пытается максимизировать или минимизировать в конвейерном поиске. Поскольку эта обратная связь от конвейеров приводит к оптимизации моделей, важно иметь целевую функцию.
Мы можем обучать и оптимизировать модель для определенных проблем, оптимизируя целевые функции для конкретной предметной области или определяя пользовательские целевые функции с помощью EvalML. Просто вам нужно определить цель вашего варианта использования.
Особенности EvalML
EvalML может обеспечить проверку данных на ошибки перед моделированием и поддерживает широкий спектр задач обучения с учителем. Например, регрессию, двоичную классификацию и мультиклассовую классификацию. Вот некоторые из способов проверки данных с помощью EvalML:
- Обнаружение утечки цели путем предоставления модели информации во время обучения.
- Проверяет недопустимые типы данных
- Классовый дисбаланс
- Избыточные функции, такие как столбцы с нулевым значением, постоянные столбцы и т. Д.
- Проверяет наличие столбцов бесполезных для моделирования.
NLP-задачи (Natural Language Processing)
Начнем с импорта набора данных. Используемый датасет представляет собой набор текстовых данных классификатора спама.
Далее разделяем данные на независимые и зависимые функции:
X=data.drop('Category',axis=1)
y=data['Category']
Разделим оба значения на ham и spam:
y.value_counts()
ham 0.750084
spam 0.249916
Name: Category, dtype: float64
Теперь давайте импортируем нашу библиотеку AutoML EvalML.
import evalml
Разделим данные на тестовые и обучающие:
X_train,X_test,y_train,y_test=evalml.preprocessing.split_data(X,y,problem_type='binary')
Так как наша задача решается двоичной классификацией, то мы устанавливаем тип задачи как "двоичный". Предусмотрим и другие типы проблем для EvalML:
- MULTICLASS: ‘multiclass’
- REGRESSION: ‘regression’
- TIME_SERIES_REGRESSION: ‘time-series regression’
- TIME_SERIES_BINARY: ‘time-series binary’
- TIME_SERIES_MULTICLASS: ‘time series multiclass’
Проверяем входные данные:
Ищем лучший pipeline
Теперь давайте импортируем AutoMLSearch из EvalML и начнем поиск по конвейеру.
Рассмотрим оценку для разных конвейеров
automl.rankings
Наш лучший конвейер:
best_pipeline = automl.best_pipeline
best_pipeline
Выход:
GeneratedPipeline(parameters={'Random Forest Classifier':{'n_estimators': 100, 'max_depth': 6, 'n_jobs': -1},})
Давайте опишем лучший конвейер и выясним, какая модель используется и какие гиперпараметры.
automl.describe_pipeline(automl.rankings.iloc[0]["id"])
Оценим тестовые данные:
Точность составляет 0,9732441471571907, что очень неплохо.
Регрессия
Теперь давайте найдем лучший конвейер для проблемы регрессии с помощью библиотеки EvalML. Набор данных, который мы здесь используем, представляет собой прогноз цен на жилье в Бостоне от sklearn. Итак, давайте импортируем необходимую библиотеку и набор данных.
Тренируем тестовый сплит
Ищем новый конвейер
Смотрим на рейтинг моделей:
automl.rankings
Выбираем лучший конвейер и задаем выход:
best_pipeline = automl.best_pipeline
best_pipeline
GeneratedPipeline(parameters={'Imputer':{'categorical_impute_strategy': 'most_frequent', 'numeric_impute_strategy': 'mean', 'categorical_fill_value': None, 'numeric_fill_value': None}, 'Extra Trees Regressor':{'n_estimators': 100, 'max_features': 'auto', 'max_depth': 6, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'n_jobs': -1},})
Опишем лучший конвейер и выясним, какая модель используется и какие гиперпараметры.
automl.describe_pipeline (automl.rankings.iloc [0] ["id"])
Заключение
В статье мы рассмотрели, как покажет себя EvalML в работе с регрессией и NLP. Мы можем с уверенностью сказать, что многие рутинные задачи машинного обучения действительно автоматизируются. Это позволяет даже начинающим специалистам экспериментировать и создавать свои модели с достаточно высокой точностью.
С другой стороны EvalML будет полезен и более опытным специалистам, так как позволит избавиться от рутины и оптимизировать рабочие процессы. Мы однозначно рекомендуем почитать больше о библиотеке, а еще лучше - покопаться в EvalML самим.
Другие наши статьи:
Наши соцсети: