Збіг подібних предметів із набору


10

Я намагаюся відповідати предметам. З огляду на набір елементів, я можу класифікувати за шкалою від 0 до 100, наскільки вони схожі один на одного. Наприклад, якщо пункт n 1 - молоко, а пункт n 2 - також молоко, то подібність між n 1 і n 2 складе 100%. Якщо n 3 - сода, то подібність між n 1 і n 3 складе, мабуть, 80% тощо.nn1n2n1n2n3n1n3

Я намагаюся розібратися, як згрупувати елементів у групи подібних предметів, але це складна проблема. Я стикаюся з наступним випуском: Кінь схожий на корову, яка схожа на козла, яка частково схожа на козячий сир, яка схожа на сир, яка співвідноситься з сухарями. Однак я не очікував, що кінь буде в тій же групі, як сухарі. Кожен елемент може бути взаємопов'язаним, але початок і кінець можуть бути не.n

Будь-які ідеї?


В еволюційній біології результати такого парного кластеризації називаються філогенними деревами , тому ви можете додати це до набору корисних пошукових термінів.
hardmath

Відповіді:


7

Тут ви хочете зробити спостереження з розділенням N на кластери K, які мають подібні властивості. Це називається кластеризацією, і ви можете знайти більше інформації тут .

Оскільки у вас вже є числова міра подібності, це змушує мене задуматися про використання алгоритму K-Means , в якому ви працюєте в кілька етапів:

  • Ініціалізуйте кластерні центроїди випадковим чином
  • Призначте кожне спостереження кластеру, що відповідає найближчому центроїду.
  • Оновіть центроїди як нове значення елементів кластера.

Ви можете перевірити конвергенцію, коли центроїди перестали рухатися або в межах певного порогу.

Це забезпечило б, що елементи кожного кластеру дещо співвідносяться, і ви можете мати більше дрібнозернистих кластерів, збільшуючи кількість кластерів в алгоритмі ("K"). Пошук кількості кластерів залежить від кожної проблеми, і я радимо спробувати купу значень для своїх проблем, подивитися, що виходить згруповано разом, і побачити, що має сенс.

Сподіваюся, що це допомагає.


5

Я думаю, що ви шукаєте називається "кластерний аналіз" або "кластеризація". Існує багато різних алгоритмів. У вашому випадку ви хочете отримати деяку "кластеризацію підключення", тобто групові елементи разом на основі властивості, що пов'язує кожен два.

Погляньте на алгоритми кластеризації в scikits.learn (код Python) та посилання на них, згадані там.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.