Erklärung einer Dauer aus verschieden skalierten Faktoren

Alle Verfahren der Regressionanalyse.

Re: Erklärung einer Dauer aus verschieden skalierten Faktore

Beitragvon bele » Fr 1. Feb 2013, 09:17

Hallo Herbert, wie gesagt: Ich weiß nicht, worin das Problem der extrem langen Laufzeit liegt. Ich weiß auch nicht, ob Du aus den 1000 Datensätzen irgendwann einen Baum erhalten hast oder auch nicht. Ich stelle mir nur vor, dass Dein Rechner bei 1000 Dummys sehr, sehr viel Rechnen muss - möglicherweise läuft der RAM voll, das Betriebssystem lagert Daten auf die Festplatte aus und dann wird es langsam. Du hast versucht, weniger Datensätze einzubeziehen und ich wollte vorschlagen, weniger Prädiktoren einzubeziehen. Ggf. könntest Du auch versuchen die Anzahl möglicher Verzweigungen zu reduzieren oder weitere Verzweigungen mit höheren Kosten zu assoziieren. Alles das müsste möglich sein; leider kann ich nicht mit eigenen Erfahrungen helfen. Eventuell lohnt es sich bei Deinem großen Datensatz auch nach einer spezialisierteren Software als R zu suchen?

gibt es für die linearen Regressionen Pakete, die die Variablenauswahl vornehmen, so dass ich ganz stumpf R die Arbeit machen lassen kann?


Wenn ich das richtig verstehe hast Du ja doch sehr spezielle Anforderungen an die Variablenauswahl (nur die Faktoren, mindestens x-mal vorkommen). Ich denke, da wirst Du um ein wenig eigene Programmierarbeit nicht herum kommen.
Ein kleiner Trost zum Schluss: Es gibt eine Abkürzung der R-Formelschreibweise, die einem viel Tipparbeit erspart: den Punkt:

Code: Alles auswählen
x <- rnorm(100)
y <- rnorm(100)
z <- jitter(3*x+2*y,3)
D <- data.frame(x, y, z)

lm(z ~., data=D)

LG,
Bernhard
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5908
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1396 mal in 1382 Posts

Re: Erklärung einer Dauer aus verschieden skalierten Faktore

Beitragvon futureherbert » So 10. Feb 2013, 21:26

Heyo,

ich wollte mich nur auch nochmal zurückmelden. So langsam kommt man ja rein in den ganzen Sums. :)
Mit cforest sehe ich mich auf keinen grünen Ast kommen, aber die normalen randomForests arbeiten und die Prognosen waren wohl auch ganz ok, danke für Deine Hilfe!
Irgendwie macht mir das sogar Spaß, deswegen will ich noch ein wenig damit rumspielen. Auf Hochdeutsch: Fragenkatalog hängt an ;)

Hatte ein wenig das Problem, dass mir zumeist die Klasse mit größter relativer Häufigkeit im Datensatz prognostiziert wurde.
Habe gelesen dass das daran liegen kann, dass die predictor-Variablen einfach keine vernünftige Entscheidung zulassen, glaube aber, dass ich dem Algorithmus auch keine Strafe auferlegt habe, wenn er etwas falsch kategorisiert hat.
Was zur ersten Frage führt.

1. Wenn ich nun Kosten für die Klassifikationsfehler einführen würde, wie kann ich das einbinden? Über cutoff?
Können Kosten Einfluss auf die Splits haben (wenn ja, ist das implementiert?)
Haben Kosten einen Einfluss auf die Klassifikationen der Blätter? (Fehlentscheidung für A wäre teurer als Fehlentscheidung für B, wenn ich nicht sicher genug bin, prognostiziere ich B..)
Selbe Frage für Wälder. Ich habe 10 Bäume, die A sagen, 9 sagen B. Aber das finde ich zu unsicher, da möchte ich lieber B.

