giuseppeegentile / AppStatExams

1 stars 0 forks source link

APER = AERCV (LOO): what does this mean? #23

Closed giacomo-carugati closed 5 months ago

giacomo-carugati commented 5 months ago

Prendendo come riferimento l'esercizio 2 di febbraio 2024 che ci sta tenendo compagnia da diversi giorni, pongo un quesito più generale.

Ho personalmente eseguito un'LDA che, a seguito di varie correzioni grazie a discussioni in altre issues {1, 2}, mi ha portato ad ottenere delle stime di APER e AERCV (ottenuta quest'ultima con LOO) equivalenti.

Nell'esercizio viene anche chiesto

What do you observe? Which characteristic of the classifier you are using is being highlighted here?

Questa la mia risposta; mi sarebbe utile un riscontro teorico da parte di chiunque

https://github.com/giuseppeegentile/AppStatExams/blob/3bdc4b00b39e596ae3a373292875f77d88e4ff99/2024/20240206/Pb2.R#L108-L115

Filippobuda commented 5 months ago

Ho implementato anche io un metodo per pesare con le prior l'AERCV. Anche a me viene uguale all'APER, ma solo se uso LDA. Se uso QDA mi vengono di poco diversi. Detto questo non so cosa significhi, stando a quello che chiede nella domanda potrebbe essere una questione legata al classificatore, ma non saprei bene cosa dire a riguardo.

giacomo-carugati commented 5 months ago

In generale a me verrebbe da dire che sono due stime molto ma molto simili, con l'APER che è la più ottimistica di tutte. Immagino ti sia venuto un po' più alto l'AERCV con la QDA e appunto per quanto detto prima è normale.

Quel che non riesco a concludere è se il nostro dataset è piccolo oppure no: se constasse di poche decine di unità, mi vien facile immaginare (magari sbagliando) che possa essere più probabile ottenere un AERCV diverso dall'APER.

Filippobuda commented 5 months ago

Secondo me non è una questione legata al dataset, o comunque non solo a quello. La traccia chiede :

Which characteristic of the classifier you are using is being highlighted here?

Deduco quinidi che abbia a che fare qualcosa con il fatto stesso di usare LDA.

[EDIT] Provando con LDA ho visto che se tolgo un dato dal dataset, lo alleno su quel dataset, e poi lo testo su tutto, ottengo sempre come APER 0.06713333.

(-60 è un dato d'esempio, lo runnavo a mano perchè ho rubato la laurea in ingegneria informatica)

fitmenouno <- lda(features[-60,], result[-60],prior=priors)
predictions <- predict(fitmenouno,features)
G <- 2
misc <- table(class.true=result, class.assigned=predictions$class)
APER <- 0
for(g in 1:G)
  APER <- APER + sum(misc[g,-g])/sum(misc[g,]) * priors.orig[g]
APER
# always 0.06713333

Questo POTREBBE indicare che LDA è un metodo con poca variability. Togliendo un dato il modello non cambia molto e quindi fa sempre la stessa predizione.

LuigiPagani commented 5 months ago

La LDA ha alto bias e poca varianza, stessa cosa la cross validation LOO, quindi ci sta che se alla fine le combini insieme hai una bassissima varianza e se togli un dato non ti cambia nulla sulle predizioni rispetto a fittare su tutto. Poi ovviamente non è garantito che accada, ma secondo me non è troppo soprendente

Filippobuda commented 5 months ago

@LuigiPagani Dove hai letto/sentito che la LDA ha alto bias e poca varianza? Che se è una lez del secco la recupero

[EDIT] A pagina 153 di ISLR ne parla

LuigiPagani commented 5 months ago

@Filippobuda Nel senso che hai pochi parametri e non fitti/overfitti, per esempio non riesci mai a sequire le curve. Non saprei dirti bene la lezione, ma in generale quando hai modelli semplici con pochi parametri

Filippobuda commented 5 months ago

Metto qua un estratto che può essere utile:

"Roughly speaking, LDA tends to be a better bet than QDA if there are relatively few training observations and so reducing variance is crucial. In contrast, QDA is recommended if the training set is very large, so that the variance of the classifier is not a major concern, or if the assumption of a common covariance matrix for the K classes is clearly untenable."

giacomo-carugati commented 5 months ago

Grazie per gli spunti, non mi ero per niente concentrato sul fatto che LDA sia un classificatore più "semplice" in qualche modo. Se secondo voi non c'è molto altro da dire sulla dimensione del dataset e su come questa possa entrare in gioco per trarre conclusioni, chiuderei questa issue per andare qui a continuare la conversazione, dato che meglio c'entra col tema di cui siamo finiti a parlare.