Поделиться через


Руководство по прогнозированию цен с помощью регрессии с помощью построителя моделей

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

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

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

Необходимые условия

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

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

Создайте консольное приложение C# с именем TaxiFarePrediction. Убедитесь, что Место решения и проекта в том же каталогебез флажка.

Подготовка и понимание данных

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

  2. Набор данных, используемый для обучения и оценки модели машинного обучения, изначально находится в наборе данных NYC TLC Taxi Trip.

    1. Чтобы скачать набор данных, перейдите по ссылке для скачивания taxi-fare-train.csv.

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

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

  3. В обозревателе решений щелкните правой кнопкой мыши файл taxi-fare-train.csv и выберите Свойства. В разделе Advancedизмените значение параметра Copy to Output Directory на Copy if newer.

Каждая строка в наборе данных 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, используются в качестве функций или входных данных для прогнозирования суммы тарифа.

Создание файла конфигурации построителя моделей

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

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

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

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

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

  1. На шаге сценария средства построителя моделей выберите сценарий прогнозирования значений.

Выбор среды

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

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

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

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

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

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

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

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

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

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

  • Состояние отображает состояние завершения процесса обучения.
  • Лучшая точность отображает точность оптимальной модели, найденной конструктором моделей до сих пор. Более высокая точность означает, что модель предсказала более правильно в тестовых данных.
  • Лучший алгоритм отображает имя оптимального алгоритма, который был найден конструктором моделей до сих пор.
  • Последний алгоритм отображает имя алгоритма, который недавно использовался конструктором моделей для обучения модели.

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Присвойте проекту консоли имя TaxiFare_Console.

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

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

    Выходные данные, созданные программой, должны выглядеть следующим образом:

    Predicted Fare: 15.020833
    

Веб-API

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

  1. Присвойте проекту веб-API имя TaxiFare_API.

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

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

  4. Откройте PowerShell и введите следующий код, в котором ПОРТ является портом, в котором приложение прослушивается.

    $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
    

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