Я пытаюсь решить проблему, которая включает сравнение большого количества наборов слов, каждый из которых содержит большое, упорядоченное количество слов из набора слов (всего около 600+, очень высокая размерность!) Для сходства, а затем кластеризация их в отдельные группы. Решение должно быть как можно более без присмотра.
Данные выглядят как
[яблоко, банан, апельсин ...]
[Яблоко, банан, виноград ...]
[Желе, анис, апельсин ...]
[Клубника, банан, апельсин ...]
... и т.д.
Порядок слов в каждом наборе имеет значение ([Apple, Banana, Orange] отличается от [Apple, Orange, Banana]
Подход, который я использовал до сих пор, заключался в том, чтобы использовать расстояние Левенштейна (ограниченное порогом расстояния) в качестве метрики, вычисляемой в скрипте Python, где каждое слово является уникальным идентификатором, генерировать матрицу подобия из расстояний и выбрасывать эта матрица в k-Mediods в KNIME для группировок.
Мои вопросы:
- Является ли Левенштейн наиболее подходящей метрикой расстояния для этой задачи?
- Является ли средняя / медоидная кластеризация прототипа лучшим способом для группировки?
- Я еще не особо задумывался над проверкой выбора 'k' в кластеризации. Будет ли оценка кривой кластеризации SSE лучшим способом для этого?
- Есть ли недостатки в моей методологии?
- В качестве дополнения к решению в будущем, учитывая данные обучения, у кого-нибудь может возникнуть идея о назначении вероятностей для кластерных назначений? Например, набор 1 имеет 80% вероятности оказаться в кластере 1 и т. Д.
Надеюсь, мои вопросы не кажутся слишком глупыми или ответы до боли очевидны, я относительно новичок в интеллектуальном анализе данных.
Спасибо!