2. Boosting von RF in R.
Geht das mit irgendeinem package? Ich sehe in randomForest nur die Methoden tuneRF, welches an mtry herumspielt, und rfcv, das die Predictorvariablen schrittweise rauswirft.
Aber Boosting, welches ja den Wald in mehreren Iterationen verbessert, sehe ich da nicht realisiert.
Überhaupt finde ich Boosting häufig nur als alternative Ensemblemethode, die halt einen Haufen kleiner Baumstümpfe anpasst. Gibt es das garnicht verbunden mit Wäldern aus komplexen Bäumen?

3. Ich würde ganz gerne der stumpfen Mehrheitsentscheidung nochmal entgegentreten.
Habe mir die OOB-Votes im Waldaufbau ausgeben lassen mit fit$votes.
Darüber habe ich dann nochmal eine Funktion rennen lassen (glaube rm, randomForest und eins von den party-dingern.. ctree oder cforest), die aus den relativen Häufigkeiten der Votes auf die Klasse schließen sollte.
(Vielleicht läuft das hier auch mit dem cutoff zusammen, den ich so verstanden habe, dass er abfängt, wenn zB 70% meiner Daten einer Klasse zufallen, die sonst immer gewählt würde.)

D.h. die Aussage (32% Bäume entscheiden sich für Klasse A, 30% B, 38% C..) hab ich nicht als Kategorisierung in Klasse C akzeptiert, anhand derer ich dann sage: "ok, C ist nicht <15min.", sondern werfe die relativen Häufigkeiten noch einmal in eine Funktion, die als Zielvariable die binäre "<15min?" Kategorie hat und erhalte ein besseres Ergebnis (plötzlich nur noch 6% Fehler beider Art in meinem zurückgehaltenen Drittel Testdaten)
Ich glaube, dass das nicht ganz falsch war, bin aber nicht sicher, ob ich nicht wieder was übersehen habe..
Zum Beispiel, dass ich ja nun an meine OOB-Daten anpasse. Aber ich validiere es ja mit nem unabhängigen Testset. Müsste ok sein..

Einschub/Nachtrag:
Der Beweis von Breiman (paper, Theorem 1.2) dass RFs nicht overfitten basiert auf der Marge-Funktion, die die korrekten Klassifikationen der Bäume innerhalb eines Waldes durch Mehrheitsentscheid bewertet. Wenn ich diese Klassifikationen nun nochmal nachträglich anpasse auf meine Testdaten, störe ich damit den Beweis?


Darüber hinaus frage ich mich, ob ich dann nicht nur die Prognosehäufigkeiten, sondern die Prognosen der einzelnen Bäume einbeziehen kann um wirklich explizit die Prognosen "guter" Bäume zu betonen.
Aber dafür sehe ich keine vernünftige Methode, die mir sagt, welcher Baum welche Prognose getroffen hat, so dass ich aus predict eine Matrix mit ntree Spalten bekäme.

Sollte es sinnvoll gewesen sein, würde ich gerne das selbe Entscheidungstuning für die Blätter der Bäume machen (also quasi eine Ebene vorher schon).
Denn dort kamen ja auch zB (2 Klasse A, 3 Klasse B, 3 Klasse C 0 Klasse D) Daten an -> Blatt entscheidet random auf B oder C.
Ich sehe aber eine ~Tendenz zu A, will also lieber B als C. Außerdem hab ich ja evtl. unterschiedliche Kosten (siehe Frage 1)

Oder sind meine Bäume sowieso so überangepasst, dass ich meist "reine" Blätter habe? (Würde es sich dann lohnen, wenn ich über nodesize flachere Bäume pflanze und dann die unreinen Blätter fitte?)

LG

ps. gerade vor der Formelschreibweise wurde ich gewarnt, da R sich dadran wohl sehr aufhält... Bin jetzt zu x = daten[,-1], y = daten[,1] übergegangen, auch wenn ich bei mir noch keinen harten Performance-gain drin sehe.
futureherbert
Beobachter
Beobachter
 
Beiträge: 10
Registriert: Do 24. Jan 2013, 23:10
Danke gegeben: 4
Danke bekommen: 0 mal in 0 Post

Vorherige

Zurück zu Regressionanalyse

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste