Co-clustering – Real World Dataset Test #2

Macchina usata:
PowerPC G4, 1.5GHz, 768MB RAM, Mac OS X

Software usato:

Dataset Usato:
Mushrooms Database
Number of instances: 8124
Number of Attributes: 22
2480 missing values for attribute #12
Original Class Distribution: edible: 4208 (51.8%), poisonous: 3916 (48.2%)
Mushroom records drawn from The Audubon Society Field Guide to North
American Mushrooms (1981). G. H. Lincoff (Pres.), New York: Alfred A. Knopf
Donor: Jeff Schlimmer (Jeffrey.Schlimmer@a.gp.cs.cmu.edu)
Date: 27 April 1987

Algoritmo di co-clustering usato: Minimum Sum Squared Residue

Prova #1
Richiesti 2 cluster di riga e 1 di colonna. Totale: 2 co-cluster

Tempo impiegato: User = 2 second(s) 127370 ms, System = 0 second(s) 40949 ms, Time/Run = 2.12737 second(s)

Risultato: 3670 elementi nella classe “poisonous”, 4454 elementi nella classe “edible”.

Percentuale d’errore (elementi non classificati correttamente): ~3%

Prova #2
Richiesti 2 cluster di riga e 2 di colonna. Totale: 4 co-cluster

Tempo impiegato: User = 2 second(s) 158490 ms, System = 0 second(s) 40654 ms, Time/Run = 2.15849 second(s)

Risultato: 3915 elementi nella classe “poisonous”, 4209 elementi nella classe “edible”.

Percentuale d’errore: ~1.23 x 10^-4 (1 solo elemento è stato classificato erroneamente)

Dataset sintetici per Clustering Benchmark

Molto spesso, nell’eseguire i test di algoritmi di clustering, è molto utile avere a disposizione degli insiemi di dati campione sintetici, ovvero creati artificialmente e che non rispecchiano dei dati reali.

A tale scopo molto utile si rivela il lavoro fatto dal Center for Data Engineering, International Institute of Information Technology, Hyderabad, INDIA

Lo strumento riesce a produrre dataset sintetici molto rapidamente; in genere un insieme con spazio delle feature 2D, con un milione di punti e centinaia di cluster, viene prodotto in pochi secondi.

Per ogni insieme prodotto, viene fornito dettagli sul clustering, come:

- quali punti appartengono a quali cluster
- quanti cluster
- quanti punti per cluster
- forma dei cluster
- etc.

Inizio sviluppo SVC software

Basandomi sulla libSVM, ho iniziato lo sviluppo del software per SVC.

Devo dire che la disponibilità dei vari ricercatori nel fornire il codice da loro usato per effettuare i test è stata abbastanza scarna, a partire da Vapnik et al. e passando tra tutti coloro che negli ultimi anni hanno lavorato per eliminare il collo di bottiglia di questo approccio (cluster labeling).

Soltanto gli autori di

mi hanno gentilmente risposto inviandomi il codice (putroppo Matlab) da loro usato per i test.

Sto perciò sviluppando questo software (che avrei dovuto fare comunque) con una visione più ampia in mente. Per ora la struttura è essenziale e fortemente legata a libSVM:

Classi fondamentali

  • una classe astratta AbstractTrainer, che fornisce la fornisce l’interfaccia per l’implementazione della parte di training per il Support Vector Clustering.
  • una classe AbstractLabeler, che fornisce la fornisce l’interfaccia per l’implementazione della parte di cluster labeling per il SVC

Prime concretizzazioni

  • una classe OneClassTrainer, che implementa il training per il SVC utilizzando la One-class classification della libSVM
  • [da terminare] una classe CGLabeler, che implementa nel modo più banale (e inefficiente) l’algoritmo cluster labeling proposto in

Questa struttura permette di implementare agevolmente le diverse versioni di cluster labeling proposte in letteratura e al contempo di sviluppare diversi trainer, compreso quello per la formulazione Least Squares delle SVM, magari implementando l’algoritmo proposto in