Для k-NN я бы предложил нормализовать данные между и .01
k-NN использует евклидово расстояние как средство сравнения примеров. Для вычисления расстояния между двумя точками и , где - это значение признака :Икс1= ( ф11, ф21, . , , , фM1)x2=(f12,f22,...,fM2)fi1ix1
d(x1,x2)=(f11−f12)2+(f21−f22)2+...+(fM1−fM2)2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−√
Чтобы все объекты имели одинаковую важность при расчете расстояния, они должны иметь одинаковый диапазон значений. Это возможно только путем нормализации.
Если они не были нормализованы и, например, функция имела диапазон значений в ), тогда как имела диапазон значений в . При расчете расстояния второй член будет в раз важнее первого, что приведет к тому, что k-NN будет больше полагаться на второй признак, чем на первый. Нормализация гарантирует, что все объекты отображаются в один и тот же диапазон значений.f1[0,1f2[1,10)10
Стандартизация, с другой стороны, имеет много полезных свойств, но не может гарантировать, что функции сопоставлены с тем же диапазоном. Хотя стандартизация может лучше всего подходить для других классификаторов, это не относится к k-NN или любому другому классификатору на основе расстояния.