Image

«Адвент-календарь» машинного обучения. День 1: Регрессор k-NN в Excel

Узнайте, как простая формула расстояния становится прогностической моделью, шаг за шагом в Excel

Делиться

a9995e466ad9e5c5ff40d16f78fe25e3

Добро пожаловать в этот «Рождественский календарь» машинного обучения и глубокого обучения в Excel.

В первый день мы начнём с алгоритма регрессора k-NN (k-ближайших соседей). Как вы увидите, это действительно самая простая модель, и она отлично подойдёт для начала.

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

  • Важно ли масштабирование непрерывных признаков для этой модели?
  • Как можно обрабатывать категориальные признаки?
  • Что следует сделать с непрерывными функциями, чтобы улучшить производительность модели?
  • Какие типы измерения расстояния могут быть более подходящими в определённых ситуациях? Например, при прогнозировании цен на жильё, где географическое положение имеет значение?

Спойлер: с помощью наивного k-NN вы не сможете автоматически получить идеальное масштабирование.

Это также возможность, если вы не знакомы с формулами Excel, использовать такие формулы, как РАНГ, ЕСЛИ, СУММПРОИЗВ и другие полезные функции Excel.

Вы можете воспользоваться этой ссылкой, чтобы получить файл Excel/Google Sheets, и я советую вам ознакомиться со статьей и провести небольшое тестирование файла, чтобы лучше понять его.

be43fc4a9187855b36e682a8f6027247

Принцип k-NN

Если вы хотите продать или купить квартиру, как бы вы оценили цену?

Пожалуйста, подумайте о реалистичном подходе, а не о какой-то сложной модели, на построение которой вам придется потратить часы.

Что-то, что вы можете сделать по-настоящему.

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

Да, именно в этом и заключается идея k-NN (k-ближайших соседей): поиск наиболее похожих примеров и использование их значений для оценки нового.

Чтобы проиллюстрировать эту задачу на конкретном примере оценки стоимости жилья, мы воспользуемся известным набором данных California Housing Dataset. Это данные переписи населения, полученные в жилых кварталах Калифорнии, которые используются для прогнозирования медианной стоимости жилья .

bdcfc4a54e26568757fa9d80d78d7ec3

Каждое наблюдение не является отдельным домом, но все равно интересно использовать этот пример.

Вот краткое описание переменных.

Целевая переменнаяMedHouseVal , которая представляет собой медианную стоимость дома в единицах по 100 000 долларов США (пример: 3,2 означает 320 000 долларов).

Переменные признаков следующие:

1. MedInc : медианный доход (в единицах по 10 000 долларов США)
2. HouseAge : средний возраст домов
3. AveRooms : среднее количество комнат в домохозяйстве.
4. AveBedrms : среднее количество спален в домохозяйстве.
5. Население : люди, проживающие в квартале
6. AveOccup : среднее количество жильцов в домохозяйстве
7. Широта : географическая широта
8. Долгота : географическая долгота

k-NN с одним непрерывным признаком

Прежде чем использовать несколько признаков для поиска соседей, давайте сначала воспользуемся только одним признаком и несколькими наблюдениями.

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

Набор обучающих данных

Вот график этого простого набора данных из 10 наблюдений. Ось X — непрерывная характеристика, ось Y — целевая переменная.

5bb3de11823aaed3c71ee2696d67d1a5

Теперь представьте, что нам нужно предсказать значение нового наблюдения x = 10. Как это сделать?

Обучение на моделях?

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

Но для k-NN ваша модель — это весь ваш набор данных. Другими словами, вам не нужно обучать модель, вы используете исходный набор данных напрямую.

Таким образом, в scikit-learn при выполнении model.fit для оценки k-NN на самом деле ничего не происходит.

Некоторые могут спросить: а как насчет k?

Итак, k — это гиперпараметр. Поэтому вам нужно выбрать значение k, которое можно настроить.

Прогноз для одного нового наблюдения

Для гиперпараметра k мы будем использовать k=3, поскольку набор данных очень мал.

Для одной переменной-признака расстояние может быть тривиальным абсолютным значением разницы между значением нового наблюдения и другими.

