Зачем вам нужно масштабировать данные в KNN

15

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

Я пытался найти это, но я все еще не могу понять это.

Я нашел следующую ссылку:

https://discuss.analyticsvidhya.com/t/why-it-is-necessary-to-normalize-in-knn/2715

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

bugsyb
источник
Я думаю, что нормализация должна быть обоснована с предметной точки зрения. По сути, важно то, что определяет расстояние между точками. Вы должны найти удобное арифметическое определение расстояния, которое отражает предметное определение расстояния. Из моего ограниченного опыта я нормализовался в некоторых, но не во всех направлениях, исходя из предметных соображений.
Ричард Харди
1
Для поучительного примера см. Stats.stackexchange.com/questions/140711 .
whuber

Ответы:

27

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

Рассмотрим простую задачу классификации двух классов, где выбирается выборка класса 1 (черная) вместе с 10 ближайшими соседями (закрашена зеленым). На первом рисунке данные не нормированы, а на втором - нет.

Данные без нормализации Данные с нормализацией

x1

Нормализация решает эту проблему!

kedarps
источник
1
Этот ответ совершенно правильный, но я боюсь, что иллюстрации могут быть обманчивы из-за искажений. Точка может быть лучше проиллюстрирована, нарисовав их обе так, чтобы две оси в каждой были в одном масштабе.
whuber
1
Мне было трудно уместить все точки данных в одной шкале для обеих фигур. Следовательно, я отметил в примечании, что шкалы осей разные.
Кедарпс
1
Эта трудность на самом деле является точкой вашего ответа! Один из способов преодолеть это не использовать такой экстремальный диапазон весов. Разница в масштабах 5: 1, а не разница 1000: 1, все равно поможет вам. Другой способ состоит в том, чтобы точно нарисовать картинку: верхняя диаграмма рассеяния будет казаться вертикальной линией точек.
whuber
2
@whuber, я неправильно понял ваш первый комментарий. Исправлены сюжеты, надеюсь, теперь лучше!
Кедарпс
1
@ Undertherainbow Это правильно!
Kedarps
6

Предположим, у вас был набор данных (m «examples» от n «feature»), и все измерения, кроме одного, имели значения строго между 0 и 1, в то время как одно измерение объекта имело значения в диапазоне от -1000000 до 1000000. При принятии евклидова расстояния между парами «примеров» значения измерений признаков, которые находятся в диапазоне от 0 до 1, могут стать неинформативными, и алгоритм будет по существу полагаться на одно измерение, значения которого существенно больше. Просто разработайте пример расчета евклидова расстояния, и вы поймете, как масштаб влияет на вычисления ближайшего соседа.

Дерек Джонс
источник