• Tidak ada hasil yang ditemukan

Shrunken centroid

Dalam dokumen DellOmodarme esercitazioni R (Halaman 197-200)

9.6 Shrunken centroid

Un metodo recente, che consente contemporaneamente di ottenere la classificazione di soggetti in diverse classi e di valutare l’importanza delle singole variabili per la classificazione `e quello degli shrunken centroids, descritto in [57]. Questa tecnica `e stata sviluppata nell’ambito dell’analisi di DNA microarrays per far fronte a situazioni in cui si hanno moltissime variabili, solitamente fortemente correlate tra loro, e pochi soggetti sperimentali.

La tecnica si basa sull’estensione dalla tecnica di nearest centroid. Si supponga di avere n soggetti, classificati in K classi, su cui si misurano p variabili. Per ognuna delle classi si calcola il centroide, che per la i-esima variabile nella k-esima classe Ck`e definito come:

¯

xik = X

j∈Ck

xij

nk

dove nk `e la numerosit`a del gruppo Ck. Per ogni soggetto la classificazione avviene misurando la sua distanza euclidea p-dimensionale dai K centroidi e assegnando il soggetto al gruppo rispetto a cui tale distanza `e minore.

Nella tecnica di shrunken centroid la procedura subisce una importante modifica. Si calcola innanzitutto il centroide generale dei dati, la cui i-esima componente `e:

¯ xi=

n

X

j=1

xij

n .

L’idea della tecnica `e quella di contrarre i centroidi delle classi verso il centroide generale dopo aver standardizzato l’espressione di ciascuna variabile mediante la loro deviazione standard entro classi. Il motivo di questa standardizzazione `e quello di dare maggior peso a quelle variabili la cui espressione

`e stabile all’interno delle singole classi.

Matematicamente si valuta la quantit`a:

dik= x¯ik− ¯xi

mk(si+ s0) (9.18)

con:

mk=p1/nk− 1/n e si la deviazione standard entro gruppi per la i-esima variabile:

s2i = 1 n − K

K

X

k=1

X

j∈Ck

(xij− ¯xik)2

dove s0`e una costante positiva il cui compito `e di “filtrare” le variabili con un basso livello di espressio-ne. Solitamente si pone s0pari alla mediana dei valori di si (si veda [57]). Con un semplice passaggio algebrico si pu`o riscrivere l’Eq. 9.18 nel modo seguente:

¯

xik = ¯xi+ mk(si+ s0)dik

L’idea della tecnica `e quindi di contrarre i valori di dik verso zero, ottenendo dei valori dik tramite i quali si calcolano i centroidi contratti:

¯

xik = ¯xi+ mk(si+ s0)dik

La tecnica di contazione utilizzata `e detta di soft thresholding: si riduce ogni dik in modulo di una quantit`a ∆ e si pone dik pari a zero se si ottiene una quantit`a negativa:

dik = sign(dik)(|dik| − ∆)+

dove il pedice “+” indica di prendere solo la parte positiva della parentesi e zero altrimenti. Dopo la procedura di contrazione i soggetti sono classificati come nel metodo nearest centroid, facendo per`o uso dei nuovi centroidi.

Al variare del parametro di soglia ∆ si avr`a che per alcune variabili il valore di dik sar`a nullo per tutti i K gruppi. In tal caso esse non contribuiscono alla classificazione finale dei soggetti e possono essere eliminate. Si ha quindi un modo per estrarre dall’insieme di p variabili un sottoinsieme ottimale per discriminare fra i gruppi: si ricerca il valore di ∆ che minimizza l’errore di classificazione degli n soggetti (usualmente valutato mediante 10-fold cross validation) e si utilizzano per la classificazione solo le variabili i cui valori dik non siano nulli per tutte le classi.

In R `e possibile utilizzare questa tecnica dopo aver installato la libreria aggiuntiva pamr, scaricabile dal sito della distribuzione.

Esempio

Si consideri nuovamente il dataset iris. In questo caso la situazione non `e particolarmente appropriata per la tecnica in esame, pensata per lavorare al meglio quando il numero delle variabili `e molto maggiore del numero delle osservazioni. In ogni caso la funzione per classificare i 150 fiori in base alle 4 variabili su di essi misurate `e disponibile con la chiamata alla funzione pamr.train, che necessita di un poco di lavoro per formattare i dati in input:

> x <- t(iris[,1:4])

> y <- iris[,5]

> label <- dimnames(iris)[[2]][1:4]

> mydata <- list(x=x, y=y, geneid=1:4, genenames=label)

Si deve cio`e preparare una lista di quattro elementi: x `e la matrice che contiene per colonna i soggetti e per riga le variabili (chiamate geni, dato l’ambito in cui la funzione `e stata sviluppata), y `e il vettore con le classificazioni dei vari soggetti, geneid e genenames sono gli identificatori e le etichette con cui identificare le variabili (in questo caso i numeri progressivi da 1 a 4 e i nomi delle variabili, estratti dal dataframe originario). Si passa quindi a classificare i 150 fiori:

> sc.train <- pamr.train(mydata)

> sc.train Call:

pamr.train(data = mydata) threshold nonzero errors

1 0.000 4 6

2 0.841 4 7

3 1.682 4 10

[...]

29 23.546 1 57

30 24.387 0 100

Il risultato `e una tabella di tre colonne. Sulla prima vi `e il valore progressivo del parametro di soglia, sulla seconda il numero di variabili che sopravvivono a quella soglia, sulla terza il numero di soggetti mal classificati. Il risultato migliore si ha per parametro di soglia pari a 0 (prima riga della tabella di output).

Per convalidare il risultato si utilizza comunemente il metodo di rivalidazione 10-fold, che pu`o essere applicato nel modo seguente:

