Чи потрібно скидати змінні, які є кореляційними / колінеарними, перш ніж запускати kmeans?


14

Я запускаю 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. Ось чому.

По-перше, як вказував Аноні-мус, k-засоби не сильно впливають на колінеарність / кореляції. Через це вам не потрібно викидати інформацію.

По-друге, якщо ви скинете свої змінні неправильно, ви штучно зблизите деякі зразки. Приклад:

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

(Я видалив% notation і просто поставив значення між 0 і 1, обмежено, щоб вони всі дорівнювали 1).

Евклідова відстань між кожним із цих клієнтів у їх природному 3d просторі становить (1-0)2+(0-1)2+(0-0)2=2

Тепер скажімо, що ви кинете CatC.

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

Зараз відстань між клієнтами 1 та 2 все ще , але між клієнтами 1 і 3 та 2 і 3 це лише2(1-0)2+(0-0)2=1

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

~~~~~

Редагувати:

Re, коментарі нижче про PCA. Так, у нього абсолютно є патології. Але спробувати це досить швидко і просто, тому все одно здається мені не поганою ставкою, якщо ви хочете зменшити розмірність проблеми.

Однак на цій замітці я спробував швидко перекинути кілька наборів із 100 мірних синтетичних даних в алгоритм k-означає, щоб побачити, що вони придумали. Незважаючи на те, що оцінка центру кластера була не такою точною, членство в кластері (тобто, були присвоєні два зразки одному кластеру чи ні, що, здається, цікавить ОП), було набагато краще, ніж я думав, що це буде. Тож почуття моєї кишки раніше було цілком помилковим - k-означає, що міг працює просто на вихідних даних.


1
Я думаю, що потрібно обережно ставитися до усунення змінних за допомогою PCA. Перш за все, відхилення повинні бути нормалізовані перед таким усуненням, оскільки ви можете неправильно усунути змінні лише тому, що вони мають різну шкалу через свої одиниці. По-друге, після цього я би усунув лише ті розміри, які мають мізерну варіацію, оскільки оскільки PCA приймає ортогональну основу, якщо ви маєте зміни в неортогональному напрямку, це буде зафіксовано k-засобами, але усунене PCA.
Cagdas Ozgenc

1
(Х1,Х2)1ρ>0Y=Х1-Х2(Х1,Х2)Х1+Х2Х1-Х2YХ1+Х2

1
Це нерелевантне обговорення в непідконтрольній обстановці. Для контрольованих параметрів так, PCA не переймається відношенням до цільової змінної. Якщо напрямок залежності падає в бік низької дисперсії, невдача.
Cagdas Ozgenc

2

На прикладі іграшки в 2d або 3d вона не повинна сильно змінитись, вона просто додає ваших даних надмірність: всі ваші точки знаходяться на непарній (d-1) розмірній гіперплані. Як і кластерні засоби. І відстань у цій (d-1) розмірній гіперплані є лінійним кратним однакової відстані, тому вона нічого не змінює.

(х,у)(х,у,х+у)ху

Давайте розглянемо найпростіший приклад: дублюючі змінні.

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


1
Зважаючи на мій аналіз на сайті stats.stackexchange.com/a/50583 , це міркування видається невірним.
whuber

Я значно покращив свою відповідь, це було занадто багато на основі даних прикладу іграшки.
Має QUIT - Anonymous-Mousse

1

Доцільно видаляти змінні, якщо вони сильно корелюються .

Незалежно від алгоритму кластеризації чи методу зв'язку, одне, до чого ви зазвичай дотримуєтесь, - це знайти відстань між точками. Зберігання змінних, які є дуже співвіднесеними, - це все, окрім надання їм більше, подвойте вагу в обчисленні відстані між двома точками (Оскільки всі змінні нормалізуються, ефект зазвичай буде подвійним).

Коротше кажучи, сила змінних впливати на формування кластеру збільшується, якщо вона має високу кореляцію з будь-якою іншою змінною.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.