Я использую kmeans для определения групп клиентов. У меня есть около 100 переменных для определения кластеров. Каждая из этих переменных представляет собой процент расходов клиента на категорию. Итак, если у меня есть 100 категорий, у меня есть эти 100 переменных, так что сумма этих переменных составляет 100% для каждого клиента. Теперь эти переменные сильно взаимосвязаны друг с другом. Нужно ли отбросить некоторые из них, чтобы удалить коллинеарность, прежде чем я запустил kmeans?
Вот пример данных. На самом деле у меня есть 100 переменных и 10 миллионов клиентов.
Customer CatA CatB CatC
1 10% 70% 20%
2 15% 60% 25%
Ответы:
Не отбрасывайте переменные, но подумайте об использовании PCA. Вот почему
Во-первых, как указал Anony-mousse, коллинеарность / корреляция не сильно влияет на k-means. Вам не нужно выбрасывать информацию из-за этого.
Во-вторых, если вы отбросите свои переменные неправильно, вы искусственно сведете некоторые образцы вместе. Пример:
(Я удалил запись% и просто поместил значения между 0 и 1, ограничив их, чтобы они все суммировались с 1).
Евклидово расстояние между каждым из этих клиентов в их естественном трехмерном пространстве равно( 1 - 0 )2+ ( 0 - 1 )2+( 0 - 0 )2-----------------------√= 2-√
Теперь допустим, что вы бросили CatC.
Теперь расстояние между клиентами 1 и 2 по-прежнему , но между клиентами 1 и 3, и 2 и 3, это только √2-√ ( 1 - 0 )2+ ( 0 - 0 )2---------------√= 1
В-третьих, коллинеарность / корреляции не являются проблемой. Ваша размерность есть. 100 переменных достаточно велики, чтобы даже с 10 миллионами точек данных я беспокоился о том, что k-means может найти в данных ложные закономерности и соответствовать им. Вместо этого, подумайте об использовании PCA, чтобы сжать его до более управляемого количества измерений - скажем, 10 или 12, для начала (может быть, намного выше, может быть, намного ниже), вам придется посмотреть на дисперсию по каждому компоненту и поиграть немного, чтобы найти правильный номер). Вы будете искусственно сближать некоторые образцы, делая это, да, но вы будете делать это таким образом, чтобы сохранить большую часть дисперсии в данных, и которая, предпочтительно, удалит корреляции.
~~~~~
РЕДАКТИРОВАТЬ:
Re, комментарии ниже о PCA. Да, у него действительно есть патологии. Но это довольно быстро и легко попробовать, так что мне все равно кажется неплохой ставкой, если вы хотите уменьшить размерность проблемы.
На этой ноте я попытался быстро добавить несколько наборов 100-мерных синтетических данных в алгоритм k-средних, чтобы увидеть, что они придумали. Хотя оценки положения центра кластера не были такими точными, членство в кластере (то есть, были ли две выборки назначены одному и тому же кластеру или нет, что, как представляется, интересует OP) было гораздо лучше, чем я думал. Так что мое интуитивное чувство ранее было вполне возможно неправильным - k-означает, что миграция отлично работает на необработанных данных.
источник
На игрушечном примере в 2d или 3d это не должно иметь большого значения, оно просто добавляет некоторую избыточность вашим данным: все ваши точки находятся на нечетной (d-1) мерной гиперплоскости. Так кластерные средства. И расстояние в этой (d-1) размерной гиперплоскости является линейным кратным одного и того же расстояния, поэтому оно ничего не меняет.
Давайте посмотрим на простейший пример: дубликаты переменных.
Если вы запускаете PCA для своего набора данных и дублируете переменную, это фактически означает добавление дублирующего веса к этой переменной. PCA основывается на предположении, что дисперсия в каждом направлении одинаково важна - так что вы должны, действительно, тщательно взвешивать переменные (принимая во внимание корреляции, а также делать любую другую необходимую предварительную обработку) перед выполнением PCA.
источник
Желательно удалить переменные, если они сильно коррелированы .
Независимо от алгоритма кластеризации или метода связывания, одна вещь, которой вы обычно следуете, - это найти расстояние между точками. Хранение переменных, которые сильно коррелированы, но только дает им больше, удваивает вес при расчете расстояния между двумя точками (поскольку все переменные нормализованы, эффект обычно будет удваиваться).
Короче говоря, сила переменных влиять на формирование кластера увеличивается, если он имеет высокую корреляцию с любой другой переменной.
источник