> set.seed(120) # per una analisi riproducibile

> sc.cv <- pamr.cv(sc.train, mydata)

> sc.cv Call:

pamr.cv(fit = sc.train, data = mydata) threshold nonzero errors

9.6 Shrunken centroid 191

0 5 10 15 20 25

Value of threshold

Misclassification Error

4 4 4 4 4 4 3 3 3 3 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 0 Number of genes

0.00.20.40.60.8

x

0 5 10 15 20 25

Value of threshold

Misclassification Error

4 4 4 4 4 4 3 3 3 3 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 0

0.00.40.8 setosa versicolor virginica

Figura 9.7: In alto: andamento dell’error-rate in rivalidazione al variare del parametro di soglia (e del corrispondente numero di geni residui). Si vede che la miglior classificazione si ottiene per soglia pari a 0. In basso: error-rate nelle singole classi.

1 0.000 4 8

2 0.841 4 10

3 1.682 4 10

[...]

29 23.546 1 57

30 24.387 0 84

La funzione pamr.cv accetta in input il risultato della funzione pamr.train e il set di dati utilizzato.

La tabella in output `e analoga a quella precedente. Anche in questo caso si vede che il minor numero di errori di classificazione si ottiene per soglia pari a zero, facendo uso di tutte e 4 le variabili.

Per esaminare la classificazione ottenuta in rivalidazione si pu`o usare la seguente chiamata:

> pamr.confusion(sc.cv, 0)

setosa versicolor virginica Class Error rate

setosa 50 0 0 0.00

versicolor 0 47 3 0.06

virginica 0 5 45 0.10

Overall error rate= 0.053

La funzione pamr.conf usion accetta due argomenti: la classificazione da valutare (che pu`o essere indistintamente il risultato della funzione pamr.train o di pamr.cv) e il valore di soglia da utilizzare.

Oltre all’error-rate globale, dato sull’ultima riga, si hanno anche le stime degli error-rate nelle sin-gole classi. Una visualizzazione grafica dell’andamendo dell’error-rate in rivalidazione al variare del parametro di soglia si pu`o ottenere con la chiamata:

> pamr.plotcv(sc.cv)

che produce il grafico di Fig. 9.7.

In questo particolare esempio tutte le variabili sono selezionate come rileventi. Pi`u comunemente si avr`a il caso in cui la miglior classificazione si ottiene per parametro di soglia diverso da zero, con solo alcune delle variabili importanti per la classificazione. Supponiamo che si sia trovata la miglior

setosa versicolor virginica

Petal.Width Petal.Length

Figura 9.8: Posizione dei centroidi dei tre gruppi per parametro di soglia uguale a 10. Si nota che solo due variabili contribuiscono alla classificazione.

classificazione in corripondenza di un parametro di soglia pari a 10. Ci si chiede quali siano le variabili (i geni nella notazione della tecnica) che contribuiscono a questo livello. Per rispondere a tale domanda si usa la chiamata:

> pamr.listgenes(sc.train, mydata, 10, sc.cv)

id setosa-score versicolor-score virginica-score av-rank-in-CV prop-selected-in-CV

[1,] 3 -1.6613 0 1.0456 1 1

[2,] 4 -0.462 0 0.2472 2 1

La funzione pamr.listgenes accetta un minimo di tre argomenti: la classificazione ottenuta dalla funzione pamr.train, i dati su cui lavorare e il valore di soglia, in questo caso posto uguale a 10. `E possibile passare, come in questo caso, un quarto argomento ossia il risultato della funzione pamr.cv.

Il risultato della chiamata `e una tabella che ha per riga solo i geni che sopravvivono nella classificazione alla soglia impostata. Nella prima colonna della tabella si ha l’identificatore del gene; si vede che le sole variabili rilevanti sono la terza e la quarta, ossia lunghezza e larghezza del petalo. Nelle successive tre colonne si hanno le coordinate dei centroidi dei tre gruppi di iris. Nelle ultime due colonne – che appaiono solo se si passa alla funzione anche il quarto argomento opzionale – si ha lo studio in rivalidazione dei geni selezionati: la loro importanza (av-rank-in-CV) e la proporzione di volte in cui tali geni sono stati selezionati nel processo bootstrap (prop-selected-in-CV). Si vede che, a questo livello di soglia, entrambe le variabili sono state selezionate nel 100% dei campioni di rivalidazione e che la variabile pi`u importante risulta essere la terza.

E anche possibile visualizzare i centroidi dei tre gruppi, come in Fig. 9.8, mediante la chiamata:`

> pamr.plotcen(sc.train, mydata, 10)

Il grafico ottenuto mette in evidenza quali siano le variabili rilevanti per la classificazione.

Dalam dokumen DellOmodarme esercitazioni R (Halaman 197-200)