Wie prognostiziert man in Python mit maschinellem Lernen aus einer gegebenen Menge geografischer Daten?

8

Ich habe einige geografische Daten analysiert und versucht, das nächste Ereignis in Bezug auf die Zeit und die geographische Position vorherzusagen / vorherzusagen. Die Daten waren in der folgenden Reihenfolge (mit Beispieldaten)

%Vor%

Erster Schritt war die Einteilung in 100 Zonen, was die Dimensionen und die Komplexität reduziert.

%Vor%

Der nächste Schritt war die Zeitreihenanalyse, dann steckte ich hier für zwei Monate fest, las viel Literatur durch und dachte mir, dass dies meine Möglichkeiten wären * ARIMA (automatische Regressionsmethode) * Maschinelles Lernen

Ich wollte Machine Learning verwenden, um mit Python zu prognostizieren, aber ich konnte nicht wirklich herausfinden, wie genau es Python-Bibliotheken / Open-Source-Code gibt, die spezifisch für den Anwendungsfall sind, auf dem ich aufbauen kann.

EDIT 1: Zur Klarstellung, Daten sind lose von vergangenen Daten abhängig, aber über einen Zeitraum hinweg gleichmäßig verteilt. Der beste Weg, um die Daten zu visualisieren, wäre, sich eine Anzahl von Agenten vorzustellen, die von einem Algorithmus gesteuert werden, der ihnen die Aufgabe zuweist, Ressourcen aus Gittern auszuwählen. Ressourcen sind eine Funktion der sozioökonomischen Struktur der Gesellschaft und stark von der Geographie abhängig. Es ist im Interesse des " Algorithmus ", in der Lage zu sein, Nachfragezone und Zeit vorherzusagen.

ps: Für autoregressive Modelle wie ARIMA hat Python bereits eine Bibliothek Ссылка .

    
Shashank Singh 28.01.2013, 13:00
quelle

1 Antwort

17

Ohne Beispieldaten oder vorhandenen Code kann ich Ihnen nichts konkretes anbieten.

Allerdings ist es oft hilfreich, das Problem in der Nomenklatur des zu untersuchenden Feldes neu zu formulieren. In ML ausgedrückt:

  • Die Funktionen Ihres Problems : Wie Ihre Eingaben angegeben sind. Timestamp ist kontinuierlich, geografische Zone ist diskret.
  • Das Ziel-Label Ihrer Probleme : ein Ereignis, genau, ob ein bestimmtes Ereignis stattgefunden hat oder nicht.
  • Ihr Problem ist überwacht : Zielbezeichnungen für vorherige Daten sind verfügbar. Sie haben frühere Instanzen von (Zeitstempel, geografische Zone) für Ereigniszuordnungen.
  • Das Ziellabel ist diskret . Dies ist also ein Klassifizierungs Problem (im Gegensatz zu einem Regression Problem, bei dem die Ausgabe kontinuierlich ist). .

Ich würde also sagen, dass Sie ein Problem mit der überwachten Klassifizierung haben. Nebenbei bemerkt, möchten Sie vielleicht zuerst eine gewisse Zeit Regularisierung machen; Ich vermute, es werden Muster der Ereignisse abhängig von der Tageszeit, dem Tag des Monats oder des Monats des Jahres sein, und Sie möchten dies als ein zusätzliches Feature darstellen.

Werfen Sie einen Blick auf eine der beliebten Python ML-Bibliotheken, die verfügbar sind, scikit-learn, hier:

Ссылка

und einen kürzlichen Beitrag auf einem Cheatsheet für scikit-learn von einem der Mitwirkenden konsultieren:

Ссылка

Ihre erste gute Wette wäre, Support Vector Machines (SVM) zu versuchen, und falls das fehlschlägt vielleicht gib k Nächste Nachbarn (kNN) auch eine Aufnahme. Beachten Sie, dass die Verwendung eines Ensemble-Klassifikator normalerweise besser ist als die Verwendung nur einer Instanz einer bestimmten SVM / kNN.

Wie genau SVM / kNN mit der Zeit als Feature zu verwenden, kann mehr Forschung erfordern, da AFAIK (und andere werden mich wahrscheinlich korrigieren) SVM / kNN erfordern beschränkte Eingaben mit einem Mittelwert von Null (oder normalisiert, um einen Mittelwert zu haben von Null). Wenn Sie ein zufälliges Googeln durchführen, können Sie möglicherweise bestimmte SVM-Kernel finden, zum Beispiel einen Fourier-Kernel, der ein Zeitreihen-Feature für Sie transformieren kann:

SVM-Kernel für die Zeitreihenanalyse
Ссылка

scikit-learn ermöglicht es Ihnen, einen benutzerdefinierten Kernel für eine SVM anzugeben. Siehe:
Ссылка

Wenn Sie Kenntnisse in ML-Nomenklatur und Beispieldaten in der Hand haben, sollten Sie in Erwägung ziehen, die Frage an Cross Validated zu senden Statistiken Stack Exchange.

EDIT 1: Wenn Sie über dieses Problem nachdenken, müssen Sie besser verstehen, ob Ihre Features und die entsprechenden Labels unabhängig und identisch verteilt sind (IID) oder nicht. Was wäre zum Beispiel, wenn Sie modellieren würden, wie sich Waldbrände im Laufe der Zeit ausbreiten. Es ist klar, dass die Wahrscheinlichkeit, dass eine bestimmte Zone in Brand gerät, davon abhängt, ob die Nachbarn in Flammen stehen oder nicht. AFAIK SVM und kNN nehmen an, dass die Daten IID sind. An diesem Punkt fange ich an, aus meiner Tiefe heraus zu kommen, aber ich denke, dass Sie mindestens einige ML-Methoden eine Chance geben sollten und sehen, was passiert! Denken Sie daran, die Validierung zu bestätigen! (scikit-learn macht das für dich).

    
Asim Ihsan 28.01.2013, 13:27
quelle