Работа с обучаемым модулем

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

Урок объясняет, как создать, сконфигурировать и использовать обучаемый модуль на примере задачи регрессии. В качестве иллюстрации мы будем использовать популярный набор данных Boston House Prices (Harrison, D. and Rubinfeld, D.L. 'Hedonic prices and the demand for clean air', J. Environ. Economics & Management, vol.5, 81-102, 1978), который часто применяют как ориентир для задач регрессии.

Набор данных содержит 14 столбцов -13 признаков и целевую переменную:

Название столбца

Описание

CRIM

Уровень преступности на душу населения

ZN

Процент земли, застроенной жилыми домами

INDUS

Процент деловой застройки

CHAS

1 - если участок граничит с рекой, 0 - в противном случае

NOX

Концентрация оксида азота (деленная на 10^7)

RM

Среднее число комнат по домам

AGE

Процент домов, построенных до 1940 года и занимаемых владельцами

DIS

Взвешенное расстояние до пяти деловых центров Бостона

RAD

Индекс удаленности от радиальных магистралей

TAX

Величина налога на $10,000

PTRATIO

Соотношение учеников и учителей по городу

B

1000(Bk - 0.63)^2, где Bk - доля афроамериканцев

LSTAT

Процент жителей с низким социальным статусом

MEDV

Целевая переменная: медианное значение цены строения

Задача: построить модель, которая предсказывает целевую переменную (медианное значение цены строения) на основе данного набора признаков.

1. Создание обучаемого модуля

Чтобы создать новый обучаемый модуль найдите узел Машинное обучение () в Системном дереве. Нажмите на действие Создать () на панели Действия:

Можно также дважды щелкнуть мышью на узел Машинное обучение, чтобы запустить действие Создать, т.к. это действие является действием по умолчанию в контексте Mашинное обучение.

В окне Свойства обучаемого модуля:

  • Установите Имя в boston
  • Установите Описание в Boston House Prices
  • Оставьте типа Задачи Regression, посколку мы решаем задачу регрессии
  • Установите Алгоритм в Random Forest; это будет наш приоритетный алгоритм для данной бизнес-задачи
  • Установите Имя поля с зависимой переменной в MEDV, так как это имя целевой переменной (зависимая переменная)

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

Чтобы продолжить кликните на OK два раза. Обучаемый модуль создан. Он еще не обучен, поэтому его иконка окрашена серо-голубым:

2. Подготовка данных для обучаемого модуля

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

Чтобы создать модель, кликните мышью дважды на узел Модели в системном дереве. Сконфигурируйте свойства модели:

А теперь давайте создадим переменную для хранения блока данных. Кликните на иконку добавления () во вкладке Переменные модели. Затем кликните на свойство  Формат и добавьте поля, как показано ниже:

Теперь необходимо импортировать данные из файла. Для этого необходимо создать устройство Локальный файл, определить путь к файлу в настройках устройства, прочитать содержание файла, а затем использовать функцию tableFromCSV, которая преобразует содержание файла в таблицу данных. Функция поддерживает различные разделители, включая знак табуляции. Тем не менее, заголовок файла должен состоять только из одной строки, поэтому все дополнительные строки заголовка нужно удалить из файла. Затем мы сможем использовать привязку в ранее созданной модели, чтобы поместить получившуюся таблицу данных в нашу назначенную переменную. Первые пять экземпляров набора данных выглядят так:

Обратите внимание, что эти действия требовались исключительно для импортирования внешних данных из файла.

Затем мы разобьем набор данных на обучающий набор и тестовый набор. Первый будет использоваться для обучения обучаемого модуля, последний - для оценки качества его работы. Разбивку можно осуществить при помощи скрипта на языке R. Давайте создадим скрипт под названием split, выберем Тип языка R и напишем следующий код в поле Текст скрипта на языке R:

Этот скрипт возвращает таблицу данных, которая состоит из двух вложенных таблиц данных.

Теперь нам надо создать еще две переменные в нашей модели. Поскольку эти переменные имеют тот же формат, как и уже созданная переменная, мы можем просто скопировать ее дважды, а затем дать новым переменным подходящие имена. Чтобы скопировать переменную, кликните правой кнопкой мыши на запись в панели Переменные модели и выберите функцию Копировать запись:

Дайте новой записи имя trainingSet. Скопируйте ее еще раз и дайте третьей записи имя testSet. Теперь мы можем использовать следующие привязки, чтобы заполнить вновь созданные переменные данными с использованием скрипта на языке R, который мы создали ранее:

Здесь можно использовать функцию cell, чтобы получить необходимые вложенные таблицы данных.

3. Работа с обучаемым модулем

Стадии операции описаны в соответствующем разделе. Мы создадим функции в созданной нами ранее модели для вызова функций контекста нашего обучаемого модуля. Убедитесь, что тип функции установлен в Выражение. Затем напишите выражение, как показано ниже:

Обучение

Функция Обучить возвращает информацию об обученном модуле в формате String.

После того, как обучаемый модуль обучен, его иконка поменяет цвет:

Оценка качества

Функция Оценить возвращает набор оценочных метрик:

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

Предсказания

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

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

Если бы фактические значения были нам не известны, то есть нам было бы необходимо сделать предсказания на новых экземплярах данных, полученная таблица выглядела бы так:

Использование процессов при работе с обучаемым модулем

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

Сначала мы обучаем обучаемый модуль, затем оцениваем его качество. Результаты функции Оценить показываются пользователю. Если пользователь решает, что значение какой-либо оценочной метрики неудовлетворительно, пользователю показываются свойства обучаемого модуля. Пользователь реконфигурирует обучаемый модуль (т.е. меняет некоторые гиперпараметры выбранного алгоритма. после этого процессы обучения и оценки повторяются. Когда пользователь сочтет результаты вычисления удовлетворительными, процесс продолжается функцией Использовать. Затем результаты функции демонстрируются пользователю.

Используя контекст Процессов, можно полностью автоматизировать процесс настройки гиперпараметров.