Что такое чувствительные к расстоянию данные, чем они отличаются от других данных? Любые примеры будут полезны - PullRequest
0 голосов
/ 07 ноября 2018

Я читал об алгоритме классификации KNN и наткнулся на один термин, чувствительный к расстоянию. Я не смог найти, что такое данные, чувствительные к расстоянию, каковы их классификации, как определить, чувствительны ли данные к расстоянию или нет?

1 Ответ

0 голосов
/ 07 ноября 2018

Предположим, что x i и x j - векторы наблюдаемых признаков в случаях i и j. Тогда, как вы, наверное, знаете, kNN основан на расстояниях || x i - x j ||, таких как евклидово один.

Теперь, если x i и x j содержат только одну особенность, рост человека в метрах, у нас все хорошо, как других «конкурирующих» функций нет. Предположим, что затем мы добавим годовой оклад в тысячах. Следовательно, мы смотрим на расстояния между векторами, такими как (1.7, 50000) и (1.8, 100000).

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

|| x i - x j || 2 ≈ | 50000-100000 |.

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

Итак, чтобы иметь дело с этим, можно рассмотреть различные расстояния, например, что-то делать с масштабом. Обычно люди стандартизируют (устанавливают среднее значение на ноль и дисперсию на 1) каждую функцию, но это также не полное решение. Существуют различные предложения о том, что можно сделать (см., Например, здесь ).

С другой стороны, алгоритмы, основанные на деревьях решений, от этого не страдают. В этих случаях мы просто ищем точку, где нужно разделить переменную. Например, если заработная плата принимает значения в [0,100000], а разделение составляет 40000, то Salary / 10 будет разделено на 4000, чтобы результаты не изменились.

...