Перейти к содержимому

LinearRegression

LinearRegression — простая модель регрессии. Она используется, когда нужно предсказать числовое значение.

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

Если есть один признак x, линейная регрессия использует знакомую формулу прямой:

y = a * x + b

Но в машинном обучении главное не сама формула, а то, как находятся числа a и b.

Здесь:

x — признак, например площадь квартиры;

y — предсказываемое значение, например цена;

a и b — параметры модели, которые подбираются во время обучения.

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

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

В этом примере модель учится предсказывать цену квартиры по площади.

uses MLABC, PlotML;
begin
var df := DataFrame.FromCsvText('''
Площадь,Цена
35,4.8
42,5.7
50,7.9
58,7.9
65,8.2
72,10.4
80,10.5
90,12.5
''');
var X := df.ToMatrix(['Площадь']);
var y := df.ToVector('Цена');
var model := new LinearRegression;
model.Fit(X, y);
var example := Vector([70.0]);
var pred := model.PredictOne(example);
Println('Площадь:', example[0]:0:0);
Println('Предсказанная цена:', pred:0:2);
Plot.Title := 'Линейная регрессия';
Plot.XLabel := 'Площадь';
Plot.YLabel := 'Цена';
Plot.Points(X.Col(0), y);
var line := model.RegressionLine;
Plot.Line(line.K, line.B, Colors.Red);
Plot.Point(example[0], pred, Colors.Black, size := 8);
end.

Вывод:

Площадь: 70
Предсказанная цена: 9.61

Программа также строит график:

График линейной регрессии

Черная точка на графике показывает новую квартиру, для которой модель предсказала цену. Красная линия показывает зависимость, которую нашла модель.

  1. Создается таблица с площадью и ценой квартир.
  2. Столбец Площадь преобразуется в матрицу признаков X.
  3. Столбец Цена становится целевой переменной y.
  4. Модель обучается вызовом model.Fit(X, y).
  5. Для квартиры площадью 70 модель предсказывает цену.

LinearRegression хорошо подходит, когда зависимость примерно похожа на прямую линию.

Примеры:

  • цена квартиры примерно растет с площадью;
  • время выполнения задачи растет с размером входных данных;
  • расход материала растет с длиной или площадью изделия.
  • модель простая и быстрая;
  • результат легко объяснить;
  • хорошо подходит для первого знакомства с регрессией.
  • плохо описывает сложные нелинейные зависимости;
  • чувствительна к выбросам;
  • все признаки должны быть числовыми.

После первой модели регрессии важно научиться честно оценивать ее качество. Для этого используют метрики MAE, MSE, RMSE и R2 Score.