Vorhersage ML Algorithmus

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
gamma
User
Beiträge: 15
Registriert: Dienstag 30. April 2019, 09:32

Ich habe sklearns Gradient Boosting Classifier benutzt um mit diskreten Daten ein Modell zu erstellen. Ich habe nun allerdings ein Verständnis Problem:
Wie kann ich eine prediction machen, ohne meinen Modell zusätzliche Daten zu geben? Sklearns predict function nimmt als input einen Dataframe X und macht anhand dessen und den Modell eine Vorhersage über die Output Daten Y. Das Problem ist, dass ich die Daten X nicht habe, weil diese in der Zukunft liegen. Wie kann ich trotzdem anhand des Modells eine Aussage über den zukünftigen Verlauf treffen?

Nochmals anhand eine Beispiels erklärt:
Ich sammle Wetterdaten und möchte anhand vergangener Daten eine Wettervorhersage für die kommende Woche machen (also zum Beispiel wie viel Grad es haben wird). Das Modell trainiere ich anhand der vergangenen Daten, wie kann ich nun aber eine Vorhersage für die kommende Woche machen?
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

Hallo gamma

hast Du evtl. einen Code-Schnipsel, der das Problem erklärt?

Zu "Das Problem ist, dass ich die Daten X nicht habe, weil diese in der Zukunft liegen. Wie kann ich trotzdem anhand des Modells eine Aussage über den zukünftigen Verlauf treffen?"

Nun, ich bin selbst noch nicht ganz sattelfest was das alles angeht. Aber so wie ich die ML-Modelle bisher verstehe, ist das Strickmuster oft (immer??) folgende Aufteilung:
X = Einflussgröße
y = von X abhängige Zielgröße

Bei Wetterdaten könnte ich mir das so vorstellen
X = Luftdruck, Luftfeuchte, Monat, ....
y = Temperatur

Die Daten werden in den mir bekannten Modellen dann immer in folgende vier Teile gesplittet
X_test, X_train (Test und Trainingsdaten der Einflussgröße)
y_test, y_train (Test und Trainingsdaten der Zielgröße)

Danach wird das Modell dann mit den Trainingsdaten trainiert. Und mit den Testdaten kann man die Güte des Models bestimmen.

Danach kannst Du für beliebige X-Daten die Y-Daten vorhersagen.

Luftdruck 1.013,25 hPa, Luftfeuchte 40%, Monat März ---> vorhergesagte Y-Temperatur (y) = 20 Grad


Den Gradient Boosting Classifier kenne ich noch nicht bzw. habe ihn bisher noch nicht verwendet.
Im Netz habe ich folgende Info dazu gefunden:
"Gradient Boosting-Klassifikatoren sind bestimmte Arten von Algorithmen, die, wie der Name schon sagt, für Klassifizierungsaufgaben verwendet werden."

Die Frage ist, was Du bei Wetterdaten genau klassifizieren möchtest?


Wenn Du also das Wetter für KW 14 vorhersagen möchtest, bräuchtest Du - nach meinem bisherigen Verständnis - die Wetterdaten von KW 14 der letzten 100 Jahre.
Bzw. man müsste ggf. noch die aktuelle Wettersituation einfließen lassen.
Wie das modelltechnisch aussieht, weiß ich leider nicht. Ggf. eine Kombination aus zwei Modellen?

Ich würde das Problem gern verstehen - auch um selbst was dabei zu lernen.

viele Grüße
gamma
User
Beiträge: 15
Registriert: Dienstag 30. April 2019, 09:32

Danke einmal für das Interesse, vielleicht fällt uns ja gemeinsam etwas ein :)
Machine learning Algorithmen habe ich zwar prinzipiell verstanden, das ganze allerdings auf mein Problem umzumünzen fällt mir schwer.

Du hast mein Problem schon richtig verstanden: Ich nehme Wetterdaten der letzen 100 Jahre, deklariere die Temperatur als meine Zielgröße und trainiere mein Modell. Die Problematik liegt einzig und allein in der Vorhersage. Möchte ich zum Beispiel die Temperatur der KW 14 vorhersagen, würde ich meinen Modell die aktuellen Wetterdaten der KW 14 geben und ich würde die Temperatur als "statistische Vorhersage" erhalten.

Das Problem an der Sache ist jedoch, dass ich die Temperatur der KW 14 ja eigentlich zusammen mit meinen anderen Wetterdaten habe, ich muss sie also gar nicht vorhersagen. Was ich gerne machen würde ist den Modell die Wetterdaten aus der KW 13 geben und daraus die Temperatur aus KW 14 erhalten.

Denkst du ist das mit ML überhaupt möglich oder wären für solche Probleme rein deskriptive statistische Methoden besser geeignet?
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

