Не отбрасывайте переменные, но подумайте об использовании PCA. Вот почему
Во-первых, как указал Anony-mousse, коллинеарность / корреляция не сильно влияет на k-means. Вам не нужно выбрасывать информацию из-за этого.
Во-вторых, если вы отбросите свои переменные неправильно, вы искусственно сведете некоторые образцы вместе. Пример:
Customer CatA CatB CatC
1 1 0 0
2 0 1 0
3 0 0 1
(Я удалил запись% и просто поместил значения между 0 и 1, ограничив их, чтобы они все суммировались с 1).
Евклидово расстояние между каждым из этих клиентов в их естественном трехмерном пространстве равно ( 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-means может найти в данных ложные закономерности и соответствовать им. Вместо этого, подумайте об использовании PCA, чтобы сжать его до более управляемого количества измерений - скажем, 10 или 12, для начала (может быть, намного выше, может быть, намного ниже), вам придется посмотреть на дисперсию по каждому компоненту и поиграть немного, чтобы найти правильный номер). Вы будете искусственно сближать некоторые образцы, делая это, да, но вы будете делать это таким образом, чтобы сохранить большую часть дисперсии в данных, и которая, предпочтительно, удалит корреляции.
~~~~~
РЕДАКТИРОВАТЬ:
Re, комментарии ниже о PCA. Да, у него действительно есть патологии. Но это довольно быстро и легко попробовать, так что мне все равно кажется неплохой ставкой, если вы хотите уменьшить размерность проблемы.
На этой ноте я попытался быстро добавить несколько наборов 100-мерных синтетических данных в алгоритм k-средних, чтобы увидеть, что они придумали. Хотя оценки положения центра кластера не были такими точными, членство в кластере (то есть, были ли две выборки назначены одному и тому же кластеру или нет, что, как представляется, интересует OP) было гораздо лучше, чем я думал. Так что мое интуитивное чувство ранее было вполне возможно неправильным - k-означает, что миграция отлично работает на необработанных данных.