Задание

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

library(readr)
library(dplyr)
library(ggplot2)
library(tidyr)
library(tibble)
library(Metrics)
library(rsample)
library(fastDummies)

Задача:

У вас есть два набора данных: train (обучающий) и test (тестовый). В этих наборах есть три переменные: y, x1 и x2. Вам нужно обучить модель, которая будет предсказывать переменную y. Обучаете вы модель вы на train, а проверяете ее качество на test. В качестве меры качества возьмем MAE.

План работы:

  1. Помните, что вы работаете только с датасетом train. На датасете test вы только проверяете качество вашей модели.
  2. Попробуйте изучить ваши переменные. Какие они: числовые или категориальные? Попробуйте нарисовать график зависимости таргета (y) от признаков (x1, x2). Пострайтесь нанести все на один график, чтобы понять как устроена зависимость.
  3. Постройте сначала примитивную модель (baseline), например константную. Посчитайте MAE и поймите много это или мало.
  4. Постройте простую линейную регрессию. Посчитайте MAE. Лучше ли эта модель чем baseline? Нарисуйте график: по оси x прогноз, по оси y истинное значение. На этот же график нарисуйте биссектрису из точки (0, 0). Этот график поможет понять вам хорошо ли вы прогнозируете. На нем вы будете видеть систематические ошибки вашей модели.
  5. Пытайтесь улучшить вашу модель, то есть уменьшить MAE на тестовом наборе как можно сильнее.
  6. Лучшее MAE, которого можно достичь равно 3.92. То есть около 4.

Решение

Подгрузим данные.

train_url <- 'https://raw.githubusercontent.com/ahmedushka7/R/master/docs/homeworks/hw3/data/train.csv'
test_url <- 'https://raw.githubusercontent.com/ahmedushka7/R/master/docs/homeworks/hw3/data/test.csv'
train <- read_csv(train_url)
## Parsed with column specification:
## cols(
##   y = col_double(),
##   x1 = col_double(),
##   x2 = col_double()
## )
test <- read_csv(test_url)
## Parsed with column specification:
## cols(
##   y = col_double(),
##   x1 = col_double(),
##   x2 = col_double()
## )

Дальше ваше творчество