На листе «algo1D» можно изменить значение нового наблюдения и использовать фильтр по столбцу расстояния C, чтобы упорядочить набор данных в порядке возрастания; будут отображены 3 ближайших соседа.

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

И мы также можем создать столбец индикаторов (столбец G), с индикатором = 1, если они принадлежат k-ближайшим соседям.

Наконец, для прогнозирования мы можем использовать функцию СУММПРОИЗВ для вычисления среднего значения всех значений y с индикатором =1.

В сюжете,

  • светло-голубые точки представляют набор данных
  • красная точка представляет новое наблюдение с предсказанным значением y
  • желтые точки представляют трех ближайших соседей нового наблюдения (красного цвета)
775df760620e8572c5d96fc98edc6e5a

Подведем итоги — фаза прогнозирования состоит из следующих этапов:

  • Для одного заданного нового наблюдения вычислите расстояние между этим новым наблюдением и всеми наблюдениями в обучающем наборе данных.
  • Определим k наблюдений с наименьшим расстоянием. В Excel мы воспользуемся фильтром для ручного упорядочивания обучающего набора данных. Или можем использовать функцию RANK (и столбец индикатора) для получения k первых наблюдений.
  • Рассчитайте прогнозируемое значение, вычислив среднее значение целевой переменной с помощью функции СУММПРОИЗВ.

Прогноз на интервал новых наблюдений

На листе «algo1D f» (f — final) я построил прогноз для списка новых наблюдений в диапазоне от 1 до 17.

Используя язык программирования, мы могли бы легко сделать это в цикле и для большего количества новых наблюдений, поэтому представление могло бы быть более плотным.

В Excel я вручную повторил следующие шаги:

  • введите значение для x
  • упорядочить столбец расстояний
  • скопируйте и вставьте прогноз
ad1f7179bb7ab0ba1398014943aae3cd

Влияние гиперпараметра k

Гиперпараметр, используемый в k-NN, — это количество соседей, которое мы учитываем при расчете среднего значения.

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

3804875e0b4db540edc12267ab696854

В нашем случае, если k мало, может возникнуть риск переобучения.

Если k велико, может возникнуть риск недообучения.

Крайний случай очень большого k — это когда k может быть равен общему числу элементов обучающего набора данных. При этом значение прогноза будет одинаковым для каждого нового наблюдения: это глобальное среднее значение.

8de78b6a1e88073ea949f7fa33e78493

Таким образом, можно сказать, что k-NN улучшает идею прогнозирования посредством вычисления среднего значения по нескольким наблюдениям, близким к новому наблюдению.

k-NN с двумя непрерывными признаками

Теперь мы рассмотрим случай двух непрерывных признаков x1 и x2. Мы обсудим только различия с предыдущей ситуацией с одним признаком.

Набор данных с двумя непрерывными переменными признаков

Когда у нас есть две переменные-характеристики, я не могу построить трехмерный график в Excel, поэтому график содержит только x1 в качестве оси x и x2 в качестве оси y.

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

6249ba566b2c30420bf7df65ec6dee62

Прогнозирование с использованием евклидова расстояния

Теперь, когда у нас есть две особенности, нам придется учитывать их обе.

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

Затем мы можем применить тот же процесс к k первым наблюдениям, имеющим минимальное расстояние с новым наблюдением.

f2c9599c3bdb9d3ba9c95dc510dad595

Чтобы получить визуальный сюжет, мы можем использовать те же цвета

  • Синий — для обучающего набора данных
  • Красный — для нового наблюдения
  • Желтый для найденных k ближайших соседей
a402d95dc5203dff62d105eab5e6c153

Влияние масштаба переменных

Когда у вас есть две характеристики, один из вопросов, который мы можем задать, — это влияние масштаба характеристики на результат прогнозирования.

Для начала давайте рассмотрим простой пример: я умножил признак x2 на 10.

92df8e3a4542ecbde25073555404c820

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

И мы можем легко их сравнить, как на следующем изображении.

efb3769bff34dc1d2c90b4e31207a325

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

В результате объект, имеющий больший масштаб, будет доминировать на расстоянии.

