Проблема возникает следующим образом. У меня есть M изображений и я извлекаю N признаков для каждого изображения, а размерность каждого признака равна L. Таким образом, у меня есть M*N признаков (2 000 000 для моего случая), и каждый признак имеет размерность L (100 для моего случая). Мне нужно сгруппировать эти функции M * N в K кластеров. Как мне это сделать? Спасибо.
У меня есть 2 000 000 точек в 100-мерном пространстве. Как я могу сгруппировать их в K (например, 1000) кластеров?
Ответы:
Вы хотите получить 1000 кластеров изображений, объектов или пар (изображение, объект)?
В любом случае, похоже, что вам придется сократить объем данных и использовать более простые методы.
Одним из возможных вариантов является двухпроходный K-кластер:
а) разделить 2 миллиона точек данных на 32 кластера,
б) разделить каждый из них еще на 32.
Если это сработает, в результате получится 32^2. = 1024 кластера может быть достаточно для вашей цели.
Тогда вам действительно нужно 100 координат? Можете ли вы угадать 20 самых важных из них или просто попробовать случайные подмножества из 20?
Там огромная литература: гугл +image "dimension reduction"
выдает ~70000 просмотров.
Вы отметили вопрос "k-means". Почему нельзя использовать k-средства? Это вопрос эффективности? (лично я использовал только k-средние в 2 измерениях) Или это вопрос того, как кодировать алгоритм k-средних?
Являются ли ваши значения дискретными (например, категории) или непрерывными (например, значение координат)? Если последнее, то k-means должно быть хорошо в моем понимании. Для кластеризации дискретных значений потребуется другой алгоритм — возможно, иерархическая кластеризация?
Алгоритмы EM-tree и K-tree в проекте LMW-tree могут объединять такие большие и больше. Наш последний результат — объединение 733 миллионов веб-страниц в 600 000 кластеров. Существует также потоковый вариант EM-дерева, в котором набор данных передается с диска для каждой итерации.
Хороший трюк при кластеризации миллионов точек состоит в том, чтобы сэмплировать их, сгруппировать выборку, а затем добавить оставшиеся точки к существующей выборке.