Cos'è Deviance? (in particolare in CART / rpart)


45

Che cos'è "Devianza", come viene calcolata e quali sono i suoi usi in diversi campi nelle statistiche?

In particolare, sono personalmente interessato ai suoi usi in CART (e alla sua implementazione in rpart in R).

Lo sto chiedendo poiché l' articolo wiki sembra in qualche modo carente e le tue intuizioni saranno molto apprezzate.

Risposte:


48

Devianza e GLM

Formalmente, si può vedere la devianza come una sorta di distanza tra due modelli probabilistici; nel contesto GLM, equivale a due volte il rapporto di log delle probabilità tra due modelli nidificati dove è il modello "più piccolo"; cioè una restrizione lineare sui parametri del modello (cfr. il lemma di Neyman-Pearson ), come diceva @suncoolsu. Come tale, può essere utilizzato per eseguire il confronto tra modelli . Può anche essere visto come una generalizzazione dell'RSS utilizzato nella stima OLS (ANOVA, regressione), in quanto fornisce una misura della bontà di adattamento del modello valutato rispetto al modello nullo (solo intercetta). Funziona anche con LM:1/00

> x <- rnorm(100)
> y <- 0.8*x+rnorm(100)
> lm.res <- lm(y ~ x)

I residui SS (RSS) vengono calcolati come , che viene facilmente ottenuto come:ε^tε^

> t(residuals(lm.res))%*%residuals(lm.res)
         [,1]
[1,] 98.66754

o dal (non aggiustato)R2

> summary(lm.res)

Call:
lm(formula = y ~ x)

(...)

Residual standard error: 1.003 on 98 degrees of freedom
Multiple R-squared: 0.4234, Adjusted R-squared: 0.4175 
F-statistic: 71.97 on 1 and 98 DF,  p-value: 2.334e-13 

poiché dove è la varianza totale. Si noti che è direttamente disponibile in una tabella ANOVA, comeR2=1RSS/TSSTSS

> summary.aov(lm.res)
            Df Sum Sq Mean Sq F value    Pr(>F)    
x            1 72.459  72.459  71.969 2.334e-13 ***
Residuals   98 98.668   1.007                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Ora guarda la devianza:

> deviance(lm.res)
[1] 98.66754

In effetti, per i modelli lineari la devianza è uguale all'RSS (si può ricordare che le stime OLS e ML coincidono in questo caso).

Devianza e CARRELLO

Possiamo vedere il CART come un modo per allocare individui già etichettati in classi arbitrarie (in un contesto di classificazione). Gli alberi possono essere considerati come un modello di probabilità per l'appartenenza alla classe individuale. Quindi, su ciascun nodo , abbiamo una distribuzione di probabilità sulle classi. Ciò che è importante qui è che le foglie dell'albero ci danno un campione casuale da una distribuzione multinomiale specificata da . Possiamo così definire la devianza di un albero, , come la somma di tutte le foglie dinipiknikpikD

Di=2kniklog(pik),

seguendo le notazioni di Venables e Ripley ( MASS , Springer 2002, 4a ed.). Se hai accesso a questo riferimento essenziale per gli utenti R (IMHO), puoi verificare da solo come un tale approccio viene utilizzato per dividere i nodi e adattare un albero ai dati osservati (p. 255 ss.); Fondamentalmente, l'idea è di minimizzare, potando l'albero, dove è il numero di nodi dell'albero . Qui riconosciamo il compromesso tra costi e complessità . Qui, è equivalente al concetto di impurità del nodo (cioè l'eterogeneità della distribuzione in un dato nodo) che si basa su una misura di entropia o guadagno di informazioni, o sul noto indice Gini, definito comeD+α#(T)#(T)TD 1 - k p 2 i kD1kpik2 (le proporzioni sconosciute sono stimate dalle proporzioni dei nodi).

Con un albero di regressione, l'idea è abbastanza simile, e possiamo concettualizzare la devianza come somma dei quadrati definiti per gli individui byj

Di=j(yjμi)2,

sommato su tutte le foglie. Qui, il modello di probabilità che viene considerato all'interno di ogni foglia è un gaussiano . Citando Venables e Ripley (p. 256), " è la consueta deviazione in scala per un GLM gaussiano. Tuttavia, la distribuzione ai nodi interni dell'albero è quindi una miscela di distribuzioni normali, e quindi è appropriato solo alle foglie. Il processo di costruzione dell'albero deve essere visto come un raffinamento gerarchico di modelli di probabilità, molto simile alla selezione di variabili in avanti nella regressione . " La Sezione 9.2 fornisce ulteriori informazioni dettagliate sull'implementazione, ma è già possibile esaminare la funzione perN(μi,σ2)DDirpartresiduals()rpart oggetto, in cui i "residui di devianza" sono calcolati come radice quadrata di meno il doppio del logaritmo del modello montato.