При масштабировании признаков часто применяется стандартизация (также называемая центрированием и редукцией) или масштабирование по минимуму и максимуму. Идея заключается в том, чтобы привести все признаки к сопоставимому масштабу.

НО давайте подумаем о такой ситуации: что, если одна характеристика выражена в долларах, а другая в иенах.

В реальном мире правильное соотношение между двумя шкалами составляет примерно 1 доллар = 156 иен (по состоянию на ноябрь 2025 года). Мы знаем это, потому что понимаем значение единиц.

Откуда модель это знает? Она НЕ ЗНАЕТ.

Единственным гиперпараметром является k, и модель не корректирует ничего для коррекции различий в единицах измерения или масштабах. У k-NN нет внутреннего механизма для понимания того, что два объекта имеют разные единицы измерения.

И это только начало проблем…

k-NN с набором данных о жилищном строительстве в Калифорнии

Теперь давайте наконец воспользуемся реальным набором данных California Housing.

На примере однопризнакового набора данных мы получили базовое представление о работе k-NN. На примере двухпризнакового набора данных мы увидели, что масштаб признаков важен.

Теперь, с этим реальным набором данных, мы увидим, что неоднородная природа объектов делает евклидово расстояние бессмысленным.

Мы увидим еще несколько важных идей, когда будем использовать k-NN на практике.

Наивное применение регрессора k-NN

Поскольку все признаки в этом наборе данных непрерывны, мы можем легко вычислить евклидово расстояние. Мы также определяем число k для вычисления среднего значения целевой переменной, в данном случае MedHouseVal.

В Excel вы легко можете сделать это самостоятельно. Или можете поддержать меня здесь и получить все файлы.

5d160b95ac06312e30889ba92f870681

Понятие расстояния, основанное на различных признаках

Я сказал, что предыдущее приложение наивно, потому что если вы посмотрите внимательнее, то увидите следующие проблемы:

Медианный доход (MedInc) выражается в единицах по 10 000 долларов США. Если мы решим выразить его в 100 000 долларов США или в 1000 долларов США, прогноз изменится, поскольку k-NN чувствителен к масштабу признаков. Мы уже сталкивались с этой проблемой.

Теперь, более того, каждая особенность имеет разную природу.

  • MedInc — это сумма денег (в долларах).
  • HouseAge — возраст в годах.
  • AveRooms — количество комнат.
  • Население — это число людей.
  • Широта и долгота — географические координаты.

Следовательно, евклидово расстояние обречено.

Различные типы расстояний

Наиболее распространенным выбором является евклидово расстояние, но это не единственный вариант.

Мы также можем использовать манхэттенское расстояние , когда признаки представляют собой движения в виде сетки, и косинусное расстояние, когда имеет значение только направление (как в случае встраивания текста).

Каждое расстояние меняет определение «ближайшего» и, следовательно, может влиять на то, каких соседей выбирает KNN.

В зависимости от данных могут быть более подходящими другие расстояния.
Например, в случае широты и долготы мы можем использовать реальное географическое расстояние (в метрах) вместо простого евклидова расстояния в градусах.

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

Однако как только мы пытаемся объединить эти географические расстояния с другими переменными (такими как средний доход, количество комнат или численность населения), проблема становится более сложной, поскольку переменные имеют совершенно разную природу и масштабы.

828669d5b3a41308f3a493cf527ade2c

В картографических визуализациях ниже я использовал k-NN в качестве сглаживающей функции для уточнения значений, связанных с различными районами Парижа.

Слева каждая область имеет только одно значение, поэтому от одной четверти к соседним четвертям может наблюдаться разрыв переменной.

Справа k-NN позволяет мне оценить значение для каждого конкретного адреса, сглаживая информацию на основе близлежащих областей.

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

137fa9f07be2255e186b7c9c6ab9770c

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

Связывая расстояние с природой данных, мы можем сделать k-NN гораздо более осмысленным: географическое расстояние для координат, косинусное расстояние для векторных представлений и т. д. Выбор расстояния — это не просто техническая деталь, он меняет то, как модель «видит» мир и какие соседи она считает релевантными.

Как можно моделировать категориальные признаки

Вы могли слышать, что категориальные признаки не могут быть обработаны в моделях k-NN.

