Küsimus:
R logistilise regressiooni alternatiivid
Tal Galili
2010-08-31 15:02:08 UTC
view on stackexchange narkive permalink

Sooviksin sama palju algoritme, mis täidaksid sama ülesannet kui logistiline regressioon. Need on algoritmid / mudelid, mis võivad anda ennustuse binaarsele vastusele (Y) koos mõne selgitava muutujaga (X).

Mul oleks hea meel, kui pärast algoritmi nimetamist näitaksite ka seda, kuidas Rakenda see R-is. Siin on kood, mida saab värskendada teiste mudelitega:

  set.seed (55) n <- 100x <- c (rnorm (n), 1 + rnorm ( n)) y <- c (rep (0, n), rep (1, n)) r <- glm (y ~ x, perekond = binoom) graafik (y ~ x) joon (lm (y ~ x), col = 'punane', lty = 2) xx <- seq (min (x), max (x), pikkus = 100) yy <- ennustama (r, data.frame (x = xx), type = 'vastus') ) read (xx, yy, col = 'blue', lwd = 5, lty = 2) pealkiri (main = 'Logistiline regressioon funktsiooniga "glm")  
Kas me peame eeldama, et kaalute ennustajate fikseeritud kogumit, st olete huvitatud usaldusväärse ennustuse saamisest, kasutades $ k $ ennustajaid, või olete huvitatud ka mingist karistamisest $ X_j \ quad'is (j = 1 \ punktid k) $?
Tunnistan, et minu isikliku huvi huvides poleks karistamist vaja ja siinkohal teadmise nimel ütleksin, et mõlemad on asjakohased vastused :)
Tuleviku huvides: võite olla suutnud selle küsimuse sõnastada nii, et oleksime lubanud selle mitte-CW-küsimusena. Vt http://meta.stats.stackexchange.com/questions/290/what-is-community-wiki
Tänan lingi eest Shane. Väga huvitav arutelu, mille seal avasite. Pärast Thomasase vastuse lugemist usun, et see peaks siiski olema kogukonna wiki, kuna minu eesmärk oli leida võimalikult palju alternatiive (midagi, mida ma kahtlen, kas keegi suudaks pakkuda). Ometi, veelkord, aitäh, et mind selle teema juurde suunasite!
See pole tegelikult liiga lai, et sellele saaks vastata - sellel on praegu 6 vastust (5 poolthäält).Veelgi enam, küsimus on ülihääletatud ja eelistatud ning on CW.See peaks jääma avatuks, IMO.
Kuus vastused:
#1
+29
Joe
2010-08-31 15:13:21 UTC
view on stackexchange narkive permalink

Praegu on populaarsed randomForest ja gbm (masinõppekirjanduses neid nimetatakse MART või Gradient Boosting), lihtsate puude jaoks rpart. Populaarne on ka bayesglm, mis kasutab seadistamiseks prioriteediga MAP-i.

  install.packages (c ("randomForest", "gbm", "rpart", "arm")) teek (randomForest) library (gbm) library (rpart) library (arm) r1 <- randomForest (y ~ x) r2 <- gbm (y ~ x) r3 <- rpart (y ~ x) r4 <- bayesglm (y ~ x, family = binoom) yy1 <- ennustada (r1, data.frame (x = xx)) yy2 <- ennustada (r2, data.frame (x = xx)) yy3 <- ennustada (r3, data.frame (x = xx)) yy4 <- ennustada (r4, data.frame (x = xx), type = "response")  
#2
+24
Joris Meys
2010-08-31 20:30:47 UTC
view on stackexchange narkive permalink

Tegelikult sõltub see sellest, mida soovite hankida. Kui teostate logistilise regressiooni ainult ennustuste jaoks, võite kasutada mis tahes teie andmetele sobivat jälgitud liigitusmeetodit. Teine võimalus: diskrimineeriv analüüs (lda () ja qda () paketist MASS)

  r <- lda (y ~ x) # kasutage ruutdiskrimineeriva analüüsi jaoks qda () .xx <- seq (min (x), max (x), pikkus = 100) pred <- ennustama (r, data.frame (x = xx), type = 'response') yy <- pred $ posterior [, 2] värv <- c ( "punane", "sinine") graafik (y ~ x, pch = 19, col = värv [pred $ klass]) joone (lm (y ~ x), col = 'punane', lty = 2) read (xx, yy, col = 'blue', lwd = 5, lty = 2) pealkiri (main = 'lda juurutamine')  

Teisest küljest, kui vajate oma ennustuste ümber usaldusvahemikke või teie hinnangute standardvead, ei aita enamik klassifitseerimisalgoritme teid aidata. Võite kasutada üldistatud lisaaineid (sega), mille jaoks on saadaval mitu paketti. Ma kasutan sageli Simon Woodi mgcv paketti. Üldistatud liitmudelid võimaldavad logistilisest regressioonist suuremat paindlikkust, kuna ennustajate modelleerimiseks võite kasutada splaine.

  set.seed (55) nõuda (mgcv) n <- 100x1 <- c (rnorm n), 1 + rnorm (n)) x2 <- sqrt (c (rnorm (n, 4), rnorm (n, 6))) y <- c (rep (0, n), rep (1, n) ) r <- gam (y ~ s (x1) + s (x2), perekond = binoom) xx <- seq (min (x1), max (x1), pikkus = 100) xxx <- seq (min (x2) , max (x2), pikkus = 100) yy < - ennustada (r, data.frame (x1 = xx, x2 = xxx), type = 'response') color = c ("red", "blue") klastrite moodustamine < - ifelse (r $ fit.values ​​< 0.5,1,2) graafik (y ~ x1, pch = 19, col = värv [klastrite moodustamine]) joon (lm (y ~ x1), col = 'punane', lty = 2 ) read (xx, yy, col = 'blue', lwd = 5, lty = 2) pealkiri (main = 'mängu juurutamine')  

