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

KNNRegressor

KNNRegressor — модель регрессии, основанная на ближайших соседях. Она предсказывает число по похожим объектам.

Например, если нужно предсказать цену квартиры, модель ищет квартиры с похожей площадью и усредняет их цены.

KNNRegressor работает почти так же, как KNNClassifier, но результат другой.

МодельЧто делает с ближайшими соседямиОтвет
KNNClassifierголосует за класскатегория
KNNRegressorусредняет значениячисло

Если k = 3, модель берет три ближайших объекта и считает среднее значение их ответов.

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

uses MLABC;
begin
var df := DataFrame.FromCsvText('''
Площадь,Цена
35,5.2
42,6.1
50,7.4
58,8.0
65,9.1
72,10.2
80,11.0
90,12.4
''');
var X := df.ToMatrix(['Площадь']);
var y := df.ToVector('Цена');
var model := new KNNRegressor(3);
model.Fit(X, y);
var example := Vector([70.0]);
var pred := model.PredictOne(example);
Println('Площадь:', example[0]:0:0);
Println('Предсказанная цена:', pred:0:2);
end.

Вывод:

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

Для квартиры площадью 70 модель берет три ближайшие квартиры: 65, 72 и 80 квадратных метров. Затем усредняет их цены:

(9.1 + 10.2 + 11.0) / 3 = 10.1

k — это число ближайших соседей, которые участвуют в предсказании.

Если k маленькое, модель сильнее реагирует на отдельные объекты. Если k большое, предсказания становятся более сглаженными.

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

Если признаков несколько, например Площадь, ЦенаРемонта, Этаж, то признаки могут иметь очень разные масштабы. В таких задачах перед KNN часто используют StandardScaler.

KNNRegressor подходит, когда похожие объекты обычно имеют похожие числовые ответы.

Примеры:

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