Но это не совсем так.

k-NN может работать с категориальными переменными, если мы можем определить расстояние между двумя наблюдениями.

Многие скажут: «Просто используйте прямое кодирование».

Другие упоминают кодирование меток или порядковое кодирование.

Однако в модели, основанной на расстоянии, эти методы ведут себя совершенно иначе.

Чтобы прояснить это, мы воспользуемся другим набором данных: набором данных о ценах на бриллианты (лицензия CC BY 4.0), который содержит несколько характеристик, таких как каратность, огранка, цвет и чистота.

Для простоты мы будем использовать только караты (числовую величину) и чистоту (категориальную величину), чтобы продемонстрировать несколько результатов.

Прогнозирование цен с помощью Carat

Начнем с карат , поскольку вы, вероятно, знаете, что цена бриллианта зависит в основном от размера (каратности) камня.

На графике ниже показано, как k-NN может находить бриллианты схожих размеров, чтобы оценить их цену.

3a218c8a3aa935c150deb3d3093eb7ce

Функция One-Hot Encoding for Clarity

Теперь давайте посмотрим на ясность .

Ниже приведена таблица категорий с их значениями, и мы применяем прямое кодирование для преобразования каждой категории в двоичный вектор.

Ясность Значение
ЕСЛИ Внутренне безупречный
ВВС1 Очень очень немного включено 1
ВВС2 Очень-очень слабо включено 2
ВС1 Очень слабо включено 1
ВС2 Очень слабо включено 2
СИ1 Слегка включено 1
СИ2 Слегка включено 2
И1 Включено 1

В этой таблице мы видим, что для нового бриллианта с чистотой VVS2 ближайшими соседями являются все бриллианты той же категории чистоты .

Числовая характеристика карат оказывает очень малое влияние на расстояние, хотя она является более важной характеристикой, как вы можете видеть в колонке цены.

17cdfb732675a2cdf2e12996230ec687

Ключевая проблема 1: все категории одинаково далеки

При использовании евклидова расстояния для однонаправленных векторов:

  • ЕСЛИ против VVS1 → расстояние = √2
  • ЕСЛИ против SI2 → расстояние = √2
  • ЕСЛИ против I1 → расстояние = √2

Каждая отдельная категория находится на совершенно одинаковом расстоянии.
Это не отражает реальную шкалу оценки алмазов.

Ключевая проблема 2: проблема масштабирования с непрерывными переменными

Поскольку мы объединяем чистоту одного бриллианта с каратностью (непрерывной характеристикой), мы сталкиваемся с другой проблемой:

  • В нашем примере значения карат ниже 1
  • Векторы ясности имеют разность √2 → ясность доминирует при расчете расстояния

Поэтому даже небольшие изменения в чистоте перевешивают эффект от каратности.
Это точно такая же проблема масштабирования, с которой мы сталкиваемся при работе с многонепрерывными объектами, но даже более сильная.

Порядковое кодирование для ясности

Теперь мы можем попробовать закодировать признак «Чёткость» с помощью числовых меток. Но вместо классических меток 1, 2, 3… мы используем экспертные метки , отражающие реальную шкалу оценок.

Идея состоит в том, чтобы перевести уровни чистоты в значения, которые ведут себя скорее как непрерывная характеристика, подобная каратам, даже если чистота не является строго непрерывной.

a15792e886e7455ac89246c6b4465863

Благодаря этому экспертному кодированию расстояния становятся более значимыми.

Каратность и чистота теперь находятся на сопоставимых шкалах, поэтому ни одна из характеристик не имеет решающего значения при расчете расстояния.

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

62962204659a6db4b149e83509c4fbc0

Выводы

В заключение отметим, что регрессор k-NN — это крайне нелинейный локальный оценщик. Он настолько локален, что фактически используются только K ближайших наблюдений.

После внедрения регрессора k-NN в Excel, я думаю, мы действительно можем задать этот вопрос: является ли регрессор k-NN на самом деле моделью машинного обучения?

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

Но это настолько просто, что с помощью Excel мы можем просто реализовать весь алгоритм. Более того, мы можем регулировать расстояние по своему усмотрению.