Hallo @gamma

zu "Denkst du ist das mit ML überhaupt möglich oder wären für solche Probleme rein deskriptive statistische Methoden besser geeignet?"

Also die ML-Modelle fußen nach meinem Wissensstand auf der Normalverteilung + Gesetz der Großen Zahlen. (Bitte gerne korrigieren, wenn meine Vermutung falsch ist. Ich bin kein diplomierter Mathematiker)

D. h. man braucht große Datenmengen.

Ein Classifier dürfte für das Problem einer Temperatur-Vorhersage auch das falsche Rechenmodell sein. Ein Classifier wäre geeignet, wenn du z.B. "es wird sonnig" oder "es wird wolkig" vorhersagen möchtest.
Da Temperatur aber ein Kontinuum ist, denke ich, dass man andere Rechenmodelle bräuchte. Vermutlich irgendwas wo man auf was Sinus-artiges extrapolieren kann.

Du schreibst, dass du von KW 13 auf KW 14 schließen möchtest.
Ich schätze, dass das dann tatsächlich auf irgendwas extrapoliertes hinausläuft:
Wenn es in KW 13 22 Grad hatte, dann hat es in KW 14 auch 22 Grad plus/minus 3 Grad. Allerdings kann ich mir nicht vorstellen, dass man hier keine besonders guten Vorhersagen bekommt.

Darf ich fragen, ob Du ggf. an die Wetterdaten der letzten 100 Jahre evtl. nicht heran kommst oder warum möchtest du auf einem solch kleinen Datensatz (=Vorgängerwoche) eine Prognose machen?

Mich interessiert es, da ich gern verstehen möchte, was der Kern des Problems ist :)

LG
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

für ein Rechenmodell würde ich nach irgendwas Ausschau halten, was eine sinus-artige Kurve liefert.
tonikae
User
Beiträge: 90
Registriert: Sonntag 23. Februar 2020, 10:27

Ich vermute mal die schwebt so etwas wie eine Bezier-Kurve vor.
Nur damit kannst du keine Vorhersagen machen...auch die Loess-Funktion
(die nächste Stufe)ist dafür ungeeignet
Ein Beispiel(nicht in Python),über den Verlauf der Tageshöchsttemperaturen
der letzten 3 Jahre an meinem Wohnort.Da kann man das sehen.

https://drive.google.com/file/d/19-hRtV ... DYT6x/view

Vielleicht solltest du dir eher mal den Bayes anschauen.

https://de.wikipedia.org/wiki/Bayessche_Statistik

Das ist eine Mischung aus Statistik und Stochastik...also das was in der KI/ML
noch am ehesten anzutreffen ist.
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

@tonikae
Danke, ja sowas in der Richtung würde ich vermuten. Jetzt hast Du mich neugierig gemacht :)
Warum kann man damit keine Vorhersagen machen? (Ggf. stehe ich hier grad etwas auf dem Schlauch...)

Danke auch für den Link zu Bayes - das werde ich mir noch näher anschauen.

Generell finde ich die Thematik "Wettervorhersage" dahingehend interessant, dass es sich im Kern darum handelt, welches Rechenmodell man am besten verwendet.
Wenn man sich die Wetterdaten explorativ anschaut, würde ich vermuten, dass man da was sinus-artiges mit leichter Steigung (=Klimawandel) erhält. So war zumindest mein Gedankengang.

Im Moment bin noch etwas ratlos, wenn es darum geht, ein konkretes Modell auszuwählen. (Vermutlich weil ich schlicht noch nicht alle kenne)
tonikae
User
Beiträge: 90
Registriert: Sonntag 23. Februar 2020, 10:27

Ganz einfach....es werden bei der Bezier-Kurve und der Loess-Funktion nur vorhandene Daten ausgewertet.
Also quasi nur ein Blick in die Vergangenheit geworfen...das ist nun mal das grundsätzliche Wesen der Statistik.
Daten auswerten....

Will man aber zukünftige Entwicklungen erkennen/abschätzen muß man in die Stochastik gehen.
Dort hat man es dann auch fast nur noch mit Wahrscheinlichkeiten zu tun....wie in der KI/ML eben auch.
Weil KI/ML eigentlich sehr viel stärker in der Stochastik als der Statisitk verankert ist.
Eine Einstiegshilfe könnte dann das hier sein:

https://wiki.pathmind.com/
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

@tonikae
verstehe, wieder was gelernt. Danke für Deine Erläuterung.
Mein Gedanke war, dass z. B. lineare Regression ja eine Gerade "errechnet" (richtig?) und insofern hätte ich hier erwartet, dass man hier eben ein Rechenmodell für was sinus-artiges bräuchte.

Und Danke für den Link! Das werde ich mir mal näher anschauen.
Antworten