Erklärung einer Dauer aus verschieden skalierten Faktoren

Alle Verfahren der Regressionanalyse.

Erklärung einer Dauer aus verschieden skalierten Faktoren

Beitragvon futureherbert » Fr 25. Jan 2013, 00:04

Hallo,

ich wühle mich seit Tagen durch Literatur und das Internet, komme aber nicht wirklich weiter.. Eigentlich sollte das alles nicht so schwer sein, aber ich hab ne Gedankenblockade..
Vielleicht finde ich ja hier endlich Hilfe :) Oder wenigstens Hinweise, zu welchen Modellen ich Literatur vertiefen sollte. Ich komme langsam durcheinander und verliere den Überblick..

Meine Aufgabe ist folgende:
Ich soll eine Vorhersage treffen, ob ein Kurier eine Strecke innerhalb einer Zeitspanne von 15 Minuten zurücklegen kann. Die Strecken werden als schaffbar eingeschätzt, bzw. die Kuriere fahren Strecken, von denen sie selber glauben, sie auch in der Zeit zu schaffen (soll vielleicht darauf hindeuten, dass der Anteil der Fahrten, die in 15min geschafft wurden eine Effizienzkennzahl des Fahrers beschreibt? siehe unten..)

Dafür habe ich einige gemessene Zeiten, die allerdings nur in Intervallen vorliegen.
0-10 Minuten, 10-15 Minuten, 10-20 Minuten, 20-40 Minuten, >40 Minuten
(Die Skalierung ist gefühlt eher sch..lecht gewählt, aber ich habe leider nur diese Daten und keine Chance die Daten neu zu erheben.)

Zu diesen gemessenen Zeiten habe ich eine Reihe Faktoren, deren Einfluss ich bewerten möchte (und im Endeffekt möchte ich ein Modell erstellen, mit dem ich eine möglichst sichere Prognose treffen kann, ob die 15 Minuten schaffbar sind.)
Diese Faktoren sind sowohl metrische Variablen wie das transportierte Gewicht, die Fahrtstrecke, als auch Faktoren wie die Uhrzeit (rush hour..), der Monat (könnte ja glatt sein), eine Bewertung der Strecke (hügelig, flach, etc.), das Alter des Fahrers .. etc.

Die erste Frage, mit der ich nicht weiterkomme ist allerdings: WAS ist das eigentlich für eine Skalierung, die meine abhängige Variable da hat??
- Intervallskaliert? Ich kann die Intervalle ordnen, ich sehe unterschiedliche Intervallgrößen.
- Verhältnisskaliert? Ich sehe einen absoluten Nullpunkt, aber ich habe ja Werte, die irgendwo innerhalb dieses Intervalles liegen..

Zweitens suche ich nach einer Möglichkeit die Zeit-Messwerte pro Fahrer irgendwie zusammenzufassen, da ich unterstelle, dass manche beispielsweise sportlicher sind als andere und deswegen prinzipiell schneller.
- Welche Aggregation würde sich anbieten? Mittelwert der Zeiten von Fahrer x würde die Streuung innerhalb der gefahrenen Intervalle ja vollkommen ignorieren.. Median also? Anteil der Fahrten, die er in 15 Minuten geschafft hat?
- Darf ich das überhaupt, oder wäre das eine Erklärung von Y mit Y? Muss ich dann die Beobachtungsdaten splitten und in Menge A den Indikator berechnen, während ich dann die Gewichte für meine Faktoren in Menge B berechne?

Welche Modelle darf ich benutzen um Prognosen zu treffen? (recap, die Frage war: schafft er es in 15min?)
- Intervallregression, Prognose: wie lange braucht er? ist das <= 15? fertig
- soll ich meine Zeitintervalle einfach in binäre Entscheidungsvariablen transformieren (<=15, >15) und dann eine (binäre) logistische Regression darauf fahren?
- ich bin über ordered logistic regressions gestolpert (kann aber mit den vorausgesetzten proportional odds nichts anfangen, sind die durch meine verschieden großen Intervalle gestört?)
- mit ordered probit müsste ich mich noch komplett beschäftigen, Wikipedia-überfliegen erklärt mir leider nicht fix, was sie tut - kann ich damit gute Ergebnisse erzielen?
- bieten sich Entscheidungsbäume an?
-- machen mehrere Modelle Sinn, die ich dann einfach alle durcharbeite und gegenüberstelle?

