Подтвердить что ты не робот

Классификация KNN с категориальными данными

Я занят работой над проектом с регрессией k-ближайшего соседа. У меня смешанные числовые и категориальные поля. Категориальные значения являются порядковыми (например, имя банка, тип учетной записи). Численные типы, например. заработной платы и возраста. Существуют также некоторые двоичные типы (например, мужчины, женщины).

Как мне включить включение категориальных значений в анализ KNN?

Насколько мне известно, нельзя просто сопоставить каждое категориальное поле с цифровыми клавишами (например, банк 1 = 1, банк 2 = 2 и т.д.), поэтому мне нужен лучший подход для использования категориальных полей. Я слышал, что можно использовать двоичные числа - это приемлемый метод? Совет будет очень признателен.

4b9b3361

Ответ 1

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

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

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

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

Есть целые конференции, посвященные темам поиска сходства - никто не утверждал, что это тривиально ни в чем, кроме евклидовых векторных пространств (и фактически даже не там): http://www.sisap.org/2012

Ответ 2

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

Ответ 3

Можно ли использовать локальную чувствительность (LSH) + расстояние редактирования и предположить, что каждый бит представляет собой другую категорию? Я понимаю, что категориальные данные не показывают никакого порядка, а ящики в LSH расположены в соответствии с хэш-функцией. Поиск хеш-функции, которая дает значимое количество ящиков, звучит для меня как изучение метрического пространства.