Megpróbálom megérteni az előre-hátra történő kiválasztás logikáját (annak ellenére, hogy tudom, hogy vannak jobb módszerek a modellválasztásra). Az előremenő modell kiválasztásakor a kiválasztási folyamat üres modellel indul, és a változókat egymás után adják hozzá. A visszafelé történő kiválasztásnál a kiválasztási folyamat a teljes modellel indul, és a változókat egymás után kizárják.

Kérdés: Melyik modellnél indul az előre-hátra kiválasztás?

A teljes modell? Az üres modell? Valami közte? Wikipédia és Hastie és mtsai. (2009) – A statisztikai tanulás elemei, 60. oldal magyarázzák a módszert, de nem tudtam találni semmit a kiinduló modellről. Elemzésemhez a

csomag MASS>

.

UPDATE:

Az alábbiakban talál egy példát a R részben. A stepAIC függvény minden egyes lépést automatikusan kinyomtat a kiválasztási folyamat a konzolon, és úgy tűnik, hogy a kiválasztás a teljes modellel kezdődik. A jjet válasza alapján azonban nem vagyok biztos benne, hogy valamit rosszul csináltam-e.

# Example data N <- 1000000 y <- rnorm(N) x1 <- y + rnorm(N) x2 <- y + rnorm(N) x3 <- y + rnorm(N) x4 <- rnorm(N) x5 <- rnorm(N) x6 <- rnorm(N) data <- data.frame(y, x1, x2, x3, x4, x5, x6) # Selection library("MASS") mod <- lm(y ~., data) stepAIC(mod, direction = "both") 

megjegyzések

  • Olvassa el a kézikönyvet: használhatja a object & scope argumentum a kívánt modellel kezdődik: stepAIC(lm(y~1, data), scope=~x1+x2+x3+x4+x5, direction = "both"). Nem ' t nem tudja, hogy van-e ' s hiteles választ ad arra, hogy a " előre-hátra " magában foglal-e egy adott kiindulási modellt, vagy amely; de még ha van is, ' ésszerű, ha nem feltételezzük, hogy más emberek tudnak róla, amikor használják a kifejezést.
  • Köszönöm a választ Scortchi! Korábban elolvastam a kézikönyvet, de úgy tűnik, néhány dolgot elmulasztottam. Megjegyzése és a jjet ' válasza alapján sikerült megoldanom a problémámat.

Válasz

Úgy gondolom, hogy az “előre-hátra” kijelölés egy másik név az “előre-lépésről lépésre” választásnak. Ez az alapértelmezett megközelítés, amelyet a stepAIC használ. Ebben az eljárásban egy üres modellel indul, és egymás után építi fel, akárcsak az előre történő kijelölést. Az egyetlen figyelmeztetés az, hogy minden alkalommal, amikor új változót, $ X_ {new} $ ad hozzá, ellenőriznie kell, hogy a $ X_ {new} $ bekerülése után el kell-e dobni a modellben már szereplő többi változót. . Ebben a megközelítésben végül “nemlineárisan” kereshet az összes különböző modellen keresztül.

——– SZERKESZTÉS ——–

A a következő R kód szemlélteti a három kiválasztási stratégia közötti különbséget:

# library(MASS) set.seed(1) N <- 200000 y <- rnorm(N) x1 <- y + rnorm(N) x2 <- y + rnorm(N) x3 <- y + rnorm(N) x4 <- rnorm(N) x5 <- rnorm(N) x6 <- x1 + x2 + x3 + rnorm(N) data <- data.frame(y, x1, x2, x3, x4, x5, x6) fit1 <- lm(y ~ ., data) fit2 <- lm(y ~ 1, data) stepAIC(fit1,direction="backward") stepAIC(fit2,direction="forward",scope=list(upper=fit1,lower=fit2)) stepAIC(fit2,direction="both",scope=list(upper=fit1,lower=fit2)) 

