Fråga:
Algoritmer för automatiskt modellval
S4M
2012-01-10 00:22:24 UTC
view on stackexchange narkive permalink

Jag skulle vilja implementera en algoritm för automatiskt modellval. Jag funderar på att göra stegvis regression men allt kommer att göra (det måste dock baseras på linjära regressioner).

Mitt problem är att jag inte kan hitta en metodik eller en öppen källkodsimplementering (jag vaknar i java). Metoden jag har i åtanke skulle vara ungefär som:

  1. beräkna korrelationsmatrisen för alla faktorer
  2. välj de faktorer som har låg korrelation till varandra
  3. ta bort de faktorer som har låg t-stat
  4. lägg till andra faktorer (fortfarande baserat på den låga korrelationsfaktorn som finns i 2.).
  5. upprepa flera gånger tills några kriterium (t.ex. AIC) är över ett visst tröskelvärde eller kan inte eller vi kan inte hitta ett större värde.

Jag inser att det finns en R-implementering för detta (stepAIC), men jag tycker att kod ganska svår att förstå. Jag har inte heller kunnat hitta artiklar som beskriver den stegvisa regressionen.

Uppriktigt sagt, jag tror att detta är en * katastrofal * idé, nästan garanterat att leda till många falska slutsatser.
@gung: medan jag håller med om att följa resultatet av ett modellval blindt är en dålig idé, jag tror att det kan vara användbart som utgångspunkt för en analys. I mitt fall har jag flera hundra faktorer tillgängliga, och jag vill välja de 5-10 mest relevanta. Jag kan inte se hur jag skulle kunna göra det utan automatiskt modellval (som senare kommer att ändras manuellt).
* Alla * modellvalsförfaranden är föremål för de problem som jag diskuterar i mitt svar nedan. Dessutom, ju större antal möjliga faktorer du vill söka över, desto mer extrema blir problemen och ökningen är inte linjär. Även om det finns några bättre tillvägagångssätt (diskuterade av @Zach), som bör användas i kombination med korsvalidering (diskuterat av @JackTanner), är valet baserat på t, r och AIC inte bland dem. Dessutom, med hundratals faktorer kan mängden data som behövs lätt vara i miljoner. Tyvärr har du en * mycket * svår uppgift framför dig.
Vad är syftet med att göra modellval? Är det för en förutsägbar / prognosmodell eller letar du efter de viktiga variablerna? Hur stor är också datauppsättningen du använder - hur många obsevationer och hur många variabler?
Jag säger alltid se upp för automatiska algoritmer. Det hjälper alltid att inkludera kunskap om ämnet. Stegvisa procedurer har problem. Jag skulle betala för att du skulle läsa en av de många böcker som finns tillgängliga för modellval.
Vad sägs om bootStepAIC-paketet i R?
Intressanta åsikter här, men jag tycker att den negativa synen på algoritmiska modellvalsprocedurer är lite daterad.Ta till exempel det senaste arbetet av David Hendry inom ekonometrik, särskilt hans arbete med PcGive-programvaran och mättnadsmetoder.En föreläsning som ger en översikt över hans tillvägagångssätt finns [här] (https://www.youtube.com/watch?v=2zzI2fN1ebc).Som @MichaelChernick har påpekat (och Hendry skulle göra det också!), Är kunskap om ämnet (mycket) viktigt.Det är därför det finns värde hos ämnespecialister - att låta algoritmerna agera ensamma är misstaget.
Nio svar:
gung - Reinstate Monica
2012-01-10 09:43:02 UTC
view on stackexchange narkive permalink

Jag tror att detta tillvägagångssätt är felaktigt, men kanske kommer det att vara mer användbart om jag förklarar varför. Att vilja veta den bästa modellen med viss information om ett stort antal variabler är ganska förståeligt. Dessutom är det en situation där människor verkar befinna sig regelbundet. Dessutom omfattar många läroböcker (och kurser) om regression stegvisa urvalsmetoder, vilket innebär att de måste vara legitima. Tyvärr är de inte det, och parningen av denna situation och mål är ganska svår att navigera framgångsrikt. Följande är en lista med problem med automatiserade stegvisa modellvalsförfaranden (tillskrivna Frank Harrell och kopieras från här):

  1. Det ger R-kvadrat värden som är dåligt förspända för att vara höga.
  2. F- och chi-kvadrat-testerna som citeras bredvid varje variabel på utskriften har inte den anspråkade fördelningen.
  3. Metoden ger konfidensintervall för effekter och förutspådda värden som är falskt smala; se Altman och Andersen (1989).
  4. Det ger p-värden som inte har rätt betydelse, och rätt korrigering för dem är ett svårt problem.
  5. Det ger partisk regression koefficienter som behöver krympas (koefficienterna för kvarvarande variabler är för stora; se Tibshirani [1996]).
  6. Det har allvarliga problem i närvaro av kollinearitet.
  7. Det bygger på metoder (t.ex. F-test för kapslade modeller) som var avsedda att användas för att testa förutbestämda hypoteser.
  8. Att öka provstorleken hjälper inte särskilt mycket; se Derksen och Keselman (1992).
  9. Det gör att vi inte kan tänka på problemet.
  10. Det använder mycket papper.

Frågan är, vad är så dåligt med dessa procedurer / varför uppstår dessa problem? De flesta som har gått en grundläggande regressionskurs är bekanta med begreppet regression till medelvärdet, så det här är vad jag använder för att förklara dessa frågor. (Även om det här kan tyckas att det inte är ämne, bör du hålla med mig, jag lovar att det är relevant.)

Föreställ dig en spårtränare på gymnasiet den första dagen i försöken. Trettio barn dyker upp. Dessa barn har någon underliggande nivå av inneboende förmåga som varken tränaren eller någon annan har direkt tillgång till. Som ett resultat gör tränaren det enda han kan göra, det vill säga att de alla kör 100 meter. Tiderna är förmodligen ett mått på deras inneboende förmåga och tas som sådana. De är dock sannolika; en viss andel av hur bra någon gör är baserat på deras faktiska förmåga och en del är slumpmässig. Föreställ dig att den verkliga situationen är följande:

  set.seed (59) intrinsic_ability = runif (30, min = 9, max = 10) time = 31 - 2 * intrinsic_ability + rnorm (30 , medelvärde = 0, sd = .5)  

Resultaten från första loppet visas i följande figur tillsammans med tränarens kommentarer till barnen.

first race

Observera att partitionering av barnen efter deras tävlingstider lämnar överlappningar på deras inneboende förmåga - detta är avgörande. Efter att ha berömt några och skrek åt andra (som tränare tenderar att göra), får han dem att springa igen. Här är resultatet av den andra loppet med tränarens reaktioner (simulerad från samma modell ovan):

second race

Lägg märke till att deras inneboende förmåga är identisk, men tiderna studsade relativt i förhållande till det första loppet. Från tränarens synvinkel tenderade de som han skrek åt att förbättra sig, och de som han berömde tenderade att göra sämre (jag anpassade detta konkreta exempel från Kahnemans citat som listas på wiki-sidan), även om egentligen regression till medelvärdet är en enkel matematisk konsekvens av det faktum att tränaren väljer idrottare till laget baserat på ett mått som delvis är slumpmässigt.

Vad har detta nu att göra med automatiserade (t.ex. stegvisa) modellvalstekniker? Att utveckla och bekräfta en modell baserad på samma dataset kallas ibland datamuddring . Även om det finns en viss underliggande relation mellan variablerna och starkare förhållanden förväntas ge starkare poäng (t.ex. högre t-statistik), är dessa slumpmässiga variabler och de realiserade värdena innehåller fel. Således, när du väljer variabler baserat på att ha högre (eller lägre) realiserade värden, kan de vara sådana på grund av deras underliggande verkliga värde, fel eller båda. Om du fortsätter på detta sätt blir du lika förvånad som tränaren var efter andra loppet. Detta gäller oavsett om du väljer variabler baserat på hög t-statistik eller låga interkorrelationer. Det är sant att använda AIC är bättre än att använda p-värden, eftersom det straffar modellen för komplexitet, men AIC är i sig en slumpmässig variabel (om du kör en studie flera gånger och passar samma modell kommer AIC att studsa runt precis som allt annat). Tyvärr är detta bara ett problem som är inneboende för själva verklighetens epistemiska natur.

Jag hoppas att det är till hjälp.

Fenomenal förklaring av muddring.
Detta är ett mycket väl genomtänkt svar, även om jag inte håller med tanken att aic är en förbättring jämfört med p-värden (eller bic eller liknande), i samband med linjärt modellval. varje straff som aic som har formen $ -2L + kp $ motsvarar att sätta p-värdet till $ Pr (\ chi ^ 2_1> k) $ (både in- och utgång). aic berättar i princip hur man väljer p-värde.
@probabilityislogic, tack för din kommentar! Jag är rädd att jag inte följer dig helt. 1: a, håller du inte med AIC> (p eller BIC), eller (AIC eller BIC)> p? 2: a, vad jag tänkte på var att välja modell-som-helhet baserat på AIC är bättre än att välja enskilda kovariater att inkludera baserat på deras individuella p-värden beräknade med $ \ beta $ / SE (dvs. motsvarar typ III SS) <.05 (det vill säga typisk programvaruutmatning), eftersom den här metoden är den som människor brukar använda. Skulle du fortfarande inte hålla med?
Jag tror att det har två fördelar: erbjudanden w / modell-som-en-helhet, & ekvivalens till $ P (\ chi ^ 2> k) $ är inte till ett statiskt godtyckligt värde - p som minimerar AIC i 1 modell är inte inte nödvändigtvis samma p i en annan modell. Med andra ord, det finns en grund för den p i varje fall som är bättre grund än bara <.05 = bra !,> .05 = dålig!
Min kommentar gällde att använda aic för stegvis eller liknande algoritm. Min kommentar var också för kort. Observera $ p $ är antalet variabler, $ k $ är straff ($ 2 $ för aic $ \ log N $ för bic) och $ -2L $ är negativt dubbelt så hög som sannolikheten för loggen. Aic och bic är olika begreppsmässigt men inte operationellt från p-värden när man gör "delmängd" stilval utan krympning av koefficienterna som inte är noll.
@probabilityislogic, som hjälper till att klargöra, och jag håller med om allt detta. Jag menade inte att föreslå att stegvis val baserat på AIC är bra, bara att det är * mindre dåligt * än att använda p-värden. Jag förstår vad du menar med att AIC hjälper dig att välja en p-vlaue, men är det inte annorlunda (och lite mindre dåligt) än att ha en godtycklig, fast $ \ alpha $ som inte tar hänsyn till modellkomplexitet? Föreslår du att det inte finns någon skillnad * alls *?
@gung - om du tar skillnaden mellan två modeller med en parameter annorlunda får du $ (- 2L_1 + 2p_0 + 2) - (- 2L_0 + 2p_0) = - 2 (L_1-L_0) + 2 $. Nu är den första termen sannolikhetsförhållandestatistiken som p-värdet bygger på. Så vi lägger till den extra parametern om sannolikhetsförhållandestatistiken är större än någon cutoff. Detta är detsamma som vad p-värdet gör. Det finns bara en konceptuell skillnad här
för en illustration varför AIC inte löser problemet se: Mundry, R. (2011). Frågor i informationsteoribaserad statistisk slutsats - en kommentar ur en frekvents perspektiv. Behavioral Ecology and Sociobiology, 65 (1), 57-68.
Så vad betyder utelämnande av en prediktor? skärning av en prediktor tenderar vanligtvis att öka andras betydelse. Vad betyder det när en prediktor tidigare i stort sett inte signifikant förbättras och blev betydelsefull efter att ha tagit bort en inte signifikant? det betyder att det andra gömde det första. Jag är ganska förvirrad över ämnet och jag älskar dina exempel! Har du något emot att ta en titt på den här andra min fråga? http://stats.stackexchange.com/questions/102834/to-step-or-not-to-step-for-model-selection-in-regression
Bland annat om du släpper en andra variabel och den första blir signifikant betyder det att p-värdet för den första nu är ogiltigt på grund av muddring. Jag är glad att det hjälpte dig. Jag kan titta på din Q senare; om det är lämpligt kan du redigera det för att återspegla vad du har lärt dig här och vad du fortfarande behöver veta, så att den andra Q inte skulle vara en duplikat.
Jag skulle vilja hitta en bra klar fråga till detta svar: när det är lämpligt att utesluta en prediktor. Vad jag inte förstår är att om man kliver ut en variabel förstör modellen, är varje modell trasig och typ 1-fel utsatt för oändliga variabler som aldrig har beaktats till att börja med! å andra sidan, för att inkludera fler och fler variabler behöver du fler och fler observationer för att få betydande resultat och undvika andra problem, till exempel i logistisk glm. Så den enda bra modellen är gjord på hela befolkningen med alla möjliga variabler beaktade! Jag är helt klart förvirrad
Redigera informationen (om så är lämpligt) till din andra Q, inte som en kommentar här. Om det här svaret hjälpte dig kan du dessutom överväga att rösta. Tyvärr har jag inte tid att ta itu med detta just nu, men det är en rimlig fråga; Jag ska försöka sätta ihop något åt ​​dig senare.
Medan jag förstår att lasso krymper (och bara är mjuk tröskel i ortogonalt fall), varför är det sant att modellsökning blåser upp koefficienter?
@Benjamin, du väljer helt enkelt de största koefficienterna (i absolut värde).Realiserade värden studsar slumpmässigt runt sina sanna värden;genom att välja bara de största att behålla väljer du de som är för höga.
@Gung, tack för det snabba svaret! Jag förstår!Det beror på det stegvisa förfarandets karaktär - och är inte en funktion av modellsökning i allmänhet.Tack!Jag missförstod att tro att detta kan vara en alternativ anledning (förutom bias + variansavvägning) till förmån för lassokrympning. Jag ser faktiskt ingen koppling mellan lasso och dessa stegvisa procedurer.Lasso krymper inte modellen som valts med stegvisa procedurer - de valda variablerna kan vara olika.(Jag vet dock att det är relaterat till stagewise via LARS.) Varför citeras lasso?
@Benjamin, LASSO ”väljer” inte variabler i den mening som stegvis markering gör;det krymper bara uppskattningar till 0. Vid något värde av lambda kan vissa betor faktiskt vara 0, men alla betor krymper på detta sätt.De valda variablerna kan vara lika, men deras beta kommer inte att vara.Om du har en lambda a-priori, så är det det;alternativt kan du använda korsvalidering för att söka efter möjliga värden för lambda som optimerar förutsägbar noggrannhet ur provet.Ingen av dessa motsvarar stegvis markering.
Förlåt mig om detta har tagits upp naivt, men om oroet är att träningsdata muddras ... kan du inte ta din hypotes ur träning och validera / testa dem i de efterföljande datapartitionerna för att utesluta muddrar?
@thistleknot, säker.Du kan alltid använda detta (eller vad som helst) för att generera hypoteser och sedan testa dem i en ny dataset.På samma sätt kan du först partitionera din dataset, utforska och generera hypoteser i en uppsättning och sedan testa i den andra.Du måste ändå vara uppmärksam på att det finns en stor risk att inte hitta något för dina ansträngningar, för stegvis skickade du dig bara på en vild gåsjakt.
Jag är i skolan för datavetenskap vid Fullerton så jag har ett intresse av att komma till roten till frågan för framtida kodning.Muddrar inte data över montering och adresseras inte överpassning med datapartitionering?Vad sägs om k fold validering?Jag är förvirrad över hur dessa problem inte tas bort i validerings- / testdata.Jag har ett kapitel om att utvärdera modellprestanda med hjälp av lyftdiagram och propensties.Övergripande problem är relaterade till träningsdata, det är hela anledningen till att vi partitionerar data i första hand.DSS-träd har metoder för att utvärdera noggrannhet och orenhet för validering
@thistleknot, datamuddring har ett antal dåliga effekter (se listan överst), inte bara övermontering (om än mitt svar fokuserar på övermontering).Exempelvis är hypotesprov ogiltiga.Du kan dock göra vad du vill i ett nytt prov.Det kan vara att köra en annan studie, eller så kan du först partitionera dina data, köra stegvis (eller göra vad du vill) i en partition och sedan passa den modell du bestämde dig för i uthållningssatsen.Hur man gör detta med k-kors-validering är mer komplicerat.Det bör finnas befintliga trådar om det på CV.Du skulle dock aldrig få giltiga p-värden.
p-värden betyder ingenting förrän de validerats.Hela den här tråden har många människor som tycker att stegvis är dåligt, men hur frågan är inramad verkar det som om OP försöker lista ut hur man gör något som stegvis på träningsdata (specificerar inte faktiskt) och alla dessa frågorverkar ha att göra med att inte partitionera data ... vilket betyder att det inte är något fel med stegvis om det tillämpas i en partitionerad installation enligt instruktioner från kurser på forskarnivå;) ~
@thistleknot, Jag har ingen aning om vad "p-värden betyder ingenting förrän validerat" betyder.Hela svaret är (som alltid) mer nyanserat, men till en första approximation är * stegvis dåligt *.Det finns en mängd publicerad litteratur som visar det (se [här] (https://stats.stackexchange.com/a/115850/)).Jag undervisar på kurser på forskarnivå och jag lär mina studenter * inte * att använda stegvis, så jag vet inte vad du tänker på genom "i en partitionerad installation" som förmodligen gör det OK.Jag kan inte säga om du mest är intresserad av att argumentera om detta, men om du vill förstå någon aspekt vidare kan du fråga en ny fråga.
"p-värden betyder ingenting förrän validerat" betyder att du inte litar på ett p-värde för att vara signifikant förrän validerat (mot valideringsdata)
Jag har läst att stegvis, framåt och bakåt har problem, men inte i samband med detta problem, som verkar beskriva övermontering (?) [När det är gjort "korrekt" i ett partitionerat schema], vilket är vad detta svar verkaratt fokusera på.Jag försöker lista ut vilka riktiga metoder som är.Jag läser också kurser på forskarnivå, och jag tycker att det är konstigt att det finns viss felkommunikation.Jag har bett vår avdelningsstol att titta på det här inlägget
lång historia kort, RSS (endast linjär), RMSE (Jack Tanners svar) är där jag lutar mig mot.
Jag läser "Data Mining for business analytics by Wiley" och det finns ett kapitel om variabelt urval i Mutiple Linear Regression (ch 6), iterativa metoder kritiseras för deras brist på gruppvis urval.Frågorna som tas upp i denna fråga verkar dock vara adresserbara genom datadelning, vilket är metoden som föreslås i boken.Jag är ute efter andra metoder, men jag kan inte se hur dessa problem är relevanta för stegvis i en partitionerad installation.
Antyder du att "stegvis modellval" och "att använda tåguppsättning som testuppsättning" är samma koncept?Det verkar för mig att tränarexemplet bara attackerar det senare.
@nalzok, som stegvis modellval görs vanligtvis, det finns inga tränings- / test / valideringsuppsättningar, bara den ursprungliga datasetet.Du behöver inte nödvändigtvis ha samma problem om du hyser detta i CV, eller om du passar din slutliga modell på en hållsats.
@gung Vänta en sekund, du menar att stegvis modellval inte är fel i sig, och vi avskräcker dem helt enkelt för att människor gör det fel (delar inte upp datamängden)?Med andra ord är det OK att använda stegvis modellval på träningssatsen så länge jag använder CV?
@nalzok, inte riktigt.Stegvis är en dominerad strategi.Det finns i princip alltid ett bättre alternativ.Dessutom kräver sätten att mildra mot dess problem en nivå av sofistikering som skulle göra bättre metoder genomförbara.Men om du absolut måste använda dåliga metoder, så finns det saker du kan göra för att göra det mindre dåligt, men vad du exakt skulle göra beror på din situation, dina data och dina mål.
@gung Jag hoppas verkligen att du utarbetar frågorna om stegvis modellval med exempel.Faktum är att du har listat problemen genom att citera Frank Harrell, men att förklara de allvarligaste mer detaljerat skulle göra ditt svar ännu bättre.Naturligtvis är det redan så bra att jag inte kan be om mer :-)
Zach
2012-01-10 19:18:58 UTC
view on stackexchange narkive permalink

Kolla in paketet caret i R. Det hjälper dig att korsvalidera stegvisa regressionsmodeller (använd method = 'lmStepAIC' eller method = 'glmStepAIC' ), och kan hjälpa dig att förstå hur den här typen av modeller tenderar att ha dålig förutsägbar prestanda. Dessutom kan du använda funktionen findCorrelation i caret för att identifiera och eliminera kollinära variabler, och funktionen rfe i caret för att eliminera variabler med låg t-statistik (använd rfeControl = rfeControl (funktioner = lmFuncs) ).

Men som nämnts i föregående svar är det troligt att dessa metoder för variabelval kommer att få dig i trubbel, särskilt om du gör dem iterativt . Se till att du utvärderar dina prestationer i en HELT uthållen testuppsättning. Titta inte ens på testuppsättningen förrän du är nöjd med din algoritm!

Slutligen kan det vara bättre (och enklare) att använda prediktiv modell med "inbyggt" funktionsval, till exempel ås regression, lasso eller det elastiska nätet. Testa specifikt argumentet method = glmnet för caret och jämför den korsvaliderade noggrannheten för den modellen med argumentet method = lmStepAIC . Min gissning är att den förstnämnda kommer att ge dig mycket högre noggrannhet än provet, och du behöver inte oroa dig för att implementera och validera din anpassade algoritm för val av variabel.

Påföljder som den dubbla pareto är bättre än ås och lasso ur ett statistiskt perspektiv, eftersom de inte krymper de tydligt icke-noll koefficienterna. Men tyvärr leder de alltid till ett icke-konvext straff, så de är värre ur ett beräkningsperspektiv. Jag skulle tro att ett straff baserat på Cauchy-fördelningen skulle vara bra $ \ log (\ lambda ^ 2 + \ beta ^ 2) $.
@probabilityislogic Känner du till några bra implementeringar av den dubbla pareto-straffen, på ett språk som `r` eller` python`? Jag skulle gärna testa det.
Enligt vad jag förstår är modellval med AIC och lämna-en-ut-kors-validering i princip samma sak (asymptotisk ekvivalens, se [Stone, 1977)] (http://www.jstor.org/stable/2984877), så AIC och vissa typer av korsvalidering kommer sannolikt att leda till mycket liknande resultat.Jag har dock inte använt vaktpaketet, och från metodanropen verkar det som om AIC verkligen används i vissa fall.
Jack Tanner
2012-01-10 12:34:01 UTC
view on stackexchange narkive permalink

Jag instämmer helt i de problem som beskrivs av @gung. Med detta sagt är modellval realistiskt sett ett verkligt problem som behöver en verklig lösning. Här är något jag skulle använda i praktiken.

  1. Dela upp dina data i utbildning, validering och testuppsättningar.
  2. Träna modeller på din träningssats.
  3. Mät modellprestanda på valideringsuppsättningen med hjälp av ett mätvärde som förutsägelse RMSE och välj den modell med lägst förutsägelsesfel.
  4. Utforma nya modeller efter behov, upprepa steg 2-3.
  5. Rapportera hur bra modellen presterar på testuppsättningen.

För ett exempel på användningen av den här metoden i den verkliga världen tror jag att den användes i Netflix-pristävlingen.

Datasplittring är inte tillförlitligt om inte $ n> 20000 $.
@Frank: Varför tror du att N måste vara så hög?
På grund av dålig precision. Om du delar igen kan du få mycket olika resultat. Det är därför människor gör 100 upprepningar av tiofaldig korsvalidering eller bootstrapping.
@FrankHarrell Vad beror den siffran n> 20000 på? Baseras det på originalaffischens kommentar om att ha "_flera hundratals faktorer_"? Eller är det oberoende av någon aspekt av datan?
Den typ av inställning som jag testade uppdelning av data var n = 17000 med en bråkdel på 0,3 med en händelse och med cirka 50 parametrar undersökta eller anpassade till en binär logistisk modell. Jag använde en slumpmässig 1: 1-delning. Det validerade ROC-området i testprovet förändrades väsentligt när jag delade upp data igen och började om. Se under Studier av metoder som används i texten på http://biostat.mc.vanderbilt.edu/rms för simuleringsstudier och relaterade artiklar som ger mer information.
Har du lite mer information om Netflix-tävlingen och hur lösningen använde den här metoden?
förmodligen varför capstone kurser vill ha 20k + poster
heran_xp
2015-03-17 21:12:52 UTC
view on stackexchange narkive permalink

För att svara på frågan finns det flera alternativ:

  1. all-subset av AIC / BIC

  2. stegvis med p -värde

  3. stegvis med AIC / BIC

  4. regularisering som LASSO (kan baseras på antingen AIC / BIC eller CV )

  5. genetisk algoritm (GA)

  6. andra?

  7. användning av icke-automatiskt, teori ("ämneskunskap") orienterat urval

Nästa fråga skulle vara vilken metoden är bättre. Denna uppsats (doi: 10.1016 / j.amc.2013.05.016) indikerar att "all möjlig regression" gav samma resultat till den föreslagna nya metoden och stegvis är värre. En enkel GA är mellan dem. Det här dokumentet (DOI: 10.1080 / 10618600.1998.10474784) jämför bestraffad regression (Bridge, Lasso etc) med "språng-och-gränser" (verkar vara en uttömmande sökalgoritm men snabbare) och fann också "bromodellen håller med den bästa modellen från delmängdsvalet med språngmetoden ”. Detta dokument (doi: 10.1186 / 1471-2105-15-88) visar att GA är bättre än LASSO. Detta dokument (DOI: 10.1198 / jcgs.2009.06164) föreslog en metod - i huvudsak en hel delmängd (baserad på BIC) -metod men minskar beräkningstiden på ett smart sätt. De visar att den här metoden är bättre än LASSO. Intressant, detta dokument (DOI: 10.1111 / j.1461-0248.2009.01361.x) visar metoder (1) - (3) ger liknande prestanda.

Så totalt sett är resultaten blandade men jag fick ett intryck att GA verkar väldigt bra även om stegvis kanske inte är så dåligt och det är snabbt.

När det gäller 7), användningen av icke-automatiskt, teori ("ämneskunskap") orienterat urval. Det är tidskrävande och det är inte nödvändigtvis bättre än automatisk metod. Faktum är att i tidsserielitteraturen är det välkänt att automatiserad metod (särskilt kommersiell programvara) överträffar mänskliga experter "med en betydande marginal" (doi: 10.1016 / S0169-2070 (01) 00119-4, sida 561, t.ex. att välja olika exponentiell utjämning och ARIMA-modeller).

Var medveten om att du kan få olika prestanda i simuleringsstudier av olika urvalsalgoritmer genom att ändra datagenereringsprocessen för att gynna (även om inte avsiktligt) en viss rutin.Frågan om vilken strategi som kommer att gå snabbare eller långsammare är tydlig, men potentiellt fortfarande viktig.
Faktum är att exemplen i Tibshiranis [originalpapper på LASSO] (http://statweb.stanford.edu/~tibs/lasso.html) illustrerar @gung's-punkten.Detsamma gäller jämförande studier av olika metoder på verkliga data.BTW, är din sista referens rätt?Papperet av Clements & Hendry med DOI du ger gör inte påståendet att automatiserade metoder överträffar mänskliga experter, eller använder orden "med betydande marginal" alls.(Det skulle vara trevligt om du gav fullständiga referenser.)
Hittade det: Goodrich (2001), "Kommersiell mjukvara i M3-tävlingen", Int.J. Prognos., 17, s. 560–565.Det är under samma "Kommentarer till M3-Competition" -samlingen som Clements & Hendry-tidningen, varför Googling DOI skickade mig dit.
Hur som helst är det inte alls klart att Goodrichs kommentar har något att göra med * ämnes * expertis.
@Scortchi kan det vara tydligare i artikeln som börjar på sidan 581 i den tidskriften.Det är mer relaterat till "M2-Competition" där automatiska prognosmetoder jämfördes med inbjudna mänskliga experter (inklusive några stora namn i tidsserielitteraturen) som kände till ekonomisk / industriell kontext och till och med kunde begära ytterligare information från företag som tillhandahölluppgifterna.
JenSCDC
2014-06-24 21:49:31 UTC
view on stackexchange narkive permalink

Här är ett svar från vänster fält - istället för att använda linjär regression, använd ett regressionsträd (rpart-paket). Detta är lämpligt för automatiskt modellval eftersom du med lite arbete kan automatisera valet av cp, parametern som används för att undvika överpassning.

marshmallow
2015-03-14 21:39:41 UTC
view on stackexchange narkive permalink

linjär modell kan optimeras genom att implementera genetisk algoritm för att välja de mest värdefulla oberoende variablerna. Variablerna representeras som gener i algoritmen, och den bästa kromosomen (uppsättningen gener) väljs sedan efter crossover, mutation etc. operatörer. Den är baserad på naturligt urval - då kan bästa "generation" överleva, med andra ord optimerar algoritmen uppskattningsfunktionen som beror på den specifika modellen.

Det skulle välja de "bästa" variablerna i * data *, inte nödvändigtvis de bästa variablerna i datagenereringsprocessen / populationen, eftersom den bara har tillgång till data.Det är inte riktigt så olikt den stegvisa metod som OP ville ha.
Praveen
2017-12-18 00:32:57 UTC
view on stackexchange narkive permalink

Vi har en funktion i R-basstatistikpaketet, som kallas steg (), vilket gör framåt, bakåt eller stegvis val av modeller baserat på lägsta AIC.Detta fungerar också för faktorvariabler.Serverar inte detta syftet här ?.

kjetil b halvorsen
2020-05-14 14:14:27 UTC
view on stackexchange narkive permalink

Svaren här avråder från variabelt val, men problemet är verkligt ... och fortfarande gjort.En idé som bör prövas mer i praktiken är blinda analyser , som diskuteras i detta naturpapper Blind analys: Dölj resultat för att söka sanningen .

Denna idé har nämnts i ett annat inlägg på denna webbplats, Flera jämförelser och sekundär forskning.Tanken att blända data eller införa extra, simulerade brusvariabler har verkligen använts i simuleringsstudier för att visa problem med stegvis, men tanken här är att använda den, blindad, i verklig dataanalys.

S4M
2012-02-11 16:46:35 UTC
view on stackexchange narkive permalink

Jag ser att min fråga genererade mycket intresse och en intressant debatt om giltigheten hos den automatiska modellen för val av modell. Även om jag håller med om att det är riskabelt att ta för givet resultatet av ett automatiskt val kan det användas som utgångspunkt. Så här är hur jag implementerade det för mitt specifika problem, det vill säga att hitta de bästa faktorerna för att förklara en viss variabel sortera regressionen efter ett visst kriterium (säg AIC)

  • ta bort de faktorer som har låg t-stat: de är värdelösa för att förklara vår variabel
  • med ordningen i 2. , försök att lägga till faktorerna en efter en i modellen och behålla dem när de förbättrar vårt kriterium. iterera för alla faktorer.
  • Återigen, detta är väldigt grovt, det kan finnas sätt att förbättra metoden, men det är min utgångspunkt. Jag lägger upp det här svaret i hopp om att det kan vara användbart för någon annan. Kommentarer är välkomna!

    (1) Jag har inte bevittnat någon "debatt" i denna tråd: alla svar och kommentarer presenterar samma grundläggande budskap. (2) Din implementering verkar vara en * ad hoc * -version av [stegvis regression] (http://en.wikipedia.org/wiki/Stepwise_regression). Jag håller med om att det kan vara användbart som utgångspunkt förutsatt att det inte automatiskt accepteras som ett mål i sig.
    du accepterade faktiskt ditt eget svar som rör sig mot varje argument som framförs av samhället. Inte överraskande att se negativen här ...
    Jag tror att det är första gången jag ser så många nedröstningar. @SAM varför accepterar du inte bara några av de andra utmärkta svaren och tar bort ditt "svar"?
    Är SE: s mest nedröstade svar någonsin?
    Du verkar ha svarat på @probabilityislogic: s viktiga fråga genom att säga ditt mål "att hitta de bästa faktorerna för att förklara en viss variabel."Modellbyggnad för att förklara (för att förstå kausalitet) måste göras mer medvetet och vanligtvis mycket mer intensivt än modellbyggande för att förutsäga.


    Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
    Loading...