Кластеризация: обучающий набор данных переменных измерений - PullRequest
1 голос
/ 18 декабря 2011

У меня есть набор данных из n данных, каждый из которых представлен набором извлеченных объектов.Как правило, алгоритмы кластеризации требуют, чтобы все входные данные имели одинаковые размеры (одинаковое количество признаков), то есть входные данные X представляют собой * d матрицу из n точек данных, каждая из которых имеет d признаков.В моем случае я ранее извлек некоторые объекты из своих данных, но число извлеченных объектов для каждого из данных, скорее всего, будет разным (я имею в виду, у меня есть набор данных X, в котором точки данных имеют не одинаковое количество объектов).Есть ли способ адаптировать их, чтобы кластеризовать их, используя некоторые распространенные алгоритмы кластеризации, требующие, чтобы данные были одинакового размера.

Спасибо

Ответы [ 3 ]

1 голос
/ 18 декабря 2011

Похоже, проблема в том, что это «редкий» набор данных.Обычно есть два варианта.

  1. Уменьшите размерность входного набора данных, используя методы многомерного масштабирования.Например, разреженный SVD (например, алгоритм Ланцоша ) или разреженный PCA .Затем примените традиционную кластеризацию к плотным нижним размерным выходам.

  2. Непосредственно применить алгоритм разреженной кластеризации, такой как разреженное k-среднее .Обратите внимание, что вы, вероятно, сможете найти PDF-документ этой статьи, если будете достаточно внимательно смотреть онлайн (попробуйте scholar.google.com).

[Обновлено после уточнения проблемы]

В задаче рукописное слово анализируется визуально для связанных компонентов (линий).Для каждого компонента извлекается фиксированное количество многомерных объектов.Нам нужно сгруппировать слова, каждое из которых может иметь один или несколько подключенных компонентов.

Предлагаемое решение:

Сначала классифицировать подключенные компоненты на 1000 (*)уникальные классификации компонентов.Затем классифицируйте слова по классифицированным компонентам, которые они содержат (редкая проблема, описанная выше).

* Обратите внимание, точное количество выбранных вами классификаций компонентов на самом деле не имеет значения, если оно достаточно высоко, поскольку анализ MDS сведет их к существенным «ортогональным» классификациям.

1 голос
/ 18 декабря 2011

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

Итак, ключевым вопросом здесь является как вы хотите сравнить свои функции . Это не имеет ничего общего с кластеризацией и сильно зависит от домена. Если ваши функции, например, вхождения слова, Расстояние косинуса - хороший выбор (использование 0 для отсутствующих функций). Но если вы, например, иметь набор ключевых точек SIFT, извлеченных из изображения, нет очевидного способа эффективно связать различные функции друг с другом, поскольку нет порядка в функциях (так что можно сравнить первую ключевую точку с первой ключевой точкой и т. д.) A Возможный подход здесь состоит в том, чтобы получить другой - однородный - набор функций. Как правило, набор слов функции используются для такой ситуации. Для изображений это также известно как визуальные слова . По сути, вы сначала кластеризируете подфункции, чтобы получить ограниченный словарный запас. Затем вы можете назначить каждому из исходных объектов «текст», состоящий из этих «слов», и использовать для них функцию расстояния, например косинусное расстояние.

0 голосов
/ 18 декабря 2011

Я вижу здесь два варианта:

  1. Ограничьте себя теми функциями, для которых все ваши точки данных имеют значение.
  2. Проверьте, можете ли вы генерировать разумные значения по умолчанию для отсутствующихfeatures.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...