Бизнесмены могут увидеть эту идею напрямую: чтобы предсказать значение, мы смотрим на аналогичные наблюдения.

Фактические проблемы с k-NN и всеми моделями, основанными на расстоянии:

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

Итак, короче говоря, проблема заключается в масштабировании признаков. Мы могли бы подумать, что их можно настроить как гиперпараметры, но тогда такая настройка потребует слишком много времени.

Позже мы увидим, что именно эта мотивация лежит в основе другого семейства моделей.

Здесь понятие масштаба также эквивалентно понятию важности признаков, поскольку в k-NN важность каждого признака определяется до использования модели.

Итак, это только начало нашего пути. Мы вместе найдём другие модели, которые могут быть лучше этой простой модели, совершенствуя её в разных направлениях: масштабирование признаков, переход от расстояния к вероятности, разделение для лучшего моделирования каждой категории…

Источник: towardsdatascience.com

✅ Найденные теги: «Адвент-календарь», новости

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Извлечение документов DPT-2, точность 99.16%, DocVQA, текст под подписью.
Новая открытая система «автоисследований» Андрея Карпати позволяет запускать сотни экспериментов с искусственным интеллектом за ночь, что имеет революционные последствия.
Новорожденный в инкубаторе с фототерапией под синим светом.
Паркетный зал с деловой встречей, люди сидят и слушают спикеров за столом.
Детский рисунок: робот и слова на английском с объектами, включая кролика и гитару.
Абстрактное изображение в розово-синих тонах, напоминающее фрактал или галактику.
Рейтинг выручки топ-10 мировых литейных заводов за 4Q25, данные TrendForce.
Мужчина в офисе рядом с экраном, на котором написано "SEO - как базовая инфраструктура бизнеса".
Космическая площадка с пусковой установкой для ракет на фоне голубого неба.
Image Not Found
Извлечение документов DPT-2, точность 99.16%, DocVQA, текст под подписью.

Тест DocVQA: точность 99,16% при использовании метода извлечения документов Agentic.

Анкит Кхаре, Шанкар Джагадисан, 12 ноября 2025 г. Поделиться: Вкратце: Мы провели валидацию на наборе данных DocVQA и получили 5286 правильных ответов из 5331 (99,16%) . Из этих 45 неправильных ответов только 18 являются истинными недостатками синтаксического…

Мар 13, 2026
Новая открытая система «автоисследований» Андрея Карпати позволяет запускать сотни экспериментов с искусственным интеллектом за ночь, что имеет революционные последствия.

Новая открытая система «автоисследований» Андрея Карпати позволяет запускать сотни экспериментов с искусственным интеллектом за ночь, что имеет революционные последствия.

Карл Франзен Источник: VentureBeat, создано с помощью Google Gemini 3 Pro. В минувшие выходные Андрей Карпати — влиятельный бывший руководитель направления искусственного интеллекта в Tesla, соучредитель и бывший член OpenAI, придумавший термин «вайб-кодирование» — опубликовал на X…

Мар 13, 2026
Новорожденный в инкубаторе с фототерапией под синим светом.

Обтирание не повлияло на температуру тела недоношенных детей. При их укутывании в окклюзивный мешок

При их укутывании в окклюзивный мешок Клиническое исследование итальянских ученых показало, что обтирание крайне недоношенных детей теплым полотенцем перед их укутыванием в пластиковый окклюзивный мешок не влияет на поддержание нормальной температуры тела. Как сообщается в JAMA Network Open, в испытании приняли участие 354 ребенка. Поддержание теплового…

Мар 13, 2026
Паркетный зал с деловой встречей, люди сидят и слушают спикеров за столом.

ОПЯТЬ ГРОМКИЕ, НО ПУСТЫЕ ОБЕЩАНИЯ АКАДЕМИКОВ

В историческом здании Санкт-Петербургского отделения Российской академии наук состоялось торжественное открытие Центра развития фундаментальных и прикладных исследований Российский академии образования (РАО). Научным руководителем центра стал ректор РГПУ имени А. И. Герцена, академик РАО Сергей Тарасов. Основными направлениями…

Мар 13, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых