Большинство классических алгоритмов кластеризации и уменьшения размерности (иерархическая кластеризация, анализ главных компонентов, k-средних, самоорганизующиеся карты ...) разработаны специально для числовых данных, а их входные данные рассматриваются как точки в евклидовом пространстве.
Это, конечно, проблема, поскольку многие вопросы реального мира включают в себя данные, которые смешаны: например, если мы изучаем автобусы, высота, длина и размер двигателя будут числами, но нас также может интересовать цвет (категориальная переменная: синий / красный / зеленый ...) и классы емкости (упорядоченная переменная: малая / средняя / большая емкость). В частности, мы могли бы хотеть изучить эти различные типы переменных одновременно.
Существует ряд методов расширения классических алгоритмов кластеризации для смешанных данных, например, использование различий Gower для подключения к иерархической кластеризации или многомерного масштабирования, или других методов, которые принимают матрицу расстояний в качестве входных данных. Или, например, этот метод, расширение SOM для смешанных данных.
Мой вопрос: почему мы не можем просто использовать евклидово расстояние для смешанных переменных? или почему это плохо? Почему мы не можем просто фиктивно закодировать категориальные переменные, нормализовать все переменные так, чтобы они имели одинаковый вес на расстоянии между наблюдениями, и запустить обычные алгоритмы для этих матриц?
Это действительно легко и никогда не делается, так что я полагаю, что это очень неправильно, но кто-нибудь может сказать мне, почему? И / или дать мне несколько ссылок? Благодарность
Ответы:
Дело не в том, что ты не способен что-то вычислить .
Расстояния могут быть использованы для измерения чего-то значимого . Это потерпит неудачу намного раньше с категориальными данными. Если это когда-либо работает с более чем одной переменной, то есть ...
Если у вас есть атрибуты размера обуви и массы тела, евклидово расстояние тоже не имеет особого смысла. Хорошо, когда x, y, z - расстояния. Тогда евклидово расстояние - это расстояние между точками зрения.
Теперь, если вы фиктивно кодируете переменные, какой смысл это дает?
Кроме того, евклидово расстояние не имеет смысла, когда ваши данные дискретны.
Если существуют только целочисленные значения x и y, евклидово расстояние все равно будет давать нецелые расстояния. Они не отображаются обратно на данные. Точно так же для фиктивных переменных расстояние не будет отображаться обратно в количество фиктивных переменных ...
Затем, когда вы планируете использовать, например, кластеризацию k-средних, речь идет не только о расстояниях, но и о вычислении среднего значения . Но нет никакого разумного значения для фиктивных переменных, не так ли?
Наконец, есть проклятие размерности . Известно, что евклидово расстояние уменьшается при увеличении количества переменных. Добавление фиктивных переменных означает, что вы быстро теряете контраст расстояния. Все так же, как и все, потому что одна фиктивная переменная может иметь все значение.
источник
В основе этих проблем кластеризации на основе метрик лежит идея интерполяции.
Возьмите любой метод, который вы только что цитировали, и давайте рассмотрим непрерывную переменную, такую как вес. У вас есть 100 кг, и у вас есть 10 кг в ваших данных. Когда вы видите новый 99 кг, метрика позволит вам приблизиться к 100 кг - даже если вы никогда не видели его. К сожалению, для дискретных данных не существует интерполяции.
Еще один аргумент в пользу этого вопроса - нет естественного способа сделать это. Вы хотите присвоить 3 значения в R и сделать их равными расстояния между каждой парой, это было бы невозможно. Если вы назначаете их в разные категории и запускаете, скажем, PCA, то вы теряете информацию, которая фактически отражает одну и ту же категорию.
источник
Проблема с неупорядоченными категориальными значениями заключается в том, что, если вы фиктивно кодируете их, вы навязываете порядок и, следовательно, новое значение для переменных. Например, если вы кодируете синий как 1, а оранжевый как 2 и зеленый 3, вы подразумеваете, что шаблон данных со значением оранжевого цвета ближе к шаблону со значением зеленого, чем шаблон со значением синего.
Один из способов справиться с этим - сделать их новыми функциями (столбцами). Для каждого отдельного значения вы создаете новую двоичную особенность и устанавливаете для нее значение true / false (другими словами, двоичные значения кодируют значения и делают каждый бит столбцом). Для каждого шаблона данных из этого нового набора функций только один объект будет иметь значение 1, а все остальные - 0. Но это обычно не останавливает алгоритм обучения для назначения значений центроидов, близких к 1, более чем одному объекту. Это конечно может вызвать проблемы интерпретации, потому что это не имеет смысла в области данных.
У вас нет той же проблемы с «классами емкости», а именно с упорядоченными категориями, поскольку в этом случае имеет значение присвоение числовых значений.
И, конечно же, если вы используете функции различной природы или единицы измерения или другой диапазон значений, то вы всегда должны нормализовать значения.
/programming/19507928/growing-self-organizing-map-for-mixed-type-data/19511894#19511894
/programming/13687256/is-it-right-to-normalize-data-and-or-weight-vectors-in-a-som/13693409#13693409
источник
Ответ на самом деле довольно прост, нам просто нужно понять, какова информация в фиктивной переменной. Идея фиктивной переменной обозначает наличие или отсутствие уровней факторов (дискретные значения категориальной переменной). Он предназначен для представления чего-то неизмеримого, не поддающегося количественному измерению путем хранения информации о том, есть ли оно там или нет. Вот почему фиктивная переменная выражается в двоичных цифрах, столько же, сколько дискретные значения категориальной переменной, которую она представляет (или минус 1).
Представление уровней факторов в виде значений 0/1 имеет смысл только в аналитическом уравнении, таком как линейная модель (это простая концепция для тех, кто может интерпретировать коэффициенты статистических моделей). В фиктивной переменной информация базовой категориальной переменной хранится в порядке битов. При использовании этих битов в качестве измерений для сопоставления входной выборки с пространством объектов (как в случае матрицы сходства / расстояния) информация в порядке битов полностью теряется.
источник