Domanda

Qualcuno conosce un buon algoritmo per eseguire il clustering su attributi sia discreti che continui? Sto lavorando a un problema di identificazione di un gruppo di clienti simili e ogni cliente ha attributi sia discreti che continui (pensa al tipo di clienti, alla quantità di entrate generate da questo cliente, alla posizione geografica ed ecc.)

Tradizionalmente algoritmo come K-mean o EM funzionano per attributi continui, e se avessimo un mix di attributi continui e discreti?

È stato utile?

Soluzione

Se ricordo bene, l'algoritmo COBWEB potrebbe funzionare con attributi discreti.

E puoi anche fare diversi "trucchi" agli attributi discreti al fine di creare metriche di distanza significative.

Potresti google per il raggruppamento di attributi categorici / discreti, uno dei primi risultati: ROCK: un algoritmo di clustering robusto per attributi categorici .

Altri suggerimenti

R è un ottimo strumento per il clustering: l'approccio standard sarebbe quello di calcolare una matrice di dissomiglianza sui dati misti usando daisy , quindi raggruppando con quella matrice usando agnes .

Il cba su CRAN include una funzione per raggruppare su predittori binari basati su ROCK.

Potresti anche considerare propagazione di affinità come possibile soluzione. Ma per superare il dilemma continuo / discreto è necessario definire una funzione che valorizzi gli stati discreti.

Vorrei effettivamente presentare coppie di attributi discreti agli utenti e chiedere loro di definire la loro vicinanza. Li presenteresti con una scala che arriva dal [sinonimo..molto straniero] o simile. Avendo molte persone fare ciò, si otterrà una funzione di prossimità ampiamente accettata per i valori degli attributi non lineari.

Che ne dici di trasformare ciascuno dei tuoi attributi categorici in una serie di attributi dell'indicatore binario N-1 (dove N è il numero di categorie)? Non dovresti avere paura dell'alta dimensionalità, in quanto una rappresentazione sparsa (come ad esempio SequentialAccessSparseVector di mahout può essere utilizzata). Una volta che lo fai, puoi usare un K classico o qualunque algoritmo di clustering solo numerico standard.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top