achso, wir haben ein schön großes N (~40.000) und für Bonuspunkte den Hint bekommen, dass einige der vorgegebenen Faktoren "teurer" seien. Wie kann man das abbilden?
Hatte das vorher so verstanden, dass man Faktoren hinzunehmen kann, solange das korrigierte R² größer wird - kann man die Kosten pro hinzugenommenem Faktor gewichten?
futureherbert
Beobachter
Beobachter
 
Beiträge: 10
Registriert: Do 24. Jan 2013, 23:10
Danke gegeben: 4
Danke bekommen: 0 mal in 0 Post

Re: Erklärung einer Dauer aus verschieden skalierten Faktore

Beitragvon bele » Fr 25. Jan 2013, 17:54

Hallo Herbert,

4*10^4 klingt nach einer sehr schön großen Zahl. Hoffentlich wird das nicht durch eine Unzahl von Kurierfahrern wieder wett gemacht. Wenn nein, dann kannst Du die Kurierfahrer in allen Modellen einfach als Dummy-Variable kodieren. Bei so schön großen Zahlen ist ein Blick auf Maschinenlernverfahren wie die von Dir erwähnten Entscheidungsbäume, aber auch auf Entscheidungswälder oder ... bestimmt lohnend. Bei diesen Verfahren musst Du Dir dann auch nicht viele Gedanken über Skalenniveaus oder erfüllte Voraussetzungen machen. Entscheidungswälder wären ja ungefähr das von Dir angedachte Erstellen mehrerer Modelle mit anschließender Zusammenfassung.
http://statmethods.net/advstats/cart.html

(das rpart-package für R zum Beispiel kennt auch Kosten für das Einbeziehen jeder einzelnen Variablen, andere Algorithmen bestimmt auch.)

Wenn den 40000 Beobachtungen eine deutlich geringere Zahl von Prädiktoren (vor allem: Fahrern) gegenüber steht, dann würde ich auch Neuronale Netze in die Planung mit einbeziehen. Ähnlich wie Bäume können die sehr komplexe Zusammenhänge modellieren, die Du mit den verschiedenen Abwandlungen der linearen Regression nicht abbilden kannst. Voraussetzung: Genug Beobachtungen um genug Neurone ausbilden zu können.

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: 5899
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1392 mal in 1378 Posts

folgende User möchten sich bei bele bedanken:
futureherbert

Re: Erklärung einer Dauer aus verschieden skalierten Faktore

Beitragvon futureherbert » Fr 25. Jan 2013, 18:29

Hi Bernhard,

danke für die fixe Antwort und Deine Hilfe! Hoffentlich kannst Du mich noch etwas weiter leiten :)

Meine 12*10^3 Kurierfahrer mag ich ungern in Dummyvariablen umwandeln ;)
Deswegen ja die Frage, ob ich ihnen einfach irgendeine Variable aufdrücken kann, die sie beschreibt...

Du meinst also, Regressionsverfahren sind hier eh vollkommen fehl am Platze?
(oder dauert es nur länger, zu Ergebnissen zu kommen?
Das wäre mir im Moment erstmal egal, wie gesagt, ich ziele auf möglichst wenige Fehleinschätzungen, deren Kosten würde ich dann irgendwie versuchen den Parametrisierungskosten entgegenzustellen..)

Entscheidungswälder sind wohl die 'Random Forests', über die ich mal gestolpert bin..
Stelle ich mir einfach mal so vor wie eine Armada von Entscheidungsbäumen, aus denen ich mir den raussuche, der die besten Ergebnisse liefert..
Nach welchen Systemen werden die erzeugt - Variablen-Shuffle mit Verbesserung durch Selektion/Rekombination/Mutation-Zyklen? Systematisch?

@Prädikatoren: abgesehen von den Kurieren habe ich etwa 25 Faktoren hier liegen, von denen würde ich 7 als Factor/Boolean-Datentyp sehen.
Stunde, Wochentag, Monat bin ich nicht sicher, aber die werden WENN sie einfluss haben wohl eher sprungartige Peaks haben.. - sollten die also Dummycodiert werden, wären das ja schon mal 23+6+11=40, plus von den anderen Faktoren noch mal etwa 10 Dummys. Macht übern Daumen um die 70 Spalten maximal, sehe ich das richtig?

LG
futureherbert
Beobachter
Beobachter
 
Beiträge: 10
Registriert: Do 24. Jan 2013, 23:10
Danke gegeben: 4
Danke bekommen: 0 mal in 0 Post

Re: Erklärung einer Dauer aus verschieden skalierten Faktore

