Учебник. Прогнозирование цен с помощью регрессии с использованием Model Builder

Узнайте, как с помощью построителя моделей ML.NET создать модель регрессии для прогнозирования цен. Консольное приложение .NET, разрабатываемое в этом учебнике, прогнозирует плату за проезд в такси по Нью-Йорку на основе исторических данных.

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

В этом руководстве вы узнаете, как:

  • Подготовка и анализ данных
  • Создание файла конфигурации Model Builder
  • Выбор сценария
  • Загрузка данных
  • Обучение модели
  • Оценка модели
  • Использование модели для прогнозирования

Предварительные требования

Список необходимых условий и инструкции по установке см. в руководстве по установке построителя моделей.

Создание консольного приложение

  1. Создайте консольное приложение .NET Core C# с именем TaxiFarePrediction. Снимите флажокРазместить решение и проект в одном каталоге (VS 2019).

Подготовка и анализ данных

  1. Создайте каталог с именем Data в папке проекта, чтобы сохранить в нем файлы набора данных.

  2. Набор данных, используемый для обучения и оценки модели машинного обучения, создан на основе данных Комиссии по лицензированию перевозок автотранспортом города Нью-Йорк (TLC).

    1. Скачать набор данных можно по этой ссылке.

    2. При загрузке страницы щелкните правой кнопкой мыши в любом месте и выберите в меню команду Сохранить как.

    3. В диалоговом окне Сохранить как сохраните файл в созданную ранее папку Data.

  3. В обозревателе решений щелкните правой кнопкой мыши файл taxi-fare-train.csv и выберите пункт Свойства. В разделе Дополнительно для параметра Копировать в выходной каталог установите значение Копировать более позднюю версию.

Каждая строка в наборе данных taxi-fare-train.csv содержит сведения о поездках в такси.

  1. Откройте набор данных taxi-fare-train.csv.

    Предоставленный набор данных содержит следующие столбцы:

    • vendor_id: идентификатор поставщика услуг такси — это признак.
    • rate_code: тип тарифа для поездки на такси — это признак.
    • passenger_count: число пассажиров в поездке — это признак.
    • trip_time_in_secs: время, затраченное на поездку. Вам требуется спрогнозировать плату за одну поездку до того, как поездка будет завершена. На этот момент вам неизвестна продолжительность поездки. Таким образом, продолжительность поездки не является признаком и соответствующий столбец следует исключить из модели.
    • trip_distance: расстояние поездки — это признак.
    • payment_type: метод оплаты (наличные или кредитная карта) — это признак.
    • fare_amount: общая сумма, уплаченная за поездку на такси, — это метка.

label — это столбец, который необходимо спрогнозировать. Цель задачи регрессии — прогнозирование числового значения. В этом сценарии прогнозируется стоимость поездки в такси. Поэтому меткой является fare_amount. Выбранные признаки (features) — это входные данные, которые вы предоставляете модели для прогнозирования метки (label). В этом случае остальные столбцы, исключая trip_time_in_secs, используются в качестве признаков или входных данных для прогнозирования стоимости поездки.

Создание файла конфигурации Model Builder

При первом добавлении Model Builder в решение вам будет предложено создать файл mbconfig. В файле mbconfig отслеживается все, что вы делаете в Model Builder, что позволяет вам повторно открыть сеанс.

  1. В Обозревателе решений щелкните правой кнопкой мыши проект TaxiFarePrediction и выберите Добавить>Модель машинного обучения... .
  2. Назовите проект mbconfigTaxiFarePrediction и нажмите кнопку Добавить.

Выбор сценария

Экран сценария построителя моделей

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

  1. На этапе выбора сценария выберите Прогнозирование значений.

Выбор среды

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

  1. Убедитесь, что элемент Local (CPU) выбран, и нажмите кнопку Следующий шаг.

Загрузка данных