Teha on veel palju muud:

  op <- par (mfrow = c (2,1)) joonis (r, kõik.terms = T) par (op) kokkuvõte (r) anova (r) r2 <- gam ( y ~ s (x1), perekond = binoom) anova (r, r2, test = "Chisq")  

...

Ma soovitaksin Simon Woodi raamatut üldiste lisandmudelite kohta

#3
+14
Shane
2010-08-31 18:02:43 UTC
view on stackexchange narkive permalink

Nõustun Joega ja lisan:

Põhimõtteliselt võiks kasutada mis tahes liigitusmeetodit, kuigi see sõltub andmetest / olukorrast. Näiteks võite kasutada ka SVM-i, võib-olla koos populaarse C-SVM-mudeliga. Siin on näide kernlabist, mis kasutab radiaalse põhituuma funktsiooni:

  teek (kernlab) x <- rbind (maatriks (rnorm (120) ,, 2), maatriks (rnorm (120, keskmine = 3) ,, 2)) y <- maatriks (c (rep (1,60), rep (-1,60))) svp <- ksvm (x, y, type = "C-svc") graafik (svp , andmed = x)  
#4
+12
jphoward
2010-12-31 20:56:21 UTC
view on stackexchange narkive permalink

Seal on umbes 100 klassifikatsiooni- ja regressioonimudelit, mida saab treenida caret-paketi kaudu. Teie jaoks on ükskõik milline klassifikatsioonimudel (erinevalt regressioonimudelitest, mis nõuavad pidevat reageerimist). Näiteks juhusliku metsa treenimiseks:

  teegi (caret) rong (vastus ~., Data, method = "rf")  

Vaadake märkmikku mudelikoolituse vinjett, mis on saadaval koos saadaolevate mudelite täieliku loendi saamiseks. See on jagatud kahesuguse kasutusega ja klassifitseerimise mudeliteks (mõlemat saate kasutada) ja ainult regressiooniks (mida te ei saa). caret treenib teie jaoks valitud mudeli parameetrid automaatselt.

#5
+7
IEORTools
2011-11-22 20:26:26 UTC
view on stackexchange narkive permalink

Naive Bayes on hea lihtne meetod andmete treenimiseks binaarse vastuse leidmiseks.

  teek (e1071) fitNB <- naiveBayes (y ~ x) ennustavad (fitNB, x)  kood> 
#6
+3
Ferdi
2016-09-15 18:33:22 UTC
view on stackexchange narkive permalink

Logistilisel regressioonil on kaks variatsiooni, mida pole veel välja toodud. Esiteks hindab logistiline regressioon tõenäosusi logistilise funktsiooni abil, mis on kumulatiivne logistiline jaotus (tuntud ka kui sigmoid). Tõenäosusi saate hinnata ka teistest jaotustest tuletatud funktsioonide abil. Logistilise regressiooni kõrval on kõige tavalisem probit regressioon, mis tuleneb normaaljaotusest. Täpsema arutelu saamiseks probiti ja logiti erinevuste vahel külastage palun järgmist saiti.

Logit ja probit mudelite erinevus

  seatud. seeme (55) n <- 100x <- c (rnorm (n), 1 + rnorm (n)) y <- c (rep (0, n), rep (1, n)) r <- glm (y ~ x, family = binomial (link = "probit")) joonis (y ~ x) joon (lm (y ~ x), col = 'punane', lty = 2) xx <-seq (min (x), max ( x), pikkus = 100) yy < - ennustada (r, data.frame (x = xx), type = 'response') read (xx, yy, col = 'red', lwd = 5, lty = 2) pealkiri (main = 'Probit regressioon funktsiooniga "glm")  

Teine alternatiiv osutab teie rakendatud logistilise funktsiooni nädalasusele. Kui teil on väike valimi suurus ja / või puuduvad väärtused, pole logistiline funktsioon soovitatav. Seega on täpne logistiline regressioon parem mudel. Tulemuse logi koefitsiendid modelleeritakse ennustavate muutujate lineaarse kombinatsioonina.

  elrm (valem = y ~ x)  

Lisaks on muid mainitavaid alternatiive:

  1. kaks -tingimustetabel
  2. Kahe rühma diskrimineerivate funktsioonide analüüs.
  3. Hotellingu T2.

Lõppmärkus: logistiline regressioon on sama mis väike närvivõrk ilma varjatud kihtideta ja ainult üks punkt viimases kihis. Seetõttu saate R-s kasutada närvivõrgu pakettide rakendusi, näiteks nnet .

Muuda:

Mõni nädal hiljem sain aru, et on olemas ka Winnow ja Perceptroni algoritm. Mõlemad on klassifikaatorid, mis töötavad ka liigitamisel kahte rühma, kuid mõlemad on viimase 15 aasta jooksul soositud.



See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 2.0-litsentsi eest, mille all seda levitatakse.
Loading...