ВВЕДЕНИЕ

Я создал визуальный дизайнер рабочих процессов (VisualML Studio) для библиотеки Microsoft ML.NET, которая работает локально. Это упрощает обучение и обработку машинного обучения. Одной из сильных сторон являются основы для простых моделей и обмена проектами.

Его также легко расширять с помощью кода C#, поэтому нет необходимости изучать Python.

VisualML Studio является частью стека оркестровки микросервисов Zenody с открытым исходным кодом.

УСТАНОВКА

Загрузите и извлеките готовые бинарные файлы со страницы релизы.
Проверьте последнюю версию и в разделе Активы найдите бинарные файлы для вашей ОС (visual_ml_studio_*)

Этот комплект содержит:

  • VisualML Studio, позволяющая создавать и обучать модели визуально.
  • Вычислительный движок, выполняющий сценарий, созданный в VisualML Studio.
  • Среда выполнения NetCore, размещенная в этом пакете, поэтому вам не нужно устанавливать ее на свой компьютер.

Теперь вы загрузите визуальный скрипт (шаблон) прогноза стоимости такси, чтобы вам не пришлось создавать его с нуля. Вам просто нужно будет принять несколько свойств для вашей среды (путь к файлам) во время этого руководства.

  • Перейдите на страницу релизов визуальных шаблонов. Загрузите и извлеките визуальный скрипт TaxiFarePrediction.zip из последней версии.
  • Перейдите в папку ZenEngine\project\HelloWorld в корневом каталоге VisualML Studio. Скопируйте assets и DB из извлеченного файла TaxiFarePrediction.zip в эту папку.

Это проект с открытым исходным кодом из следующих репозиториев:

СДЕЛАЕМ НЕСКОЛЬКО ПРОГНОЗОВ

Этот учебник основан на прогнозах по тарифам такси. Вы можете прочитать больше в Репозиторий ML NET Samples github.

Здесь также отличная статья о прогнозах Taxi Fares, написанная на ML.NET. Мы собираемся расширить этот пример визуально, чтобы даже не разработчики могли легко делать такие прогнозы.

Описание проблемы взято из официального репозитория GitHub:

«Эта задача связана с прогнозированием стоимости поездки на такси в Нью-Йорке. На первый взгляд может показаться, что она зависит просто от пройденного расстояния. Однако продавцы такси в Нью-Йорке взимают различные суммы за другие факторы, такие как дополнительные пассажиры, оплата кредитной картой вместо наличных и так далее. Этот прогноз можно использовать в приложении для поставщиков такси, чтобы дать пользователям и водителям оценку стоимости поездки».

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

После загрузки готовых двоичных файлов запустите VisualML Studio, щелкнув исполняемый файл visual-ml-studio.

Нажмите кнопку Открыть шаблон в визуальном дизайнере и выберите корневой путь к шаблону, сохраненному в visual_ml_studio_win\ZenEngine\project\HelloWorld.

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

  1. Первый элемент — Start — представляет собой точку входа для выполнения шаблона.
  2. Второй элемент — ML Context. Это отправная точка для обучения, прогнозирования, модельных операций и служит каталогом доступных операций. Контекст машинного обучения необходим для всех ваших конвейеров.
  3. Следующая — Схема загрузчика текста ML. Мы собираемся читать данные из файлов CSV, и здесь мы определяем структуру данных (присваиваем имена столбцам).
  4. После определения схемы ML Text Loader считывает данные из CSV-файла.
  5. Конвейер обработки данных машинного обучения — это набор алгоритмов преобразования данных, необходимых для обучения модели.
  6. Обучающий конвейер машинного обучения — это набор операций обучения. Здесь также определяется, какой алгоритм обучения будет использоваться для прогнозирования стоимости такси.
  7. Test Loader Test считывает тестовые данные для оценки обученной модели.
  8. Оценка модели ML выполняет оценку обученной модели и распечатывает результат (показатели).

Давайте рассмотрим каждый из элементов поближе.

Схема загрузчика текста ML

При нажатии на элемент Схема загрузчика текста ML вы увидите кнопку Определить схему. Откроется следующий вид:

Это определения столбцов из файла taxi-fare-train.csv (позже вам нужно будет указать путь к файлу). Здесь вы можете увидеть столбцы и типы данных, которые будут использоваться в конвейерах обработки данных.

Загрузчик текста ML (требуется ввод вручную)

Этот элемент считывает данные из файлов. Здесь вы должны выбрать путь к файлу taxi-fare-train.csv на вашем компьютере. CSV-файл является частью пакета, который вы можете найти в корневом каталоге VisualML Studio: \visual_ml_studio_win\ZenEngine\project\HelloWorld\assets\taxi-fare-train.csv

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

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

  1. Первой операцией конвейера обработки данных является DPCopyColumns, которая копирует столбец FareAmount в новый столбец с именем Label. В этом столбце Label содержится фактическая стоимость проезда на такси, которую должна предсказать модель.
  2. Следующие три элемента представляют собой одно горячее кодирование, выполняющее операции с тремя столбцами, содержащими перечисляемые данные: VendorId, RateCode и PaymentType. Это обязательный шаг, поскольку модели машинного обучения не могут напрямую обрабатывать перечисляемые данные. Это текстовые поля, и это преобразование применяется к ним. Об одной горячей кодировке можно прочитать здесь
  3. Следующие три элемента (PassengerCount, TripTime и TripDistance) представляют собой преобразователи нормализации средней дисперсии, которые вычисляют среднее значение и дисперсию обучающие данные в процессе обучения модели. Эти данные представлены в числовой форме, но мы не хотим воспринимать их необработанными, поэтому мы применяем метод нормализации к этим столбцам, чтобы улучшить результаты прогнозирования. Другими методами нормализации могут быть Normalize Log Mean Variance, Normalize Lp Norm, Normalize Min Max и многие другие.
  4. Последней является операция Объединить, которая объединяет все столбцы входных данных в один столбец под названием «Функции» (ML.NET обучается на одном входном столбце). Это обеспечивает механизм для построения совокупного поля (Функции).

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