Un'introduzione al partizionamento ricorsivo usando le routine rpart , di Atkinson e Therneau, è anche un buon inizio. Per una revisione più generale (incluso l'insacco), consiglierei


1
+1 bella risposta chl, che, come dici tu, integra la mia quindi nessun problema lì. Molto ben messo.
Ripristina Monica - G. Simpson il

Una cosa minore - probabilmente non è meglio usare lm.fitnel tuo esempio, poiché questo è il nome del cavallo di battaglia dietro lm.
Ripristina Monica - G. Simpson,

@Gavin Oh, sì, esatto. Grazie per avermelo ricordato, faccio spesso questo errore ...
cl

3
Solo un'osservazione: per la regressione lineare, la devianza è uguale all'RSS perché l'assunzione della normalità di errori implica che l'RSS è uguale alla statistica del test LR, il che implica che Deviance è normalmente distribuita, indipendentemente dagli asintotici . Questa è solo un'espansione del commento (credo) conciso di chl.
suncoolsu,

@suncoolsu Se si tratta del mio commento sulle stime ML e OLS, sì, intendevo "ipotizzare una distribuzione gaussiana" per il (ovvero, nei modelli lineari). Il tuo commento è il benvenuto εi
chl

25

Potrebbe essere un po 'più chiaro se pensiamo a un modello perfetto con tanti parametri quante osservazioni, in modo che spieghi tutta la varianza nella risposta. Questo è il modello saturo. Devianza misura semplicemente la differenza di "adattamento" di un modello candidato e quella del modello saturo.

In un albero di regressione, il modello saturo sarebbe uno che avesse tanti nodi terminali (foglie) quante osservazioni in modo da adattarsi perfettamente alla risposta. La deviazione di un modello più semplice può essere calcolata come la somma residua del nodo dei quadrati, sommata su tutti i nodi. In altre parole, la somma delle differenze al quadrato tra i valori previsti e quelli osservati. Questo è lo stesso tipo di errore (o devianza) utilizzato nella regressione dei minimi quadrati.

Per un albero di classificazione, le somme residue di quadrati non rappresentano la misura più appropriata di mancanza di adattamento. Invece, esiste una misura alternativa di devianza, inoltre è possibile costruire alberi minimizzando una misura entropica o l'indice Gini. Quest'ultimo è il predefinito in rpart. L'indice Gini è calcolato come:

Di=1k=1Kpik2

dove è la proporzione osservata della classe nel nodo . Questa misura è sommata di tutti nodi terminali dell'albero nella struttura per arrivare a una deviazione per il modello dell'albero montato. k i ipikkii


(+1) Scusa, il mio post è arrivato dopo e non ho notato il tuo. Dato che penso che non si sovrappongano troppo, lascerò il mio se non ti dispiace.
chl

Quindi, la devianza è una misura di bontà di adattamento, giusto? AFAIK, in regressione, disponiamo di alcune statistiche (come RSS, ) per misurare gli adattatori; e in classifica, potremmo usare il tasso di classificazione errata. Ho ragione? R2
avocado,

11

Devianza è la statistica del rapporto di verosimiglianza per testare l'ipotesi nulla che il modello sostenga l'alternativa generale (cioè il modello saturo). Per alcuni GLM di Poisson e binomiali, il numero di osservazioni rimane fisso all'aumentare delle dimensioni dei conteggi individuali. Quindi la devianza ha una distribuzione nulla asintotica chi-quadrata . I gradi di libertà = N - p, dove p è il numero di parametri del modello; cioè, è uguale al numero di parametri liberi nei modelli saturi e insaturi. La devianza fornisce quindi un test per l'adattamento del modello.N

Deviance=2[L(μ^|y)L(y|y)]

Tuttavia, la maggior parte delle volte, si desidera verificare se è necessario eliminare alcune variabili. Supponiamo che ci siano due modelli e con parametri e , rispettivamente, e devi testare quale di questi due è meglio. Supponiamo che sia un caso speciale di cioè modelli nidificati. M1M2p1p2M1M2

In tal caso, viene presa la differenza di devianza:

ΔDeviance=2[L(μ1^|y)L(μ2^|y)]

Si noti che la probabilità di log del modello saturo si annulla e il grado di libertà di cambia in . Questo è ciò che usiamo più spesso quando dobbiamo testare se alcuni dei parametri sono 0 o no. Ma quando si forma in uscita devianza è per il modello saturo vs il modello attuale.p 2 - p 1ΔDeviancep2p1glmR

Se si desidera leggere in modo più dettagliato: cfr: Analisi categorica dei dati di Alan Agresti, pp 118.


@Tal, non lo uso rparte lascerò la risposta ai membri più esperti di questo forum.
suncoolsu,

Penso di aver avuto l'idea ... Ma rpart stampa la devianza anche per gli alberi di regressione Oo
deps_stats,

@deps_stats indica che la devianza è una somma residua di nodi dei quadrati sommati sui nodi terminali dell'albero.
Ripristina Monica - G. Simpson il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.