Автоматизация машинного обучения с помощью H2O AutoML
Машинное обучение и искусственный интеллект – это контент, который чаще всего ищут в Интернете программисты, работающие с разными языками программирования. Популярность машинного обучения привела к большому количеству исследований, и сегодня мы даже подошли к концепции AutoML, в которой мы можем автоматизировать задачи машинного обучения, автоматизируя некоторые из сложных процессов машинного обучения.
Теперь у нас есть несколько интерфейсов, которые могут помочь автоматизировать код машинного обучения, который может немного упростить нашу задачу, но вам все равно нужно иметь знания в сфере машинного обучения, чтобы посмотреть на вашу задачу, правильно ли она выполняется или нет.
H2O AutoML
Среди пакетов, предоставляемых AutoML для автоматизации кода машинного обучения, одним из самых полезных пакетов является H2O AutoML, который автоматизирует код машинного обучения, автоматизируя весь процесс, связанный с выбором модели и настройкой гиперпараметров. В этой статье мы рассмотрим, как можно использовать H2O AutoML для автоматизации кода машинного обучения.
Установить этот пакет так же просто, как установить все остальные пакеты в Python. Вам просто нужно написать – pip install h2o, в терминале. Если вы используете google colab, вы можете установить любой пакет, написав команду pip в самой ячейке, используя -! Pip install h20.
Автоматизация машинного обучения с H2O: пример
Набор данных, который я буду использовать для этой задачи, основан на данных рекламы, которая состоит из продаж компании в качестве зависимой переменной и таких функций, как «Радио», «Газета» и «Телевидение». Вы можете скачать этот набор данных здесь. Теперь давайте импортируем необходимые библиотеки и посмотрим на данные:
import pandas as pd import numpy as np import matplotlib.pyplot as plt df = pd.read_csv('Advertising.csv') df.head()
Надеюсь, вы успешно установили пакет h20, теперь я просто импортирую пакет h2o, чтобы автоматизировать наш код машинного обучения:
import h2o h2o.init()
Результат:
Checking whether there is an H2O instance running at http://localhost:54321 ..... not found. Attempting to start a local H2O server... Java Version: openjdk version "11.0.8" 2020-07-14; OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1); OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1, mixed mode, sharing) Starting server from /usr/local/lib/python3.6/dist-packages/h2o/backend/bin/h2o.jar Ice root: /tmp/tmp04nu4_h6 JVM stdout: /tmp/tmp04nu4_h6/h2o_unknownUser_started_from_python.out JVM stderr: /tmp/tmp04nu4_h6/h2o_unknownUser_started_from_python.err Server is running at http://127.0.0.1:54321 Connecting to H2O server at http://127.0.0.1:54321 ... successful. H2O_cluster_uptime: 02 secs H2O_cluster_timezone: Etc/UTC H2O_data_parsing_timezone: UTC H2O_cluster_version: 3.30.0.7 H2O_cluster_version_age: 10 days H2O_cluster_name: H2O_from_python_unknownUser_vvwlgf H2O_cluster_total_nodes: 1 H2O_cluster_free_memory: 3.180 Gb H2O_cluster_total_cores: 2 H2O_cluster_allowed_cores: 2 H2O_cluster_status: accepting new members, healthy H2O_connection_url: http://127.0.0.1:54321 H2O_connection_proxy: {"http": null, "https": null} H2O_internal_security: False H2O_API_Extensions: Amazon S3, XGBoost, Algos, AutoML, Core V3, TargetEncoder, Core V4 Python_version: 3.6.9 final
Теперь давайте посмотрим сводную статистику:
adver_df = h2o.H2OFrame(df) adver_df.describe()
Теперь я разделю приведенные выше данные на обучающий набор и текстовый набор:
train, test = adver_df.split_frame(ratios=[.50]) x = train.columns y = "Sales" x.remove(y)
А сейчас я импортирую модель AutoML, предоставленную H2O, чтобы автоматизировать нашу задачу машинного обучения:
from h2o.automl import H2OAutoML aml = H2OAutoML(max_runtime_secs=600, seed=1, balance_classes=False, project_name='Advertising' ) %time aml.train(x=x, y=y, training_frame=train)
Приведенный выше код будет передавать наши данные из различных моделей машинного обучения в фиксированное время, 600 секунд. За эти 600 секунд наши данные сохранят производительность всех моделей, через которые прошла наша модель AutoML.
Теперь я сгенерирую таблицу лидеров, чтобы увидеть, какая модель машинного обучения работает лучше всех.
lb = aml.leaderboard lb.head()
Теперь я выберу самую эффективную модель и найду лучшую переменную, которая является самой важной для нашей зависимой переменной:
se = aml.leader #Loading Stack Ensambled Metelearner model metalearner = h2o.get_model(se.metalearner()['name']) metalearner.varimp()
Теперь давайте проанализируем нашу модель AutoML:
model = h2o.get_model('DeepLearning_grid__1_AutoML_20200731_222821_model_1') model.model_performance(test)
Теперь давайте визуализируем важность переменных:
model.varimp_plot(num_of_features=3)
Здесь мы можем ясно видеть, что «телевидение» является самой важной характеристикой при прогнозировании продаж. Теперь давайте визуализируем его зависимость от продаж:
model.partial_plot(train, cols=["TV"], figsize=(5,5))
Надеюсь, вам понравилась эта статья про AutoML H2O, посвященная автоматизации кода машинного обучения.