Beitragvon bele » Fr 25. Jan 2013, 20:22

Hallo!

Nein, ich habe nicht gesagt, dass Du "klassische" Regressionsverfahren verwerfen sollst. Ich denke nur, dass Du Dir auch mit den "alternativen" Mühe geben solltest.

Du hast 40*10^3 Datensätze von 12*10^3 Fahrern. Pro Fahrer also gerade mal eben 3,33 Beobachtungen. Glaubst Du wirklich, dass Du aus diesen 3 Messungen schließen kannst, welche Fahrer schnell und welche langsam sind? Spätestens wenn Du Deine Daten in einen Trainings- und einen Testdatensatz aufteilst bleiben nicht mal 2 Beobachtungen pro Fahrer und Datensatz. Vielleicht solltest Du darüber nachdenken, diese Information gar nicht einzuschließen. Auch nicht in irgendwelchen willkürlichen Gruppen.

Ja, mit Regressionswald/Entscheidungswald meinte ich Random Forests (z.B. http://de.wikipedia.org/wiki/Random_Forest ).

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: 5899
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1392 mal in 1378 Posts

Re: Erklärung einer Dauer aus verschieden skalierten Faktore

Beitragvon bele » Fr 25. Jan 2013, 20:36

Nachtrag: Für Deine Berücksichtigung der Kosten verschiedener Parameter könnte vielleicht ein Maß für die Merkmalswichtigkeit im Random Forest interessant werden: http://stat.ethz.ch/research/mas_theses/2009/luethy.pdf
----
`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: 5899
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1392 mal in 1378 Posts

folgende User möchten sich bei bele bedanken:
futureherbert

Re: Erklärung einer Dauer aus verschieden skalierten Faktore

Beitragvon futureherbert » Fr 25. Jan 2013, 21:53

Danke für den Link :)

Auch danke für den Hinweis zum Aussagegehalt. Ich gebe zu, dass ich das etwas übermotiviert angegangen sein mag, würde da aber prinzipiell gerne nochmal nachhaken.
Der Durchschnitt ist bei den Beobachtungen nämlich richtig, ich hab aber ein Spektrum von 1 bis 434 Beobachtungen. Bei letzteren ließe sich vermutlich eine relativ wertvolle Info daraus ziehen, die zu verwerfen ich mich irgendwie weigere.. :/
So intuitiv würde ich doch jetzt behaupten (unter der Annahme, dass die Fahrer sich schon untereinander unterscheiden):

wenn ich die Info habe, dass jemand von 400 Lieferungen 390 schnell geschafft hat, dann könnte das doch zumindest für die Vorhersage, ob dieser Fahrer seine Fracht schnell liefert eine Info sein, die ich gerne nutzen würde..
Dass bei wenigen Beobachtungen diese Werte ad absurdum geführt werden, sehe ich ja auch.. Aber um mal kreativ zu werden:
Ich setze mir eine Zahl von Beobachtungen, die ich mindestens haben will, um das ganze irgendwie als repräsentativ anzusehen - sagen wir mal 10 - und aggregiere nur für diese Kuriere die Messungen. Kann ich damit mehr anfangen?

Boten-Indikator vorhanden?
  • nein -> ok, ich weiß genauso wenig wie vorher, schade.
  • ja -> ok, der hat mehr als 90% in 15 Min ausgeliefert: der schafft das besser als jemand, der es noch nie hinbekommen hat..

-> Eine Regression für Boten, bei denen ich die Info habe und eine für Boten, bei denen ich die Info nicht habe?
(Ein Entscheidungsbaum müsste das auch in einem Modell abbilden können, oder?)

Oder zaubere ich mir hier diese "willkürlichen Gruppen" zusammen?
Sorry, wenn das totaler Mist ist, aber für mich sieht es einfach so aus, als sei da eine Information zu gewinnen.. Ist das echt vollkommen falsch?
futureherbert
Beobachter
Beobachter
 
Beiträge: 10
Registriert: Do 24. Jan 2013, 23:10
Danke gegeben: 4
Danke bekommen: 0 mal in 0 Post

Re: Erklärung einer Dauer aus verschieden skalierten Faktore

Beitragvon bele » Fr 25. Jan 2013, 23:14

Hi!

Nein, nicht vollkommen falsch. Du kommst einfach mit den Infos sehr langsam um die Ecke. Du könntest vielleicht zwei Regressionen (egal ob "klassisch" oder "Baum" oder "Forrest" oder "Neuronales Netzwerk") nacheinander machen: Erst alle Datensätze ohne den Namen des Kuriers verwenden um einen "anonymen Erwartungswert für diese Fahrt" prognostizieren zu können.

Im zweiten Schritt dann für die Kuriere, die viele Einträge haben, einen zweiten Regressionsschritt: Dummy für den Kurier und "anonym prognostizierte Fahrzeit" als unabhängige Variable und "tatsächliche Fahrzeit" als abhängige Variable oder "tatsächliche durch prognostizierte Fahrzeit" als abhängige Variable (in Prozent).

Den ersten Schritt kannst Du dann für alle Fahrer, den zweiten als Korrekturfaktor für die häufig erfassten Fahrer verwenden.

Macht das Sinn?

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: 5899
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1392 mal in 1378 Posts

Re: Erklärung einer Dauer aus verschieden skalierten Faktore

Beitragvon bele » Sa 26. Jan 2013, 18:21

Hi,

beim zweiten Nachdenken, kannst Du natürlich auch nur einen Schritt machen, in dem Du die Fahrer, die wirklich häufig vertreten sind, als Dummy mitführst. Ich war eben zu kompliziert gestrickt.

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: 5899
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1392 mal in 1378 Posts

Re: Erklärung einer Dauer aus verschieden skalierten Faktore

Beitragvon futureherbert » Sa 26. Jan 2013, 19:25

Hey Bernhard,

habe mich seit gestern ein wenig in CART und Random Forests eingelesen, glaube das hab ich weitestgehend durchstiegen.
(wenn Du Dich allerdings damit auskennst kannst Du mir vielleicht schnell sagen, wie ich mir die Permutation einer Variablen vorzustellen habe, wenn ich die Merkmalswichtigkeiten berechnen will. Shuffle ich einfach die Werte dieses Merkmals durcheinander? Oder setze ich sie alle auf den selben Wert?)

Zu Deinem Vorschlag:
Von meinen 12k Fahrern glaube ich also, dass ich einem Teil eine Kennzahl zuweisen könnte, die beschreibt, wie schnell sie normalerweise radeln. Sagen wir mal da bleiben dann noch 1000 über.
1. darf ich die Datensätze, die ich verwende um diesen Indikator zu berechnen, noch als Trainings- oder Testdaten in meinem Modell benutzen?
2. Ich habe dann also 1000 dummy-Spalten.. Wie werte ich die aus? Alle in ein Regressionsmodell und die betas jeweils als Wert des "Merkmals" Fahrer-Indikator nehmen? Wäre es denn hier nicht einfacher, die relative Häufigkeit einer Fahrtzeit von <= 15 min zu zählen und daraus direkt EINE Spalte zu machen?

Und wie verfahre ich mit den Kurieren, bei denen ich nicht genug Daten hatte? Trage ich bei denen einen Phantasiewert ein?

Angenommen ich orientiere mich für die Entscheidung erstmal an dem Konzept der Bäume/Wälder.
Erkennt ein greedy vorgehender Baumalgorithmus denn überhaupt den (mehrstufigen) Zusammenhang:

bewertbarer Fahrer (zB durch Split bei Indikator Wert 0)
  • ja -> Split beispielsweise bei Indikator-Wert 0,7
    • >= 0,7 -> er schaffts sehr häufig in 15 min
    • <0,7 -> braucht mehr info
  • nein -> braucht mehr info

Kannst Du mir das noch einmal genauer erklären?

LG
futureherbert
Beobachter
Beobachter
 
Beiträge: 10
Registriert: Do 24. Jan 2013, 23:10
Danke gegeben: 4
Danke bekommen: 0 mal in 0 Post

Re: Erklärung einer Dauer aus verschieden skalierten Faktore

Beitragvon bele » So 27. Jan 2013, 09:56

Hallo Herbert,

futureherbert hat geschrieben:Von meinen 12k Fahrern glaube ich also, dass ich einem Teil eine Kennzahl zuweisen könnte, die beschreibt, wie schnell sie normalerweise radeln. Sagen wir mal da bleiben dann noch 1000 über.
1. darf ich die Datensätze, die ich verwende um diesen Indikator zu berechnen, noch als Trainings- oder Testdaten in meinem Modell benutzen?


Ich denke, Du solltest den Gedanken verlassen, dass _DU_ den Fahrern eine Kennzahl zuweisen solltest. Welcher Fahrer schneller, welcher langsamer als die anderen ist, das ist eine Aufgabe der Regression. Lass den Computer das machen. Du musst nur entscheiden, welche Fahrer überhaupt eine Sonderbehandlung verdienen. Zum Beispiel alle die, von denen >100 Fahrten dokumentiert sind.

futureherbert hat geschrieben:2. Ich habe dann also 1000 dummy-Spalten.. Wie werte ich die aus? Alle in ein Regressionsmodell und die betas jeweils als Wert des "Merkmals" Fahrer-Indikator nehmen? Wäre es denn hier nicht einfacher, die relative Häufigkeit einer Fahrtzeit von <= 15 min zu zählen und daraus direkt EINE Spalte zu machen?


Stell Dir vor, es gibt Fahrer, die immer wieder ungünstige Fahrten zugeteilt bekommen: immer wieder bei schlechtem Wetter und in den Verkehrsstoßzeiten. Selbst wenn er ein schneller Fahrer ist, wird er dann häufiger über die 15 Minuten kommen als ein langsamerer Fahrer, der aber immer nur wochenends oder nachts arbeitet und deshalb nie in den Berufsverkehr kommt. Wenn Du den Weg über die Dummy-Codierung gehst, dann kann der Regressionalgorithmus das berücksichtigen. Rechnest Du selbst ohne die Berücksichtigung anderer Verfahren, dann wird das verzerren.

Und wie verfahre ich mit den Kurieren, bei denen ich nicht genug Daten hatte? Trage ich bei denen einen Phantasiewert ein?


Wenn Du den Weg über die Dummy-Variablen gehst, dann sind die "anderen" der Fall, in dem alle Dummys Null sind.

Angenommen ich orientiere mich für die Entscheidung erstmal an dem Konzept der Bäume/Wälder.
Erkennt ein greedy vorgehender Baumalgorithmus denn überhaupt den (mehrstufigen) Zusammenhang:

bewertbarer Fahrer (zB durch Split bei Indikator Wert 0)
  • ja -> Split beispielsweise bei Indikator-Wert 0,7
    • >= 0,7 -> er schaffts sehr häufig in 15 min
    • <0,7 -> braucht mehr info
  • nein -> braucht mehr info


Ok, nehmen wir an, Du verwendest Deinen "Indikatorwert" anstelle der Dummys. Dann wird der Baum davon nur dann Gebrauch machen, wenn das zu irgendeinem Moment die stärkste Unterscheidungsfähigkeit bietet. Mehrstufigkeit ist per se ist auch im binären Baum erstmal kein Problem, denn er kann ja die Entscheidungen nacheinander treffen. Du wirst aber sehen, dass die Bäume selten das machen, was man sich als Mensch vorher gedacht hat.

Noch ein Wort zur Warnung: Wenn Du eine geeignete Indikatorvariable findest z. B. die relative Häufigkeit der Überschreitungen von 15 Minuten, dann kannst Du spannende Bäume machen, die sich anzuschauen lohnen könnte und über die man vielleicht auch viel über Deine Daten lernen kann. Bei Bäumen könnten 1000 Dummys Probleme machen: Der Baum könnte sehr groß werden, ggf die Speicherressourcen Deines Rechners fressen. Kommt aber auf den Versuch an. Vielleicht interessiert sich der Baum auch gar nicht so sehr für Deine Dummys. Gerade weil der Baum sich aussucht, welche Dummys er verwendet, darfst Du hier auch mit einer sehr hohen Zahl an Dummys reingehen.

Wenn Du beta-Gewichte erstellst, dann denke an folgendes: Mit 1000 Dummys bleiben von deinen 40000 Datensätzen nur noch 40 pro Variable übrig. Das ist nicht schlecht, ist aber auch nicht mehr "riesig". Wenn Du Dich für ein Neuronales Netz entscheiden solltest, dann brauchst Du genug Datensätze pro Neuron. Da kommst Du mit einem Verhältnis von 40000 zu 1025 nicht mehr besonders weit. Will sagen: Dem Regressionsbaum ruhig viele Dummys anbieten, er braucht sie ja nicht zu nehmen, bei Linearer oder Generalisiert linearer Regression kritisch auf die Zahl der Dummys achten und bei Neuronalen Netzen im Zweifel genau nachrechnen und sich auf wenige Dummys beschränken. Über andere Verfahren, etwa SVM, weiß ich zu wenig.

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: 5899
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1392 mal in 1378 Posts

folgende User möchten sich bei bele bedanken:
futureherbert

Nächste

Zurück zu Regressionanalyse

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 3 Gäste