Руководство по прогнозированию цен с помощью регрессии с помощью построителя моделей
В этом руководстве вы узнаете, как с помощью построителя моделей ML.NET создать модель регрессии для прогнозирования цен. Консольное приложение .NET, которое вы разрабатываете в этом руководстве, прогнозирует тарифы на такси на основе исторических данных о тарифах на такси в Нью-Йорке.
- Подготовка и понимание данных
- Создание файла конфигурации построителя моделей
- Выбор сценария
- Загрузка данных
- Обучение модели
- Оценка модели
- Использование модели для прогнозирования
Шаблон прогнозирования цен для построителя моделей можно использовать для любого сценария, требующего числового значения прогнозирования. Примеры сценариев: прогнозирование цен на жилье, прогнозирование спроса и прогнозирование продаж.
Необходимые условия
Список необходимых компонентов и инструкций по установке см. в руководстве по установке конструктора моделей .
Создание консольного приложения
Создайте консольное приложение C#
Подготовка и понимание данных
Создайте каталог с именем Data в проекте для хранения файлов набора данных.
Набор данных, используемый для обучения и оценки модели машинного обучения, изначально находится в наборе данных NYC TLC Taxi Trip.
Чтобы скачать набор данных, перейдите по ссылке для скачивания taxi-fare-train.csv.
Когда страница загружается, щелкните правой кнопкой мыши в любом месте страницы и выберите Сохранить как.
Используйте диалоговое окно Сохранить как, чтобы сохранить файл в папке Data, созданной на предыдущем шаге.
В обозревателе решений щелкните правой кнопкой мыши файл taxi-fare-train.csv и выберите Свойства. В разделе Advancedизмените значение параметра Copy to Output Directory на Copy if newer.
Каждая строка в наборе данных taxi-fare-train.csv
содержит сведения о поездках, сделанных такси.
Открытие набора данных 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
отслеживает все, что вы делаете в построителе моделей, чтобы разрешить повторно открыть сеанс.
- В обозревателе решенийщелкните правой кнопкой мыши проект TaxiFarePrediction и выберите Добавить>модель машинного обучения.
- Назовите проект
mbconfig
«TaxiFarePrediction», затем нажмите кнопку «Добавить».
Выбор сценария
Экран сценария построителя моделей
Чтобы обучить модель, необходимо выбрать из списка доступных сценариев машинного обучения, предоставляемых Конструктором моделей. В этом случае сценарий Value prediction
.
- На шаге сценария средства построителя моделей выберите сценарий прогнозирования значений.
Выбор среды
Построитель моделей может выполнять обучение в разных средах в зависимости от выбранного сценария.
- Убедитесь, что выбран элемент
Local (CPU)
и нажмите кнопку Следующий шаг.
Загрузка данных
Построитель моделей принимает данные из двух источников, базы данных SQL Server или локального файла в формате CSV или tsv.
- На шаге данных инструмента построения моделей выберите Файл в списке типа источника данных.
- Нажмите кнопку Browse рядом с текстовым полем и используйте Проводник файлов, чтобы просмотреть и выбрать taxi-fare-test.csv в каталоге Data.
- Выберите fare_amount в столбце для прогнозирования (метки) раскрывающегося списка.
- Щелкните ссылку Дополнительные параметры данных.
- На вкладке «Настройки столбца»
выберите из раскрывающегося списка «Назначение» для столбцаtrip_time_in_secs и выберите«Игнорировать» , чтобы исключить его как признак при обучении. Нажмите кнопку Сохранить, чтобы закрыть диалоговое окно. - Нажмите кнопку Следующий шаг.
Обучение модели
Задача машинного обучения, используемая для обучения модели прогнозирования цен в этом руководстве, является регрессией. Во время обучения модели конструктор моделей обучает отдельные модели с помощью различных алгоритмов регрессии и параметров, чтобы найти оптимальную модель для набора данных.
Время, необходимое для обучения модели, пропорционально объему данных. Построитель моделей автоматически выбирает значение по умолчанию для времени обучения (в секундах) в зависимости от размера вашего источника данных.
- Оставьте значение по умолчанию для Время обучения (секунд), если вы не хотите увеличивать продолжительность обучения.
- Выберите Начать обучение.
На протяжении всего учебного процесса данные о прогрессе отображаются в разделе Training results
шага тренировки.
- Состояние отображает состояние завершения процесса обучения.
- Лучшая точность отображает точность оптимальной модели, найденной конструктором моделей до сих пор. Более высокая точность означает, что модель предсказала более правильно в тестовых данных.
- Лучший алгоритм отображает имя оптимального алгоритма, который был найден конструктором моделей до сих пор.
- Последний алгоритм отображает имя алгоритма, который недавно использовался конструктором моделей для обучения модели.
После завершения обучения файл mbconfig
будет содержать созданную модель с именем TaxiFarePrediction.zip
и два файла C#:
- TaxiFare.consumption.cs: этот файл имеет открытый метод, который загружает модель и создает подсистему прогнозирования с ним и возвращает прогноз.
- TaxiFare.training.cs: этот файл представляет собой обучающий конвейер, разработанный Конструктором моделей для создания оптимальной модели, включая все используемые гиперпараметры.
Нажмите кнопку Следующий шаг, чтобы перейти к шагу оценки.
Оценка модели
Результатом этапа обучения будет одна модель, которая имела лучшую производительность. На шаге оценки средства построителя моделей в разделе Best model будет содержаться алгоритм, используемый оптимальной моделью в записи модели, а также метрики для этой модели в RSquared.
Кроме того, в окне выходных данных Visual Studio будет сводная таблица, содержащая лучшие модели и их метрики.
В этом разделе также можно протестировать модель, выполнив один прогноз. Предусмотрены текстовые поля для ввода значений, и вы можете нажать кнопку "Предсказать", чтобы получить прогноз от лучшей модели. По умолчанию это будет заполнено случайной строкой в наборе данных.
Если вы не удовлетворены метриками точности, некоторые простые способы попробовать и улучшить точность модели— увеличить количество времени для обучения модели или использования дополнительных данных. В противном случае нажмите на кнопку Следующий шаг, чтобы перейти к шагу потребления.
(Необязательно) Использовать модель
На этом шаге будут использоваться шаблоны проектов, которые можно использовать для использования модели. Этот шаг является необязательным, и вы можете выбрать метод, который лучше всего соответствует вашим потребностям в том, как обслуживать модель.
- Консольное приложение
- Веб-API
Консольное приложение
При добавлении консольного приложения в решение вам будет предложено указать имя проекта.
Присвойте проекту консоли имя TaxiFare_Console.
Щелкните Добавить в решение, чтобы добавить проект в текущее решение.
Запустите приложение.
Выходные данные, созданные программой, должны выглядеть следующим образом:
Predicted Fare: 15.020833
Веб-API
При добавлении веб-API в решение вам будет предложено назвать проект.
Присвойте проекту веб-API имя TaxiFare_API.
Нажмите кнопку Добавить в решение* , чтобы добавить проект в текущее решение.
Запустите приложение.
Откройте 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"
При успешном выполнении выходные данные должны выглядеть следующим образом:
score ----- 15.020833
Связанное содержимое
Дополнительные сведения о разделах, упомянутых в этом руководстве, см. в следующих ресурсах:
- Сценарии модельного конструктора
- регрессия
- Метрики модели регрессии
- набор данных TLC о поездках на такси в Нью-Йорке