From the category archives:

Test

SVC and different kernels

by Vincenzo Russo on January 10, 2008

Our experiments showed more than once that the employment of kernels other than the Gaussian one can significantly improve the results in certain circumstances.

From our experiments we know that

  • The Laplacian Kernel works well on some scaled/normalized data.
  • The Exponential Kernel generally behaves the same of the Gaussian one, but in some situations makes the difference, as happened in the experiments with IRIS data (multivariate) or CLASSIC3 data (text documents in BOW model with TF-IDF encoding).

These results suggest to go deeper in the matter and explore other kernels that can be useful in clustering with SVC.

{ 0 comments }

Induced Missing Values Experiments - Stage 2

by Vincenzo Russo on October 10, 2007

This is the continuation of the experiments started few days ago.

Two other datasets have been involved in this type of experiments. Both of them are Astrophysics datasets, more precisely two dataset containing Stars and Galaxies.

Star/Galaxies separation is a problem usually tackled with supervised learning methodologies. In our work several clustering testes are conducted on such type of data.

These two datasets was chosen to be quite simple to separate, because we are interested in the robustness with respect missing values.

Starting from the original datasets, I have created eight variants for each of them, in this way

  • 4 variants affecting only 3 features out of 15, with 5, 10, 20, 30 percent of objects reporting missing values for all of the 3 features, respectively
  • 4 variants affecting 6 features out of 15, with 5, 10, 20, 30 percent of objects reporting missing values for all of the 6 features, respectively

The experiments was done with Euclidean Co-clustering (Information-theoretic cannot work with negative values) and SVC.

An archive with all results is available for download (it contains also the results of the previous stage).

In the files above:

- “MV� stands for “Missing Values�
- “FC� stands for “Feature Clusters�
- FC1 means no feature clustering
- FC2 means two clusters of feature requested
- FC3 means three clusters of feature requested
- CC stands for Co-clustering

{ 0 comments }

Induced Missing Values Experiments - Stage 1

by Vincenzo Russo on October 1, 2007

Few days ago I made ready a tool to induce pseudo-random missing values within datasets. This tool allow us to test the robustness of both Bregman Co-clustering and SVC with respect to missing values.

The tool accepts two parameters: the fraction of objects that will be affected by the process, and the list of features involved.

As is my custom, I started this series of experiments with the IRIS data. So, I created these IRIS dataset variants

