Нужно ли отбрасывать переменные, которые коррелированы / коллинеарны перед запуском kmeans?


13

Я использую kmeans для определения групп клиентов. У меня есть около 100 переменных для определения кластеров. Каждая из этих переменных представляет собой процент расходов клиента на категорию. Итак, если у меня есть 100 категорий, у меня есть эти 100 переменных, так что сумма этих переменных составляет 100% для каждого клиента. Теперь эти переменные сильно взаимосвязаны друг с другом. Нужно ли отбросить некоторые из них, чтобы удалить коллинеарность, прежде чем я запустил kmeans?

Вот пример данных. На самом деле у меня есть 100 переменных и 10 миллионов клиентов.

Customer CatA CatB CatC   
1         10%  70%  20%   
2         15%  60%  25%

1
Вы пробовали анализ PCA, чтобы декоррелировать ваши данные?
Мирослав Сабо

2
«Коллинеарность» - это не то же самое, что «скорректированный». Так что ваш вопрос остается неясным
ttnphns

Ответы:


10

Не отбрасывайте переменные, но подумайте об использовании PCA. Вот почему

Во-первых, как указал Anony-mousse, коллинеарность / корреляция не сильно влияет на k-means. Вам не нужно выбрасывать информацию из-за этого.

Во-вторых, если вы отбросите свои переменные неправильно, вы искусственно сведете некоторые образцы вместе. Пример:

Customer CatA CatB CatC
1        1    0    0
2        0    1    0
3        0    0    1

(Я удалил запись% и просто поместил значения между 0 и 1, ограничив их, чтобы они все суммировались с 1).

Евклидово расстояние между каждым из этих клиентов в их естественном трехмерном пространстве равно (10)2+(01)2+(00)2=2

Теперь допустим, что вы бросили CatC.

Customer CatA CatB 
1        1    0    
2        0    1    
3        0    0    

Теперь расстояние между клиентами 1 и 2 по-прежнему , но между клиентами 1 и 3, и 2 и 3, это только2(10)2+(00)2=1

В-третьих, коллинеарность / корреляции не являются проблемой. Ваша размерность есть. 100 переменных достаточно велики, чтобы даже с 10 миллионами точек данных я беспокоился о том, что k-means может найти в данных ложные закономерности и соответствовать им. Вместо этого, подумайте об использовании PCA, чтобы сжать его до более управляемого количества измерений - скажем, 10 или 12, для начала (может быть, намного выше, может быть, намного ниже), вам придется посмотреть на дисперсию по каждому компоненту и поиграть немного, чтобы найти правильный номер). Вы будете искусственно сближать некоторые образцы, делая это, да, но вы будете делать это таким образом, чтобы сохранить большую часть дисперсии в данных, и которая, предпочтительно, удалит корреляции.

~~~~~

РЕДАКТИРОВАТЬ:

Re, комментарии ниже о PCA. Да, у него действительно есть патологии. Но это довольно быстро и легко попробовать, так что мне все равно кажется неплохой ставкой, если вы хотите уменьшить размерность проблемы.

На этой ноте я попытался быстро добавить несколько наборов 100-мерных синтетических данных в алгоритм k-средних, чтобы увидеть, что они придумали. Хотя оценки положения центра кластера не были такими точными, членство в кластере (то есть, были ли две выборки назначены одному и тому же кластеру или нет, что, как представляется, интересует OP) было гораздо лучше, чем я думал. Так что мое интуитивное чувство ранее было вполне возможно неправильным - k-означает, что миграция отлично работает на необработанных данных.


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

1
(X1,X2)1ρ>0Y=X1X2(X1,X2)X1+X2X1X2YX1+X2

1
Это неуместное обсуждение в обстановке без присмотра. Для контролируемой настройки да PCA не заботится о связи с целевой переменной. Если направление зависимости падает в сторону низкой дисперсии невезения.
Кагдас Озгенц

2

На игрушечном примере в 2d или 3d это не должно иметь большого значения, оно просто добавляет некоторую избыточность вашим данным: все ваши точки находятся на нечетной (d-1) мерной гиперплоскости. Так кластерные средства. И расстояние в этой (d-1) размерной гиперплоскости является линейным кратным одного и того же расстояния, поэтому оно ничего не меняет.

(x,y)(x,y,x+y)xy

Давайте посмотрим на простейший пример: дубликаты переменных.

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


1
В свете моего анализа на stats.stackexchange.com/a/50583 это рассуждение представляется неверным.
uber

Я значительно улучшил свой ответ, он был слишком сильно основан на данных примера игрушек.
ВЫЙТИ - Anony-Mousse

1

Желательно удалить переменные, если они сильно коррелированы .

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.