Канал обучения машинному обучению

На этом шаге вы определяете алгоритм обучения, столбцы Feature и Label.

Тест загрузчика текста (требуется ввод вручную)

На этом этапе модель построена. Все, что нужно сделать, это подтвердить его. Этот элемент загружает обучающие данные. Выберите путь к файлу taxi-fare-test.csv на своем компьютере (тот же путь, который вы уже указали для файла taxi-fare-train.csv).

Оценка модели машинного обучения (требуется ручной ввод)

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

* После того, как путь установлен, снова нажмите Оценка модели ML, чтобы он окрасился в красный цвет.

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

Частью платформы VisualML будет стандартизированный обмен моделями (рынок обучающих моделей), который будет предлагать простой обмен и использование предварительно обученных моделей внутри Visual ML Studio.

Теперь вы можете нажать кнопку Сохранить шаблон, чтобы сохранить измененные пути.

СОЗДАТЬ И ОЦЕНИТЬ МОДЕЛЬ

Чтобы запустить выполнение шаблона, нажмите кнопку Запустить шаблон.

Это даст вам следующий результат:

Процесс оценки выводит следующие показатели для регрессии:

  • Rms: коэффициент детерминации представляет прогностическую силу модели как значение от -inf до 1,00. 1,00 означает идеальное соответствие, а соответствие может быть сколь угодно плохим, поэтому оценки могут быть отрицательными. Оценка 0,00 означает, что модель угадывает ожидаемое значение для метки. R2 измеряет, насколько близки фактические значения тестовых данных к прогнозируемым значениям. Чем ближе к 1.00, тем лучше качество. Однако иногда низкие значения R-квадрата (например, 0,50) могут быть совершенно нормальными или достаточно хорошими для вашего сценария, а высокие значения R-квадрата не всегда хороши и вызывают подозрения.
  • Абсолютная потеря: измеряет, насколько прогнозы близки к фактическим результатам. Это среднее значение всех ошибок модели, где ошибка модели — это абсолютное расстояние между предсказанным значением метки и правильным значением метки. Эта ошибка предсказания вычисляется для каждой записи набора тестовых данных. Наконец, вычисляется среднее значение для всех зарегистрированных абсолютных ошибок. Чем ближе к 0.00, тем лучше качество. Обратите внимание, что средняя абсолютная ошибка использует ту же шкалу, что и измеряемые данные (не нормализована к определенному диапазону). Абсолютные потери, квадратичные потери и среднеквадратичные потери можно использовать только для сравнения моделей для одного и того же набора данных или набора данных с одинаковым распределением значений меток.
  • Square Loss: показывает, насколько близка линия регрессии к набору значений тестовых данных. Он делает это, беря расстояния от точек до линии регрессии (эти расстояния являются ошибками E) и возводя их в квадрат. Возведение в квадрат придает больший вес большим различиям. Он всегда неотрицательный, и значения ближе к 0,00 лучше. В зависимости от ваших данных может оказаться невозможным получить очень маленькое значение среднеквадратичной ошибки.
  • Потеря RMS: измеряет разницу между значениями, предсказанными моделью, и значениями, фактически наблюдаемыми в моделируемой среде. Среднеквадратичные потери представляют собой квадратный корень из квадратных потерь и имеют те же единицы измерения, что и метка, аналогичны абсолютным потерям, но придают больший вес большим различиям. Среднеквадратическая ошибка обычно используется в климатологии, прогнозировании и регрессионном анализе для проверки экспериментальных результатов. Он всегда неотрицательный, и значения ближе к 0,00 лучше. RMSD — это мера точности для сравнения ошибок прогнозирования различных моделей для определенного набора данных, а не между наборами данных, поскольку он зависит от масштаба.

Итак, если все прошло хорошо, вы сможете предсказать стоимость проезда на такси в следующий раз, когда будете в Нью-Йорке :)

Во второй статье я доработал кейс Прогнозирование тарифов на такси.

ЗАКЛЮЧЕНИЕ

VisualML Studio все еще находится в стадии разработки с этими функциями в дорожной карте:

  • Улучшения UX и пользовательского интерфейса
  • Дополнительные реализации объектной модели ML.NET
  • Реализация объектной модели TensorFlow.NET
  • Обмен простыми моделями и шаблонами
  • ML-визуализации

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

Любые отзывы или идеи по улучшению VisualML Studio будут высоко оценены.

Следите за обновлениями и желаю вам точных прогнозов, распознавания объектов и всей прелести машинного обучения :)