8. Линейная регрессия с нуля

☰ Теория

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

Для линейной модели используйте MSE и градиентный спуск. Если признаки имеют разные масштабы, статистики стандартизации вычисляйте только по обучающей выборке, а затем применяйте те же μ и s к тестовой.

Подробно: Все веса сразу.

Мини-проект: обучите модель и сделайте прогноз

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

Скачайте три файла:

  • train.csv — обучающая выборка;
  • test.csv — заказы, для которых нужно предсказать время;
  • sample_submission.csv — образец файла, который нужно загрузить в ответ.

Признаки:

  • km — расстояние в километрах;
  • traffic_lights — число светофоров;
  • couriers — число доступных курьеров.

Целевая переменная minutes есть только в train.csv.

Модель

Обучите линейную регрессию:

prediction = w1 · km + w2 · traffic_lights + w3 · couriers + b

Для обучения используйте градиентный спуск и MSE. Готовые реализации линейной регрессии и готовые оптимизаторы из библиотек машинного обучения использовать не нужно: цель задания — самостоятельно собрать обучение модели из тех шагов, которые были разобраны в теории.

Что нужно сделать

  1. Прочитайте train.csv.
  2. Подготовьте признаки. Так как они имеют разные масштабы, удобно стандартизировать их. Средние и стандартные отклонения вычисляйте только по train.
  3. Задайте начальные значения параметров модели.
  4. Обучите модель градиентным спуском:
    • получайте прогнозы;
    • вычисляйте промахи и MSE;
    • вычисляйте градиенты по всем параметрам;
    • обновляйте параметры против градиента;
    • повторяйте, пока не получите достаточно хорошую модель.
  5. Самостоятельно выберите скорость обучения lr и число шагов. При необходимости экспериментируйте и следите, уменьшается ли MSE на обучающей выборке.
  6. Прочитайте test.csv. Если использовали стандартизацию, примените к test те же средние и стандартные отклонения, которые были найдены по train. Не пересчитывайте их по test.
  7. Не меняя уже обученные веса, получите прогноз для каждой строки test.csv.
  8. Сохраните прогнозы в файл submission.csv в том же формате, что и sample_submission.csv.

Как именно организовать программу — решаете вы. Можно использовать отдельные переменные w1, w2, w3, можно список весов, можно разбить решение на функции. Проверяющая система видит только итоговый файл с прогнозами.

Формат ответа

Загрузите CSV-файл ровно с двумя столбцами:

id,prediction

В нём должна быть одна строка для каждого id из test.csv. Порядок строк не важен.

Проверяющая система знает настоящие времена доставки для тестовой выборки и вычисляет:

MSE = среднее((prediction − minutes)²)

Решение засчитывается, если MSE ≤ 10.0.

Главная идея: train.csv используется для обучения параметров модели, а test.csv — только для применения уже обученной модели. Правильных ответов для test вы не видите.


Ваш ответ

Для проверки решения задачи необходимо зарегистрироваться или авторизоваться!


Последний прикрепленный файл:

Выберите правильный ответ, либо введите его в поле ввода

Комментарий учителя