KDnuggets.com (KD stands for Knowledge Discovery) is the leading source of information on Data Mining, Web Mining, Knowledge Discovery, and Decision Support Topics, including News, Software, Solutions, Companies, Jobs, Courses, Meetings, Publications, and more.
Category Archives: Software
Creating Vector Models from Text Documents
MC is a C++ program that creates vector-space models from
text documents that can be used for text mining applications. MC provides
an efficient multi-threaded implementation that can process very
large document collections. For example, MC took 1,189 seconds using
only 17.5 MBytes of main memory to process a sample collection of
about 114,000 documents (the experiment was run on a Sun Ultra10
workstation). More details on MC and its use in a fast clustering
algorithm are available in
this paper.
Co-clustering softwares
The first co-clustering software is the Co-cluster developed at University of Austin, Texas. The software you can download here is the version 1.1 you can find also at the original web page.
The package hosted here includes a patch to allow the software compilation also with gcc 4.0 and so on modern Linux and Mac OS X systems. Furthermore, it also contains some bash scripts (*.sh) to analyze co-clustering results and produce clustering quality measures with respect to labeled datasets.
The original software is released under GPL license, and so is this.
Download
The original version of the second Co-clustering software is available here and it implements all the six approximation schemes for the Co-clustering, both for the Euclidean distance and for I-divergence.
The package hosted here includes also the same bash scripts included in the aforesaid Co-cluster package.
No license informations were included into the original Bregman co-clustering package, but it seems to be a fork of the Co-cluster software v. 1.0. The latter was released under GPL license, so the code of the Bregman co-clustering should be under the same license.
Download
Support Vector Clustering Code
UPDATE 18th of Feb, 2008: the official page of this software is now located at my official website.
Here I put the preliminary alpha source code for the Support Vector Clustering. It implements the Cone Cluster Labeling for the cluster assignment part
It also implements the Secant-like kernel width generator.
The SVM training part is performed by the means of the LIBSVM library, whereas the graph utilities are provided by the Boost Graph Library. Both libraries allow to redistribute the source code under some license terms, so the package you download contains everything you need to compile the code, you have just to type “make” in the source root directory.
For more information, take a look to the README directory you find once you have unpacked the tarball.
Download
SVC Source Code – SVC Doxygen documentation
UPDATE 18th of Feb, 2008: the official page of this software is now located at my official website.
Multivariate Data Analysis Software and Resources
A collection of the software for multivariate data analysis is available here.
SVC Software Documentation
In the “Documents” section has been published the documentation (generated with Doxygen) of the C++ implementation of Support Vector Clustering (SVC).
SVC: Gaussian Kernel Width Generator
Per il Support Vector Clustering esiste un solo metodo per generare valori pertinenti della larghezza del kernel gaussiano, ed è mostrato in
-
S. Lee and K. M. Daniels, "Gaussian Kernel Width Generator for Support Vector Clustering," in Advances in Bioinformatics and Its Applications, 2005, pp. 151-162.
@inproceedings{gauskergenerator2004,
author = {Sei-Hyung Lee and Karen M. Daniels},
Booktitle = {Advances in Bioinformatics and Its Applications},
Date-Added = {2007-10-23 17:21:17 +0200},
Date-Modified = {2007-10-23 17:21:17 +0200},
Editor = {Matthew He and Giri Narasimhan and Sergei Petoukhov},
Keywords = {SVM, clustering, gaussian kernel},
Pages = {151--162},
Title = {Gaussian Kernel Width Generator for Support Vector Clustering},
Url = {http://www.cs.uml.edu/~kdaniels/papers/ICBA.pdf},
Volume = {8},
Year = {2005},
Bdsk-Url-1 = {http://www.cs.uml.edu/~kdaniels/papers/ICBA.pdf}
}
che di seguito indicheremo con GKWG.
Il metodo si basa sullo stesso problema di programmazione quadratica su cui si basa l’SVC stesso, unito a un algoritmo secante.
Gli autori usano questo metodo per generare una lista di valori per la larghezza del kernel prima di eseguire il Support Vector Clustering. Una volta ottenuta la lista, si esegue SVC per ogni valore di quella lista, finché non si raggiunge il criterio di stop.
Gli svantaggi di questo approccio sono due:
- Si rischia di generare una lista di valori più lunga del necessario
- Si aggiunge una complessità non indifferente all’intero processo di clustering, poiché il processo di risoluzione del problema di programmazione quadratica ha una notevole complessità (teoricamente O(N^3), praticamente, tramite SMO Algorithm, O(m*N^2)) e questo viene eseguito una volta per ogni valore di larghezza del kernel generato.
Nel nostro caso, si è riuscito a fondere il processo GKWG con il processo di clustering, sfruttando i calcoli che vengono eseguiti necessariamente per la fase di cluster description dell’SVC. Abbiamo dunque eliminato i due svantaggi precedenti.
Risultati
La nostra implementazione del GKWG porta, oltre a un vantaggio in termini di complessità computazionale totale, anche a risultati migliori di quelli presenti in letteratura, per ora in riferimento soltanto all’IRIS Data Set (vedere esperimenti preliminari SVC).
Si è infatti raggiunta, sull’IRIS completo di tutte le feature, un’accuratezza del 92.6667% (precedentemente ci si era fermati al 90%), grazie al valore di larghezza del kernel ottenuto dal GKWG. Risultati migliori sono stati raggiunti in letteratura soltanto riducendo lo spazio delle feature da 4D a 3D o 2D, tramite PCA o Sammon non linear mapping. Restando invece in 4D, tutti i testi in letteratura ottengono un’accuratezza inferiore alla nostra.
Dettagli del test su IRIS
Total time taken: 0.01 s
Kernel Width: 0.0917017
Number of clusters: 3
Number of non-singleton clusters: 3
Number of singleton clusters: 0
Points per cluster:
Cluster 0: 50
Cluster 1: 55
Cluster 2: 45
Class 0
TP: 50 FP: 0
FN: 0 TN: 100
Precision: 100 – Recall: 100 – F1: 100
Class 1
TP: 47 FP: 8
FN: 3 TN: 92
Precision: 85.4545 – Recall: 94 – F1: 89.5238
Class 2
TP: 42 FP: 3
FN: 8 TN: 97
Precision: 93.3333 – Recall: 84 – F1: 88.4211
Macroaveraging: 92.6483
Accuracy: 92.6667
SVC: politica per classificazione BSV
L’algoritmo di Cluster Assignment usato
come tutti gli altri proposti in letteratura non tratta esplicitamente la classificaizione dei Bounded Support Vector, ovvero di quei punti che, per effetto del valore della costante di margine morbido, finiscono fuori dalla sfera di descrizione del dominio anche se in realtà fanno parte di una delle classi del problema.
Il Cone Cluster Labeling prevede due passi:
- classificazione dei SV
- classificazione di tutti gli altri punti in relazione ai SV
che di fatto comprende anche i BSV in “tutti gli altri punti”.
Si è scelto di modificare in questo modo l’algoritmo:
- classificazione dei SV
- classificazione di tutti gli altri punti (tranne i BSV) in relazione ai SV
- classificazione dei BSV in relazione a tutti gli altri punti già classificati
Nel caso dell’IRIS data set, questa modifica ha portato l’accuratezza da un valore di 89,333% a un valore del 90%.
SVC Preliminary Experiments
In the section Documents is available for download the PDF with the configurations used for tests and related results; is also available the ZIP archive containing the data-sets used for the experiments.
Co-clustering – Synthetic Dataset Test #1
Macchina usata:
PowerPC G4, 1.5GHz, 768MB RAM, Mac OS X
Software usato:
Dataset usato:
Il dataset usato in questo test è un dataset sintetico, generato grazie a
Il dataset è così composto:
Oggetti: 1000
Attributi: 10
Classi: 5, per un totale di 888 punti (Cluster 0: 327, Cluster 1: 134, Cluster 2: 162, Cluster 3: 132, Cluster 4: 133)
Punti di disturbo: 112 (punti non classificabili)
Algoritmo di co-clustering usato: Euclidean Distance Based, Minimum Sum Squared, Information Theoretic
Problemi: Da questo primo test condotto su un dataset disturbato, lo schema di co-clustering sembra non essere pensato per identificare il rumore e separarlo dal resto della classificazione, col risultato che tutte le istanze di co-clustering tendono a classificare il rumore in una delle cinque classi richieste, sfalsando i risultati.
Eliminazione punti di rumore: Eliminando i punti di rumore, abbiamo ottenuto un dataset di 888 punti e l’algoritmo (Euclidean Distance Based, con 5 co-cluster richiesti) ha separato perfettamente le 5 classi senza alcun errore in un tempo così espresso:
User = 0 second(s) 138552 ms
System = 0 second(s) 6630 ms
Time/Run = 0.138552 second(s)