2009-10-08 4 views
8

Я делаю несколько тестов, кластеризующих большое количество очень больших разреженных векторов, представляющих частоту-инверсию-частоту документа различных гипертекстовых документов. Какой алгоритм вы предложите для кластеризации этих данных с учетом пропорций набора данных? Размерность векторов будет> 3 · 10 , а число векторов может быть около 10 . Я взглянул на алгоритмы dbscan и optics. Количество кластеров неизвестно. И пространственный индекс с такой большой размерностью кажется сложным.Кластеризация огромного векторного пространства

ответ

3

У меня было почти такое же положительное влияние на результаты с простой кластеризацией K-сред, как и почти с чем-либо еще, и это определенно быстрее, чем большинство альтернатив. Я также получил хорошие результаты с помощью парной агломерации, но это довольно немного медленнее. Для K-средств вам нужно начать с некоторого предполагаемого количества кластеров, но вы можете отрегулировать его алгоритмически по мере продвижения. Если вы обнаружите два кластера со слишком близкими средствами, вы уменьшите количество кластеров. Если вы обнаружите кластеры со слишком большим диапазоном вариаций, вы попробуете больше кластеров. Я считаю, что sqrt (N) является разумной отправной точкой, но я обычно начинаю больше, чем 10^7 документов, а не 10^9. Для 10^9 может иметь смысл немного уменьшить это.

Если бы это было за меня, я бы очень сильно подумал о том, чтобы начать с уменьшения размерности чем-то вроде Landmark MDS, , затем, делающего кластеризацию.

+3

K-Means должен ** всегда ** быть первой технологией сегментации, которую вы пытаетесь при попытке скопировать * ничего *. Прост, эффективен и обеспечивает отличные результаты большую часть времени.Единственным недостатком является выбор подходящего значения K. Вы всегда можете попытаться увеличить последовательность вычисления K вашего межкластерного отклонения в качестве критерия качества кластеризации. Однако это не так хорошо работает на практике. – ldog

2

Я слышал, что semantic hashing достигает отличных результатов. Однако глубокие сети убеждений довольно практичны. Возможно, вы захотите попробовать минутное хеширование (это вероятностный подход) или locality sensistive hashing for euclidean spaces.

В целом, кластеризация в таких пространствах с большими размерами затруднена из-за проклятия размерности и того факта, что большинство предметов имеют одинаковые расстояния друг к другу. Стандартные подходы, такие как K-Means, могут работать, если вы предварительно уменьшите размерность через SOM или PCA.

+0

Спасибо за интересные ссылки. – piotr

2

При кластеризации данных я всегда стараюсь по крайней мере, эти два алгоритма в следующем порядке:

  1. K-средства: попробуйте изменить результаты как можно больше. Если вы можете заставить K-Means работать для вас и обеспечить достойные результаты, вы почти наверняка не улучшите себя, если какой-либо другой алгоритм.

  2. Ожидание Максимизация: алгоритм K-mean был фактически разработан, чтобы быть дешевой и хорошей альтернативой алгоритму EM. Алгоритм ЭМ более сложный для понимания и более дорогостоящий для вычисления, но результаты ЭМ превосходны. Вы можете узнать больше о EM http://en.wikipedia.org/wiki/Expectation-maximization_algorithm. Существует реализация OpenCV ЕСТ: http://opencv.willowgarage.com/documentation/expectation-maximization.html

Если результаты ни один из этих двух удовлетворительны, я хотел бы начать искать в другом месте, но не , пока вы не пробовали оба.

+0

Разве K-Means не является экземпляром EM? – bayer

+0

@bayer: Нет, они, безусловно, не тот же алгоритм, если это то, что вы имеете в виду. K-Means не параметрический, но EM (означает, что EM утверждает, что существует базовое многовариантное гауссовское распределение для данных, которое не является очень строгим предположением, если вы считаете центральную предельную теорему.) Из того, что я понимаю, EM алгоритм иногда группируется как мета-алгоритм, где под него подпадают другие алгоритмы. Это может быть реализовано отдельно от того, что я видел. – ldog

Смежные вопросы