A példádat csak kissé módosítottam ebben a kódban. Először beállítottam egy magot, így hogy láthatja ugyanazokat az adatokat, amiket használtam. N-et is kisebbre tettem, így az algoritmus egy kicsit gyorsabban fut. Az összes változót ugyanolyan értéken tartottam, kivéve az x6-ot. Az x6 mostantól a legjobban prediktív y-re – ez lesz az első Az előre és az előre lépésenkénti kiválasztás során választott változó. De ha x1, x2 és x3 belép a modellbe, akkor x6 független lesz y-tól és ki kell zárni. Látni fogja, hogy az előre-lépésről lépésre pontosan ezt teszi. X6-tal kezdődik, folytatja x1, x2 és x3 beillesztését, majd visszamegy, ledobja x6-ot és véget ér. Ha csak előre használja, akkor az x6 marad a modellben, mert az algoritmus soha nem tér vissza ilyen jellegű multikollinearitás-ellenőrzésre.

Megjegyzések

  • Köszönöm Ön a válasz jjet! Teljesen logikus, amit mondasz, de ha futtatod a fent frissített kódot, úgy tűnik, hogy a kiválasztás a teljes modellel kezdődik. Csináltam valamit rosszul?
  • Csak egy kis probléma a kóddal. Ön írta mod < – lm (y ~., Adatok), majd a stepAIC (mod, direction = " mindkettő "). Az első sorban ' hatékonyan definiált egy kezdeti modellt, amely az összes változót tartalmazza, azáltal, hogy " y ~. ". Ez most a kiindulópont az előre történő kiválasztáshoz. Ehelyett ' be akarja írni " y ~ 1 ", ami csak egy elfogó modell – az a kiindulási pont, amelyet ' keres. ' a fenti módosításokat R kóddal végeztem, amelyeknek tisztáznia kell ezt az Ön számára.
  • Köszönöm szépen a nagy segítséget!Egy utolsó kérdés: Ha a példámat úgy tartom, mint a hatókör argumentum nélkül, és mod <- lm(y ~., data) -vel, akkor normál visszamenőleges választást végez, vagy előre-hátra kijelölést hajt végre teljes kiinduló modell?
  • Ez utóbbi. ' előre-hátra halad egy kezdeti modell segítségével, amely tartalmazza az összes változót. Ha nincs megadva ' a hatókörlista, akkor az a " alsó " a modell bármelyik modell, amelyet eredetileg megadott, és a " felső " modell a teljes modell.

Válasz

Az előre-hátra modellválasztás két kapzsi megközelítés, amely megoldja a jellemzők optimális kombinációjának megtalálásával járó kombinatorikus optimalizálási problémát (ami ismert NP-teljes). Ezért nem optimális, számítási szempontból hatékony stratégiákat kell keresnie. Lásd például: Úszó keresési módszerek a funkciók kiválasztásában , Pudil és munkatársai. al.

A Forward metódusban egy üres modellel indul, és az összes szolgáltatást iterálja. Minden tulajdonsághoz betanít egy modellt, és válassza ki azt a szolgáltatást, amely a metrika szerint a legjobb modellt adja. Hasonló módon folytatja a következő szolgáltatás hozzáadásával, amely a legjobban javul, ha a már kiválasztottakat kombinálja.

A visszamenőleges módszerben csak megfordítja az eljárást: kezdje az összes funkcióval, és iteratív módon távolítsa el azt. akinek eltávolítása legkevésbé károsítja a teljesítményt, vagy a legnagyobb javuláshoz vezet.

Hozzászólások

  • Köszönjük válaszát jpmuc! Azonban nem vagyok biztos benne, hogy ez megválaszolja-e az eredeti kérdésemet: " Melyik modellnél indul az előre-hátra kiválasztás? " Hiányzik valami a válaszodból, vagy egyszerűen csak az előre-hátra történő kiválasztás eljárását kívánta tisztázni?
  • Ebben a funkcióválasztási módszerben nincs kötve konkrét modellhez vagy paraméterkészlethez. Kiválasztja azokat a funkciókat, amelyekkel felépítheti az adott típusú legjobb modellt (az Ön esetében egy lineáris modellt). Ezt jobban szemlélteti a következő két link: stat.columbia.edu/~martin/W2024/R10.pdf és rstudio-pubs-static.s3.amazonaws.com/ …

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük