August 14 2007
High dimensionality: Co-clustering + SVC
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: 1558One 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: 2860Class 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: 223Class 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: 2750Precision: 75.6944 - Recall: 47.4946 - F1: 58.3668
Class 1
TP: 2750 FP: 241
FN: 70 TN: 218Precision: 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.