Построитель моделей принимает данные из двух источников: базы данных SQL Server или локального файла в формате CSV или TSV.

  1. На этапе добавления данных выберите в раскрывающемся списке источников данных Файл.
  2. Нажмите кнопку Обзор рядом с текстовым полем и выберите в проводнике файл taxi-fare-test.csv в каталоге Data.
  3. Выберите fare_amount в раскрывающемся списке Column to Predict (Label) (Столбец для прогнозирования (метка)).
  4. Щелкните ссылку Дополнительные параметры данных.
  5. На вкладке Параметры столбца выберите раскрывающийся список Назначение для столбца trip_time_in_secs и выберите Пропустить, чтобы исключить его в качестве функции во время обучения. Нажмите кнопку Сохранить, чтобы закрыть диалоговое окно.
  6. Нажмите кнопку Следующий шаг.

Обучение модели

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

Время, требуемое для обучения модели, пропорционально объему данных. Построитель моделей автоматически выбирает значение по умолчанию для параметра Time to train (seconds) (Время обучения в секундах) в зависимости от размера источника данных.

  1. Оставьте значение по умолчанию для параметра Time to train (seconds) (Время обучения в секундах), если только вы не хотите проводить обучение более длительное время.
  2. Выберите Начать обучение.

В процессе обучения сведения о ходе выполнения отображаются в разделе Training results шага обучения.

  • "Состояние" — это состояние завершения процесса обучения.
  • Наилучшая точность показывает точность наиболее производительной модели, найденной На данный момент Model Builder. Точность зависит от того, насколько правильный прогноз был сделан моделью на основе тестовых данных.
  • Лучший алгоритм отображает имя наиболее производительного алгоритма, найденного Model Builder до сих пор.
  • Последний алгоритм отображает имя алгоритма, который последний раз использовался построителем моделей для обучения модели.

После завершения обучения файл mbconfig будет содержать созданную модель TaxiFarePrediction.zip, а также будут добавлены два файла C#:

  • TaxiFare.consumption.cs.consumption.cs — этот файл имеет открытый метод, который загружает модель, создает механизм прогнозирования и возвращает прогноз.
  • TaxiFare.training.cs — этот файл состоит из конвейера обучения, с помощью которого Model Builder создает лучшую модель, включая используемые гиперпараметры.

Нажмите кнопку Следующий шаг, чтобы перейти к шагу оценки.

Оценка модели

Результат обучения — одна модель с наивысшей точностью. На шаге оценки Model Builder в разделе Лучшая модель будет указан алгоритм, используемый оптимальной моделью в записи Модель, а также метрики для этой модели в записи RSquared.

Кроме того, в окне вывода Visual Studio появится сводная таблица, содержащая лучшие модели и их метрики.

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

Если вас не удовлетворяют метрики точности, самые простые способы повысить точность модели — увеличить длительность обучения или использовать больше данных. В противном случае нажмите кнопку Следующий шаг, чтобы перейти к шагу использования.

(Необязательно.) Использование модели

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

  • Консольное приложение
  • Веб-интерфейс API

Консольное приложение

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

  1. Назовите консольный проект TaxiFare_Console.

  2. Нажмите кнопку Добавить в решение, чтобы добавить проект в текущее решение.

  3. Запустите приложение.

    Выходные данные программы должны выглядеть примерно так:

    Predicted Fare: 15.020833
    

Веб-интерфейс API

При добавлении веб-API в решение вам будет предложено присвоить имя проекту.

  1. Назовите проект веб-API TaxiFare_API.

  2. Нажмите кнопку Добавить в решение*, чтобы добавить проект в текущее решение.

  3. Запустите приложение.

  4. Откройте PowerShell и введите следующий код, где PORT — это порт, который прослушивается приложением.

    $body = @{
        Vendor_id="CMT"
        Rate_code=1.0
        Passenger_count=1.0
        Trip_distance=3.8
        Payment_type="CRD"
    }
    
    Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
    
  5. В случае успешного выполнения результат должен выглядеть, как показано ниже:

    score
    -----
    15.020833
    

Next Steps

В этом руководстве вы узнали, как:

  • Подготовка и анализ данных
  • Выбор сценария
  • Загрузка данных
  • Обучение модели
  • Оценка модели
  • Использование модели для прогнозирования

Дополнительные ресурсы

Дополнительные сведения см. в следующих статьях: