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

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

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

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

галерея

Цветные блоки и линии, символизирующие технологическую сеть или блокчейн.
ideipro logotyp
Текст "MIT 2025 in the Media" на фоне цифровой сетки и световых эффектов.
Диаграмма Венна: пересечение U-REGLE, M-REGLE и GWAS Catalog.
Извлечение документов DPT-2, точность 99.16%, DocVQA, текст под подписью.
Новая открытая система «автоисследований» Андрея Карпати позволяет запускать сотни экспериментов с искусственным интеллектом за ночь, что имеет революционные последствия.
Новорожденный в инкубаторе с фототерапией под синим светом.
Паркетный зал с деловой встречей, люди сидят и слушают спикеров за столом.
Детский рисунок: робот и слова на английском с объектами, включая кролика и гитару.
Image Not Found
Цветные блоки и линии, символизирующие технологическую сеть или блокчейн.

Создание надежной инфраструктуры данных для успешной работы агентов искусственного интеллекта.

В сотрудничестве с SAP В гонке за внедрением и демонстрацией преимуществ ИИ предприятия как никогда быстро развертывают агентные системы ИИ в качестве помощников, ассистентов и автономных исполнителей задач. Согласно ежегодному отчету McKinsey об ИИ, к концу 2025…

Мар 14, 2026
ideipro logotyp

Увеличение длины последовательности — это ещё не всё: эффективная интеграция мультимодальных сигналов для прогнозирования экспрессии генов.

arXiv:2602.21550v2 Тип объявления: замена-кросс Аннотация: Прогнозирование экспрессии генов, то есть предсказание уровней экспрессии мРНК на основе последовательностей ДНК, представляет собой серьезную проблему. Предыдущие работы часто фокусировались на увеличении длины входной последовательности для определения дистальных энхансеров, которые могут…

Мар 14, 2026
Текст "MIT 2025 in the Media" на фоне цифровой сетки и световых эффектов.

MIT в СМИ: обзор 2025 года

Члены сообщества MIT привлекли внимание общественности ключевыми научными достижениями и своими усилиями по решению актуальных проблем. Изображение: Новости MIT «В MIT инновации варьируются от впечатляющих технологий до приземленного творчества», — отметили в Chronicle во время визита в…

Мар 14, 2026
Диаграмма Венна: пересечение U-REGLE, M-REGLE и GWAS Catalog.

Раскрытие ценных генетических данных с помощью мультимодального ИИ на основе M-REGLE

M-REGLE (Multimodal REpresentation learning for Genetic discovery on Low-dimensional Embeddings) — это метод искусственного интеллекта, который одновременно анализирует несколько потоков медицинских данных. Совместное обучение на основе различных типов данных создает более полные представления и значительно повышает вероятность…

Мар 14, 2026

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