- IRIS 5a: 5% of objects with missing values. One feature (#3) involved.
- IRIS 5b: 5% of objects with missing values. Two features (#3, #4) involved.
- IRIS 10a: 10% of objects with missing values. One feature (#3) involved.
- IRIS 10b: 10% of objects with missing values. Two features (#3, #4) involved.
- IRIS 20a: 20% of objects with missing values. One feature (#3) involved.
- IRIS 20b: 20% of objects with missing values. Two features (#3, #4) involved.
- IRIS 30a: 30% of objects with missing values. One feature (#3) involved.
- IRIS 30b: 30% of objects with missing values. Two features (#3, #4) involved.

We recall the IRIS data have 4 features.

Here you can download the results.

The experiments was done with Co-clustering and SVC. Information-theoretic co-clustering results are not in the files above, because they were irrelevant (very poor performance).

In the files above:

- “MV” stands for “Missing Values”
- “FC” stands for “Feature Clusters”
- FC1 means no feature clustering
- FC2 means two clusters of feature requested.
- CC stands for Co-clustering

{ 1 comment }

Astronomical Data, Missing Values and SVC

by Vincenzo Russo on August 22, 2007

Un test effettuato più che per curiosità che per altro ha dato risultati inaspettati.

Premessa: ho da poco introdotto l’utilizzo del kernel Laplaciano nel Support Vector Clustering. Senza soffermarmi troppo su questo particolare, sottolineo soltanto che l’utilizzo di questo Kernel permette spesso di trovare buone se non ottime soluzioni in 1/3 cicli, anche se non sempre superiori a quelle trovate col kernel Gaussiano.

Veniamo al dunque. Avevo bisogno di dataset astronomici più managgevoli per fare dei test, così spulciando varie pubblicazioni in merito, trovo lo SDSS Sky Server. Seguendo le linee guida e le pubblicazioni, ho estratto dai database dello SkyServer finora due piccoli dataset (i nomi li ho inventati io):

  • S2kG3k
    2000 stelle e 3000 galassie, rappresentate da 20 features (point spread function fluxes, petrosian radii, in arcsec, small-scale roughness of object, shapes).
    Numero di oggetti riportanti missing values: 1364.
    Numero di missing values: 2354
  • S3k5G1k5
    3500 stelle e 1500 galassie, rappresentate da 20 features (point spread function fluxes, petrosian radii, in arcsec, small-scale roughness of object, shapes).
    Numero di oggetti riportanti missing values: 2352.
    Numero di missing values: 4157

Dopo aver appurato che dataset simili ma senza missing values erano intrisecamente difficili da separare (strongly overlapping clusters), prima di tentare nuovi dataset per il Co-clustering, ho preferito, per curiosità, usare i succitati dataset con l’SVC.

Arriviamo direttamente al nocciolo, ovvero l’esecuzione dei test (separazione di stelle da galassie) con la seguente configurazione: SVC con Kernel Laplaciano e distanza euclidea L1.

Trattamenti al dataset:

  • imputazione del valore 0 per i missing values
  • normalizzazione dei dati ai vettori unitari (processo implicito quando si usa il kernel Gaussiano)
  • .

    Risultati di SVC sul primo dataset (ottenuto in un solo ciclo di SVC):

    Class 0
    TP: 2000 FP: 318
    FN: 0 TN: 2682

    Precision: 86.2813 - Recall: 100 - F1: 92.6355

    Class 1
    TP: 2682 FP: 0
    FN: 318 TN: 2000

    Precision: 100 - Recall: 89.4 - F1: 94.4034

    Accuracy: 93.64

    Risultati di SVC sul secondo dataset (ottenuto in un due cicli di SVC):

    Class 0
    TP: 3500 FP: 16
    FN: 0 TN: 1484

    Precision: 99.5449 - Recall: 100 - F1: 99.7719

    Class 1
    TP: 1484 FP: 0
    FN: 16 TN: 3500

    Precision: 100 - Recall: 98.9333 - F1: 99.4638

    Accuracy: 99.68

    Questi test risultano incoraggianti per il clustering di dati astronomici tipicamente affetti dalla presenza di missing data values.

    PS: nei test sopra la classe 0 è quella delle stelle, la 1 quelle delle galassie.

    { 2 comments }

    Contributi al Support Vector Clustering

    by Vincenzo Russo on August 20, 2007

    I contributi portati al SVC, seppur non di grandissima entità, sono diversi. Nel seguito vengono divisi in Contributi all’efficienza del clustering e Contributi alle prestazioni computazionali.

    Contributi all’efficienza del clustering

    Cluster assignment. Ricordiamo che tra tutti gli algortimi di cluster assignment presentati in letteratura, quello che è stato ritenuto il miglior compromesso tra qualità e complessità computazionale è il Cone Cluster Labeling (CCL)

    • S. Lee and K. M. Daniels, "Cone Cluster Labeling for Support Vector Clustering," in Proceedings of 6th SIAM Conference on Data Mining, 2006, pp. 484-488.
      @inproceedings{cone2006,
        author = {Sei-Hyung Lee and Karen M. Daniels},
        Booktitle = {Proceedings of 6th SIAM Conference on Data Mining},
        Date-Added = {2007-04-29 16:58:13 +0200},
        Date-Modified = {2007-06-19 18:52:22 +0200},
        Keywords = {SVM, clustering},
        Month = {May},
        Pages = {484–488},
        Title = {Cone Cluster Labeling for Support Vector Clustering},
        Url = {http://www.siam.org/meetings/sdm06/proceedings/046lees.pdf},
        Year = {2006},
        Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGBwpZJGFyY2hpdmVyWCR2ZXJzaW9uVCR0b3BYJG9iamVjdHNfEA9OU0tleWVkQXJjaGl2ZXISAAGGoNEICVRyb290gAGoCwwXGBkaHiVVJG51bGzTDQ4PEBMWWk5TLm9iamVjdHNXTlMua2V5c1YkY2xhc3OiERKABIAFohQVgAKAA4AHXHJlbGF0aXZlUGF0aFlhbGlhc0RhdGFfEEsuLi8uLi8uLi9QYXBlcnMvTGVlL0NvbmUgQ2×1c3RlciBMYWJlbGluZyBmb3IgU3VwcG9ydCBWZWN0b3IgQ2×1c3RlcmluZy5wZGbSGw8cHVdOUy5kYXRhTxECLgAAAAACLgACAAAJRG9jdW1lbnRzAAAAAAAAAAAAAAAAAAAAAAAAvs54rkgrAAAANyVBH0NvbmUgQ2×1c3RlciBMYWJlbGluIzJGMDk0My5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvCUPCWn72AAAAAAAAAAAAAwADAAAJAAAAAAAAAAAAAAAAAAAAAANMZWUAABAACAAAvs5cjgAAABEACAAAwlpi1gAAAAEAFAA3JUEANxuAAACy8gAAEsYAABKtAAIATkRvY3VtZW50czpuZW1vOkRvY3VtZW50czpVbml2ZXJzaXRhOlBhcGVyczpMZWU6Q29uZSBDbHVzdGVyIExhYmVsaW4jMkYwOTQzLnBkZgAOAHAANwBDAG8AbgBlACAAQwBsAHUAcwB0AGUAcgAgAEwAYQBiAGUAbABpAG4AZwAgAGYAbwByACAAUwB1AHAAcABvAHIAdAAgAFYAZQBjAHQAbwByACAAQwBsAHUAcwB0AGUAcgBpAG4AZwAuAHAAZABmAA8AFAAJAEQAbwBjAHUAbQBlAG4AdABzABIAXS9uZW1vL0RvY3VtZW50cy9Vbml2ZXJzaXRhL1BhcGVycy9MZWUvQ29uZSBDbHVzdGVyIExhYmVsaW5nIGZvciBTdXBwb3J0IFZlY3RvciBDbHVzdGVyaW5nLnBkZgAAEwASL1ZvbHVtZXMvRG9jdW1lbnRzABUAAgAX//8AAIAG0h8gISJYJGNsYXNzZXNaJGNsYXNzbmFtZaMiIyRdTlNNdXRhYmxlRGF0YVZOU0RhdGFYTlNPYmplY3TSHyAmJ6InJFxOU0RpY3Rpb25hcnkACAARABsAJAApADIARABJAEwAUQBTAFwAYgBpAHQAfACDAIYAiACKAI0AjwCRAJMAoACqAPgA/QEFAzcDOQM+A0cDUgNWA2QDawN0A3kDfAAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAOJ},
        Bdsk-Url-1 = {http://www.siam.org/meetings/sdm06/proceedings/046lees.pdf}
      }

    Il primo contributo in questo senso è stato una esplicita politica per trattare i BSV. Un alto regime di BSV si rende necessario soprattutto per separare cluster fortemente sovrapposti. I BSV però finiscono fuori dalla descrizione del dominio, risultando outliers.

    La scelta è stata quella di applicare il CCL così com’era escludendo i BSV dal processo e poi una volta trovato i cluster, assegnare i BSV a questi ultimi con una semplice politica di prossimità: un BSV è assegnato al cluster al quale appartiene il punto più prossimo.

    Questo ci ha permesso di classificare i BSV in maniera mediamente corretta, migliorando l’efficienza.

    In

    • S. Lee and K. M. Daniels, "Gaussian Kernel Width Selection and Fast Cluster Labeling for Support Vector Clustering," Department of Computer Science, University of Massachussets Lowell2005.
      @techreport{kernwidthsvc2005,
        author = {Sei-Hyung Lee and Karen M. Daniels},
        Date-Added = {2007-05-18 10:44:22 +0200},
        Date-Modified = {2007-06-20 08:28:06 +0200},
        Institution = {Department of Computer Science, University of Massachussets Lowell},
        Keywords = {svm, clustering, kernel machines},
        Title = {Gaussian Kernel Width Selection and Fast Cluster Labeling for Support Vector Clustering},
        Url = {http://www.cs.uml.edu/~kdaniels/papers/SeiTechReport2005.pdf},
        Year = {2005},
        Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGBwpZJGFyY2hpdmVyWCR2ZXJzaW9uVCR0b3BYJG9iamVjdHNfEA9OU0tleWVkQXJjaGl2ZXISAAGGoNEICVRyb290gAGoCwwXGBkaHiVVJG51bGzTDQ4PEBMWWk5TLm9iamVjdHNXTlMua2V5c1YkY2xhc3OiERKABIAFohQVgAKAA4AHXHJlbGF0aXZlUGF0aFlhbGlhc0RhdGFfEG8uLi8uLi8uLi9QYXBlcnMvTGVlL0dhdXNzaWFuIEtlcm5lbCBXaWR0aCBTZWxlY3Rpb24gYW5kIEZhc3QgQ2×1c3RlciBMYWJlbGluZyBmb3IgU3VwcG9ydCBWZWN0b3IgQ2×1c3RlcmluZy5wZGbSGw8cHVdOUy5kYXRhTxECmgAAAAACmgACAAAJRG9jdW1lbnRzAAAAAAAAAAAAAAAAAAAAAAAAvs54rkgrAAAANyVBH0dhdXNzaWFuIEtlcm5lbCBXaWR0IzMxQ0FDQS5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxysrCcyn+UERGIAAAAAAAAwADAAAJAAAAAAAAAAAAAAAAAAAAAANMZWUAABAACAAAvs5cjgAAABEACAAAwnMN3gAAAAEAFAA3JUEANxuAAACy8gAAEsYAABKtAAIATkRvY3VtZW50czpuZW1vOkRvY3VtZW50czpVbml2ZXJzaXRhOlBhcGVyczpMZWU6R2F1c3NpYW4gS2VybmVsIFdpZHQjMzFDQUNBLnBkZgAOALgAWwBHAGEAdQBzAHMAaQBhAG4AIABLAGUAcgBuAGUAbAAgAFcAaQBkAHQAaAAgAFMAZQBsAGUAYwB0AGkAbwBuACAAYQBuAGQAIABGAGEAcwB0ACAAQwBsAHUAcwB0AGUAcgAgAEwAYQBiAGUAbABpAG4AZwAgAGYAbwByACAAUwB1AHAAcABvAHIAdAAgAFYAZQBjAHQAbwByACAAQwBsAHUAcwB0AGUAcgBpAG4AZwAuAHAAZABmAA8AFAAJAEQAbwBjAHUAbQBlAG4AdABzABIAgS9uZW1vL0RvY3VtZW50cy9Vbml2ZXJzaXRhL1BhcGVycy9MZWUvR2F1c3NpYW4gS2VybmVsIFdpZHRoIFNlbGVjdGlvbiBhbmQgRmFzdCBDbHVzdGVyIExhYmVsaW5nIGZvciBTdXBwb3J0IFZlY3RvciBDbHVzdGVyaW5nLnBkZgAAEwASL1ZvbHVtZXMvRG9jdW1lbnRzABUAAgAX//8AAIAG0h8gISJYJGNsYXNzZXNaJGNsYXNzbmFtZaMiIyRdTlNNdXRhYmxlRGF0YVZOU0RhdGFYTlNPYmplY3TSHyAmJ6InJFxOU0RpY3Rpb25hcnkACAARABsAJAApADIARABJAEwAUQBTAFwAYgBpAHQAfACDAIYAiACKAI0AjwCRAJMAoACqARwBIQEpA8cDyQPOA9cD4gPmA/QD+wQEBAkEDAAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAQZ},
        Bdsk-Url-1 = {http://www.cs.uml.edu/~kdaniels/papers/SeiTechReport2005.pdf}
      }

    si affronta il problema col dataset Breast Cancer Wisconsin. In quell’occasione i BSV vengono prima identificati, poi rimossi e infine l’intero processo SVC viene ripetuto, per poi classificare solo allora i BSV. Così facendo ottengono un’accuratezza di circa il 92%.

    Il nostro approccio evita di ripetere l’intero SVC due volte per lo stesso dataset e sul Breast Cancer Wisconsin ottiene un’accuratezza di oltre il 96%.

    Il secondo piccolo contributo alla procedura CCL è stato l’intuizione di utilizzare la distanza L1 in luogo della distanza L2. In svariati test l’uso di questa distanza ha portato a guadagni nell’acuratezza di classificazione, specialmente nei casi in cui si utilizza il parametro C=1. Nel classico caso dell’IRIS dataset, dopo le migliorie passate, abbiamo ottenuto un ulteriore incremento di oltre mezzo punto percentuale (da 92.6667 a 93.3333).

    Generazione dei valori di larghezza per il kernel gaussiano. Ricordiamo che l’unica tecnica proposta per la generazione di tali valori è quella 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}
      }

    Per un fortunato errore di implementazione, ho scoperto che tale procedura genera sì dei valori di Kernel Width monotoni crescenti, ma spesso “salta” dei valori che darebbero un ottimo risultato. Ovvero, la differenza tra due valori consecutivi è spesso troppo alta. Corretto l’errore di implementazione, ho pensato a come gestire esplicitamente il comportamento avvenuto fortuitamente. Così ho introdotto un nuovo parametro per il generatore di valori, che ho chiamato costante di smorzamento o, in inglese, softening constant. Questa costante può variare nell’intervallo aperto (0,1]. Quando assume valore 1, nessun smorzamento viene effettuato. Per valori minori di 1 invece il valore ogni volta generato dal Kernel Width Generator viene “smorzato” di una percentuale. Per esempio, una costante di smorzamento di 0.5 dimezza ogni volta il valore generato. Con tale valore di smorzamento sono stati constatati due comportamenti che, a seconda del dataset, possono verificarsi al contempo o separatamente (o per niente):

    • viene trovato un valore di kernel width che assicura una maggiore accuratezza
    • il valore di kernel width giusto viene trovato più velocemente (quindi eseguendo meno volte il SVC)

    Nel caso dell’IRIS ha permesso di abbattere il muro del 90% di accuratezza nello stesso numero di cicli; nel caso di un dataset sintetico (finora ancora non presentato nel blog) ha permesso di trovare un buon valore di kernel width in 9 cicli invece dei 19 necessari senza smorzamento (con un aumento di accuratezza quasi insignificante 0.1%).

    Stima del valore di C (soft constraint). L’altro parametro fondamentale del SVC è C, che controlla il numero di BSV. Per generare un insieme di possibili valori per C non è stato ancora presentato nulla in letteratura. Un paio di suggerimenti per una stima di tale valore sono presenti in

    • S. Lee and K. M. Daniels, "Gaussian Kernel Width Selection and Fast Cluster Labeling for Support Vector Clustering," Department of Computer Science, University of Massachussets Lowell2005.
      @techreport{kernwidthsvc2005,
        author = {Sei-Hyung Lee and Karen M. Daniels},
        Date-Added = {2007-05-18 10:44:22 +0200},
        Date-Modified = {2007-06-20 08:28:06 +0200},
        Institution = {Department of Computer Science, University of Massachussets Lowell},
        Keywords = {svm, clustering, kernel machines},
        Title = {Gaussian Kernel Width Selection and Fast Cluster Labeling for Support Vector Clustering},
        Url = {http://www.cs.uml.edu/~kdaniels/papers/SeiTechReport2005.pdf},
        Year = {2005},
        Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGBwpZJGFyY2hpdmVyWCR2ZXJzaW9uVCR0b3BYJG9iamVjdHNfEA9OU0tleWVkQXJjaGl2ZXISAAGGoNEICVRyb290gAGoCwwXGBkaHiVVJG51bGzTDQ4PEBMWWk5TLm9iamVjdHNXTlMua2V5c1YkY2xhc3OiERKABIAFohQVgAKAA4AHXHJlbGF0aXZlUGF0aFlhbGlhc0RhdGFfEG8uLi8uLi8uLi9QYXBlcnMvTGVlL0dhdXNzaWFuIEtlcm5lbCBXaWR0aCBTZWxlY3Rpb24gYW5kIEZhc3QgQ2×1c3RlciBMYWJlbGluZyBmb3IgU3VwcG9ydCBWZWN0b3IgQ2×1c3RlcmluZy5wZGbSGw8cHVdOUy5kYXRhTxECmgAAAAACmgACAAAJRG9jdW1lbnRzAAAAAAAAAAAAAAAAAAAAAAAAvs54rkgrAAAANyVBH0dhdXNzaWFuIEtlcm5lbCBXaWR0IzMxQ0FDQS5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxysrCcyn+UERGIAAAAAAAAwADAAAJAAAAAAAAAAAAAAAAAAAAAANMZWUAABAACAAAvs5cjgAAABEACAAAwnMN3gAAAAEAFAA3JUEANxuAAACy8gAAEsYAABKtAAIATkRvY3VtZW50czpuZW1vOkRvY3VtZW50czpVbml2ZXJzaXRhOlBhcGVyczpMZWU6R2F1c3NpYW4gS2VybmVsIFdpZHQjMzFDQUNBLnBkZgAOALgAWwBHAGEAdQBzAHMAaQBhAG4AIABLAGUAcgBuAGUAbAAgAFcAaQBkAHQAaAAgAFMAZQBsAGUAYwB0AGkAbwBuACAAYQBuAGQAIABGAGEAcwB0ACAAQwBsAHUAcwB0AGUAcgAgAEwAYQBiAGUAbABpAG4AZwAgAGYAbwByACAAUwB1AHAAcABvAHIAdAAgAFYAZQBjAHQAbwByACAAQwBsAHUAcwB0AGUAcgBpAG4AZwAuAHAAZABmAA8AFAAJAEQAbwBjAHUAbQBlAG4AdABzABIAgS9uZW1vL0RvY3VtZW50cy9Vbml2ZXJzaXRhL1BhcGVycy9MZWUvR2F1c3NpYW4gS2VybmVsIFdpZHRoIFNlbGVjdGlvbiBhbmQgRmFzdCBDbHVzdGVyIExhYmVsaW5nIGZvciBTdXBwb3J0IFZlY3RvciBDbHVzdGVyaW5nLnBkZgAAEwASL1ZvbHVtZXMvRG9jdW1lbnRzABUAAgAX//8AAIAG0h8gISJYJGNsYXNzZXNaJGNsYXNzbmFtZaMiIyRdTlNNdXRhYmxlRGF0YVZOU0RhdGFYTlNPYmplY3TSHyAmJ6InJFxOU0RpY3Rpb25hcnkACAARABsAJAApADIARABJAEwAUQBTAFwAYgBpAHQAfACDAIYAiACKAI0AjwCRAJMAoACqARwBIQEpA8cDyQPOA9cD4gPmA/QD+wQEBAkEDAAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAQZ},
        Bdsk-Url-1 = {http://www.cs.uml.edu/~kdaniels/papers/SeiTechReport2005.pdf}
      }

    ma nei miei esperimenti pratici non hanno prodotto un buon risultato. Probabilmente ciò è dovuto anche al fatto che tale stima veniva fatta assumendo di usare come Cluster Assignment l’algoritmo classico Complete Graph Cluster Labeling.

    Pertanto inizialmente ho variato manualmente il valore di C fino a trovarne uno che desse buoni risultati. Col susseguirsi degli esperimenti, ho notato che i valori di C che davano buoni risultati avevano una certa sistematicità ed era possibile ottenerli grazie alla legge

    C = 10/N

    con N il numero di oggetti nel dataset.

    Ho successivamente raffinato la legge come segue, al fine di poter produrre ulteriori valori di C, in base al valore dato in input per tale parametro.

    C_new = 10 * C_old / N

    dove C_old è il valore di C dato in input all’SVC e C_new è il nuovo valore stimato che in teoria dovrebbe dare un miglior risultato.

    Dagli esperimenti effettuati in genere il primo valore generato (C_new = 10 * 1 / N, poiché all’inizio C=1) è quello ottimale.

    Contributi alle prestazioni computazionali

    Tali contributi sono tutti legati alla procedura di generazione di valori per la larghezza del kernel e sono stati già descritti in questo post.

    { 1 comment }

    High dimensionality: Co-clustering + SVC

    by Vincenzo Russo on August 14, 2007

    Uno degli obiettivi di tesi è avere buone prestazioni su high dimensional dataset. L’altro è quello di poter combinare le due tecniche studiate in maniera concreta e con buoni risultati.

    Il test illustrato di seguito coinvolte entrambi i punti.

    Il dataset coinvolto è stato l’Internet Advertisement dall’UCI repository of Machine Learning. Ne cito la descrizione

    This dataset represents a set of possible advertisements on Internet pages. The features encode the geometry of the image (if available) as well as phrases occuring in the URL, the image’s URL and alt text, the anchor text, and words occuring near the anchor text. The task is to predict whether an image is an advertisement (”ad”) or not (”nonad”).

    Number of Instances: 3279 (2821 nonads, 458 ads)
    Number of Attributes: 1558

    One or more of the first three features are missing in 28% of the instances.

    Trattiamo dunque con un dataset in 1558D che possiede tra l’altro dei missing values.

    Co-clustering

    Il test effettuato col solo Co-clustering mette in evidenza i vantaggi dell’implicita capacità di questa tecnica di ridurre la dimensionalità effettuando feature clustering contestuale al data clustering.

    Effettuando il test con lo schema 5 e la distanza euclidea, senza richiedere feature clustering, si ottiene quanto segue

    Class 1
    TP: 223 FP: 98
    FN: 223 TN: 2735
    Class 2
    TP: 98 FP: 223
    FN: 98 TN: 2860

    Class 1 - Precision: 69.47% Recall: 50% F1: 58.148%
    Class 2 - Precision: 30.53% Recall: 50% F1: 37.912%

    Accuracy: 9.79%

    Stesso schema, ma con feature clustering (10 cluster di feature richiesti), dà luogo a quanto segue

    Class 1
    TP: 223 FP: 98
    FN: 236 TN: 2722
    Class 2
    TP: 2722 FP: 236
    FN: 98 TN: 223

    Class 1 - Precision: 69.47% Recall: 48.584% F1: 57.18%
    Class 2 - Precision: 92.022% Recall: 96.525% F1: 94.22%

    Accuracy: 89.814%

    La riduzione della dimensionalità ha dato i suoi frutti (ricordiamo che il dataset possiede anche missing values)

    SVC

    Le risorse computazionali a disposizione insieme con la natura ancora non stabile del software sviluppato per il SVC non ha permesso di effettuare il test del SVC direttamente in 1558D. Ad ogni modo la letteratura riporta un forte degrado di prestazioni all’aumentare delle dimensioni dello spazio vettoriale, poiché allo stesso tempo si rende necessario un numero elevato di SV per la descrizione del contorno dei cluster.

    Inoltre la letteratura mostra anche come la PCA perda di efficacia quando si necessita di un certo numero di componenti.

    Co-clustering + SVC

    Sappiamo che il Co-clustering, durante il processo di clustering, calcola una approssimazione della matrice di dati originale.

    Pertanto, abbiamo usato il Co-clustering richiedendo un co-clustering di dimensioni 3279 x 3, ovvero abbiamo richiesto un numero di cluster di riga pari al numero di righe (quindi il numero di oggetti) e un numero di cluster di colonna considerevolmente inferiore al numero di colonne originale (3 feature clusters invece di 1558 features).

    Così facendo il Co-clustering calcola una matrice di approssimazione dove ogni riga rappresenta ancora un solo oggetto della matrice originale, ma a differenza dell’originale, questa matrice è in 3D.

    Ricordiamo inoltre che il processo di approssimazione genera una matrice priva di missing values.

    Abbiamo così preso tale matrice approssimata e usata come input del SVC. Il risultato è stato addirittura superiore (anche se non di molto) al massimo ottenuto col Co-clustering

    Class 0
    TP: 218 FP: 70
    FN: 241 TN: 2750

    Precision: 75.6944 - Recall: 47.4946 - F1: 58.3668

    Class 1
    TP: 2750 FP: 241
    FN: 70 TN: 218

    Precision: 91.9425 - Recall: 97.5177 - F1: 94.6481

    Accuracy: 90.5154

    Tempo macchina

    È importante notare che SVC ha impiegato soltanto 0.06 secondi in totale per concludere il processo, trovando il giusto valore di Kernel Width al secondo ciclo. Il Co-clustering ha invece impiegato 117 secondi a concludere il processo (ricordiamo completo anche della sua parte di clustering e non solo del calcolo della matrice approssimata, poiché allo stato attuale il software non permette di scindere le due operazioni).

    Abbiamo dunque un totale di 117.06 secondi.

    L’SVC su un dataset di 3000 elementi in 20 dimensioni ha impiegato circa 400 secondi per compiere due cicli. E il tempo impiegato cresce all’aumentare delle dimensioni e anche coll’avanzare dei cicli, poiché valori più alti di Kernel Width rallentano il processo di domain description. È facile dunque capire come si potrebbe comportare il solo SVC con un dataset di 1558D.

    Conclusioni

    Altri test simili erano stati effettuati su dataset troppo piccoli per avere dei risultati significativi.
    Questo test mostra come è possibile combinare le due tecniche, sfruttando la capacità di ridurre la dimensionalità e di trattare i missing values dell’uno, e l’accuratezza, la gestione degli outliers e dei cluster di forma arbitraria dell’altro.

    Altri test saranno successivamente condotti.

    { 0 comments }

    Co-clustering - Missing Values Experiments

    by Vincenzo Russo on August 6, 2007

    Data la complessità nell’eseguire gli esperimenti con il Co-clustering e al fine di eseguire dei test ben ponderati, ho oggi deciso di eseguire dei test su dataset di dimensioni ridotte per capire la linea da seguire su dataset più complicati.

    In riferimento agli esperimenti preliminari già eseguiti, ancora una volta oggetto dei test è l’IRIS data set.

    Il test in questione è stato eseguito con lo Squared Euclidean Co-clustering. Nei test preliminari, con tale istanza di Co-clustering si era raggiunta un’accuratezza che oscillava tra l’88% e l’89%.

    Nel test di oggi sono stati introdotti missing values nell’IRIS dataset, secondo una politica casuale.

    Data la matrice di dati rappresentate il dataset (150 oggetti x 4 attributi), sono stati introdotti, nell’ordine, prima il 5, poi il 10 e poi il 20 per cento di missing values.

    Nel primo caso l’accuratezza è stata del 88.667%, praticamente immutata.
    Nel secondo caso l’accuratezza è stata del 84%.
    Nel terzo caso l’accuratezza è stata del 81%.

    Considerando la perdita di informazione introdotta, il Co-clustering ha fornito ugualmente risultati rispettabili, con una perdita di accuratezza non lineare rispetto al numero di missing values introdotti.

    In giornata eseguirò altri test simili, per poi ritornare sul Pandora Dataset del prof. Longo e infine passare su un dataset di documenti testuali, come Reuters.

    { 0 comments }

    SVC: Gaussian Kernel Width Generator

    by Vincenzo Russo on August 2, 2007

    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

    { 0 comments }

    Pandora: nuovi risultati

    by Vincenzo Russo on July 23, 2007

    Impegni di lavoro non mi hanno permesso di lavorare al 100% sul test del Pandora Dataset, che data la mole di dati che produce a ogni test, ha necessitato, tra l’altro, la scrittura di strumenti di analisi, seppur abbastanza grezzi, per il momento.

    Ad ogni modo, ciò che è possibile fornire allo stato attuale delle cose è il numero di oggetti per cluster, sia nel caso di “Pandora depurato” sia nel caso di “Pandora originale”. Il numero di cluster richiesti in entrambi i casi è stato 21, numero che dovrebbe essere un’ottima stima della realtà, in seguito ai ripetuti test effettuati per stimare appunto tale numero. Ad ogni modo, ripeto ancora una volta, l’obiettivo primario di questi test è assicurare un comportamento stabile del Co-clustering in presenza di oggetti con missing values. Un raffinamento della stima dei cluster potrà essere ottenuto, ad esempio, applicando relative criteria per la valutazione dei risultati (vedere prima bozza tesi)

    Di seguito si fa riferimento all’ Information-Theoretic Co-clustering.

    Co-clustering di “Pandora depurato” - Richiesti 21 Cluster

    2724
    5840
    8064
    8365
    11825
    12340
    15119
    15591
    18449
    19838
    20086
    22064
    23863
    25575
    26577
    26650
    28016
    30956
    33215
    40045
    40746
    435948 tot

    Co-clustering di “Pandora originale” - Richiesti 21 Cluster

    666
    5176
    5999
    9961
    13076
    13336
    14091
    16104
    17879
    18135
    19523
    20632
    23703
    25933
    30699
    31505
    32621
    33934
    35085
    38781
    42432
    449271 tot (i 13304 oggetti in più sono quelli riportanti missing values)

    Di seguito si fa riferimento al Minimum Sum Squared Co-clustering (v. II)

    Co-clustering di “Pandora depurato” - Richiesti 21 Cluster

    2427
    3375
    8471
    10682
    11176
    11521
    11702
    12682
    13262
    15596
    16760
    19127
    20744
    20886
    24549
    28716
    29123
    30408
    38123
    41477
    65141
    435948 tot

    Co-clustering di “Pandora originale” - Richiesti 21 Cluster

    1106
    1441
    2288
    3350
    3597
    5492
    8232
    8329
    13267
    16174
    19508
    19696
    21329
    23955
    24489
    26848
    29635
    41147
    55983
    56935
    66470
    449271 tot

    Si sta sviluppando un ulteriore strumento di analisi, per l’analisi incrociata dei cluster.
    Dato che il Co-clustering non produce i cluster sempre nello stesso ordine, è necessario un’analisi più complessa degli stessi per calcolare una misura di quanto il co-clustering sia rimasto stabile.

    Inoltre si stanno riconducendo i test richiedendo 20 cluster, perché dagli ultimi test con 21 cluster, pur non essendoci cluster vuoti, è risultato in media, su 20 iterazioni, 1 cluster singleton.

    { 0 comments }

    Pandora Dataset: prime considerazioni

    by Vincenzo Russo on July 16, 2007

    Innanzitutto, le prime operazioni sul dataset Pandora sono state quelle di “preparazione” all’esperimento:

    1. Eliminazione di alcune “feature” (quindi alcune colonne delle matrice dati)
    2. Eliminazione degli oggetti aventi missing values (13304 su 449271) in corrispondenza delle restanti feature (i missing value erano riportati come -9999.0)

    Partendo da un numero sovrastimato di cluster che si voleva ottenere, 50, si è iniziato a far girare il Co-clustering. Una serie di esecuzioni successive hanno rilevato che 50 era effettivamente sovrastimato, riportando il numero di cluster che restavano vuoti. Questo numero è stato sottratto a 50 ed è stato poi ripetuta l’esecuzione del co-clustering.

    Questa operazione è stata ripetuta finché non si è avuta una media di cluster vuoti su 20 iterazioni di al più 1 cluster. Il numero di cluster stimato sembra così essere 20-21.
    Già con input di 24 cluster richiesti, su 20 iterazioni si otteneva cmq una media di cluster vuoti di 1.5 cluster.

    Ad ogni modo, questa prima fase non si è concentrata sulla stima esatta del numero di cluster, ma sul paragonare il comportamento dei test eseguiti sul dataset Pandora “depurato” dai missing values e quello originale.

    Gli stessi test sono stati dunque ripetuti sul dataset originale, dove però al valore -9999.0 è stato sostituito 0, così come indicato dalla letteratura (una serie di test di prova direttamente col valore -9999.0 è stato effettuato e portava all’individuazione di soli 2-3 cluster). Il comportamento è stato praticamente simile, ottenendo la stessa stima di numero di cluster e un valore simile di funzione obiettivo alla fine del processo.

    Tra l’altro, un controllo veloce dei cluster in entrambi i testi rivela che il contenuto dei cluster è molto simile, comunicandoci che la qualità del clustering non è stata gravemente inficiata dalla presenza di oggetti con missing values.

    I successivi passi saranno questi:

    1. Eseguire i test nuovamente stavolta aumentando il numero di step per l’algoritmo di local search, al fine di ottenere un migliore valore per i minimo locali e pertanto avere una maggiore affidabilità della stima di cluster finale.
    2. Elaborazione approfondita dell’output del co-clustering, al fine di paragonare accuratamente i cluster ottenuti dal dataset depurato con quelli ottenuti dal dataset impuro

    { 1 comment }