Wie kann man explorative Analysen großer Datensätze in Schach halten?


22

Wenn ich mit einer explorativen Analyse eines großen Datensatzes (viele Stichproben, viele Variablen) beginne, habe ich oft Hunderte abgeleiteter Variablen und Tonnen verschiedener Diagramme und bin nicht in der Lage, den Überblick darüber zu behalten, was wohin geht. Code endet wie Spaghetti, weil es von Anfang an keine Richtung gibt ...

Gibt es empfohlene Methoden, um eine explorative Analyse sauber und ordentlich zu halten? Wie gehen Sie insbesondere mit mehreren Explorationszweigen (einschließlich jenen, die Sackgassen waren) und mit verschiedenen Versionen von Handlungen um?


Als Referenz arbeite ich an geowissenschaftlichen Daten (viele Variablen über die Zeit, manchmal auch über den Raum). Normalerweise arbeite ich mit Python oder R, speichere alles in Git und probiere auch das IPython Notebook aus. Allerdings wäre es gut, wenn Antworten etwas allgemein waren für die Menschen in allen Bereichen, mit anderen Typen von (großen?) Daten und nützlich.


1
Ich würde mir vorstellen, dass viele Ratschläge, die Sie erhalten, auch auf Simulationsstudien anwendbar sind, mit denen konkurrierende Schätz- oder Vorhersagemethoden bewertet werden sollen.
Wahrscheinlichkeitslogik

1
Ja, diese Antwort muss wahrscheinlich auch gelesen werden: stats.stackexchange.com/questions/2910/… . Ich dachte, dass es spezifischere Ratschläge geben könnte, aber ich nehme an, dass dies wahrscheinlich nicht wirklich der Fall ist.
Naught101

Antworten:


10

Ich denke, dass die Tendenz, sich mit explorativen Analysen wie in einem Kaninchenbau zu fühlen, häufig darauf zurückzuführen ist, dass Sie die wesentlichen Fragen, die Sie stellen, aus den Augen verlieren. Ich mache es gelegentlich selbst und muss mich dann daran erinnern, was meine Ziele sind. Versuchen Sie beispielsweise, ein bestimmtes Modell zu erstellen oder die Angemessenheit eines vorhandenen Modells zu bewerten? Suche ich nach Hinweisen auf Datenprobleme (z. B. forensische Datenanalyse)? Oder befasse ich mich zu Beginn der Analyse informell mit bestimmten Fragen (zB gibt es einen Zusammenhang zwischen zwei Variablen?), Bevor ich ein formales Modell erarbeite? In der Summe, wenn Sie sich dabei erwischen, wie Sie Pläne und Tabellen auf den Kopf stellen, aber nicht genau sagen können, was Ihr unmittelbares Ziel ist oder warum dieser Plan / diese Tabelle relevant ist, dann wissen Sie, dass Sie

Ich versuche, die explorative Datenanalyse so zu verstehen, wie ich sie schreibe, sei es beim Schreiben eines Programms oder eines Artikels. In jedem Fall würde ich nicht damit anfangen, zuerst einen Entwurf zu machen. Diese Gliederung kann sich natürlich ändern (und tut dies häufig), aber ohne sie zu schreiben zu beginnen ist ineffizient und führt häufig zu einem schlechten Endprodukt.

In der WRT-Organisation muss jeder Analytiker einen Workflow finden, der für ihn oder sie funktioniert. Dies ist für IMO wichtiger als der Versuch, den Workflow eines anderen streng zu befolgen (obwohl es immer hilfreich ist, Ideen von dem zu erhalten, was andere tun). Wenn Sie programmgesteuert arbeiten (dh Code schreiben, der ausgeführt werden kann, um eine Reihe von Ergebnissen zu generieren / neu zu generieren) und Ihre Arbeit in Git einchecken, sind Sie in dieser Hinsicht bereits vielen Meilen voraus. Ich vermute, dass Sie möglicherweise nur einige Zeit damit verbringen müssen, Ihren Code zu organisieren, und dafür würde ich vorschlagen, Ihrer Gliederung zu folgen. Halten Sie Ihre Analysedateien beispielsweise relativ kurz und zielgerichtet, damit jede eine bestimmte Frage beantwortet (z. B. Diagnosediagramme für ein bestimmtes Regressionsmodell). Organisieren Sie diese in Unterverzeichnissen auf einer oder zwei Ebenen, je nach Größe und Komplexität des Projekts. Auf diese Weise wird das Projekt selbstdokumentierend. Eine Listenansicht der Verzeichnisse, Unterverzeichnisse und Dateien (zusammen mit dem Kommentar oben in jeder Datei) sollte theoretisch Ihre Gliederung wiedergeben.

Natürlich verfügen Sie in einem großen Projekt möglicherweise auch über Code für die Datenbereinigung und -verwaltung, über Code, den Sie zur Schätzung eines bestimmten Modelltyps geschrieben haben, oder über andere Dienstprogramme, die Sie selbst geschrieben haben, und diese passen nicht in die Inhalte Gliederung für Ihre Datenanalyse, so sollten sie in einem anderen Teil Ihres Projektordners organisiert werden.

Update: Nachdem ich das gepostet habe, wurde mir klar, dass ich Ihre Frage zu "Sackgassen" nicht direkt angesprochen habe. Wenn Sie wirklich feststellen, dass eine ganze Reihe von Analysen keinen Wert hat, können Sie, wenn Sie in Git arbeiten, die entsprechenden Dateien jederzeit mit der Meldung "Abandoned this line of analysis" löschen, da dies nicht der Fall war produktiv." Im Gegensatz zu dem, was Sie geschrieben und in den Papierkorb geworfen haben, können Sie auf Wunsch jederzeit zu dem zurückkehren, was Sie später getan haben.

Ich denke jedoch, Sie werden feststellen, dass Sie weniger Sackgassen haben, wenn Sie von einem Entwurf ausgehen, über den Sie nachgedacht haben. Wenn Sie stattdessen Zeit damit verbringen, eine sinnvolle und relevante Frage zu untersuchen - auch wenn dies zu einer Nullfeststellung führt oder nicht so ausfällt, wie Sie es erwartet haben -, möchten Sie wahrscheinlich immer noch aufzeichnen, was Sie getan haben und wie das Ergebnis lautet (at ein Minimum, damit Sie nicht den Fehler machen, dies später zu wiederholen). Verschieben Sie diese einfach in einer Art "Anhang" an den unteren Rand Ihrer Gliederung.


4

Ich weiß nicht, wie hilfreich eine allgemeine Antwort sein wird. Sie fragen, wie Sie etwas Schwieriges tun sollen. Gute Antworten werden wahrscheinlich von der Disziplin abhängen und wahrscheinlich lang und differenziert sein. :)

In Bezug auf die Organisation verwenden Sie bereits git. Als Nächstes sollten Sie ein Makefile verwenden , um die Analyse auszuführen. Das Makefile legt fest, wie unterschiedliche Dateien voneinander abhängen (dh welche Statistiken von welchem ​​Code abgeleitet sind) und wann Sie aufrufenmake , wird alles aktualisiert, was aktualisiert werden muss.

Nun, das hilft beim Erkundungsteil nicht weiter. Für EDA verwende ich (meistens) R in Emacs via ESS. Sie benötigen eine REPL für EDA. Mein Workflow besteht darin, mit Plots, Schätzungen usw. in ESS (in einer exploratory.RTypdatei) zu spielen, zu entscheiden, was ich behalten möchte, und es dann neu zu codieren, damit es stapelweise von make ausgeführt werden kann. Re: git, ich weiß nicht, wie Sie es verwenden, aber ich verwende ein einzelnes Repository für jedes Projekt (normalerweise ein einzelnes Papier) und stelle die Hölle aus meiner Codebasis zurück, um einen sauberen Verlauf zu erhalten. dh ich benutze

$ git merge meandering-branch --squash
$ git add -p somefile
$ git rebase -i master
$ git reset HEAD --hard

viel mehr als damals, als ich mit git angefangen habe, und so mehr als ich einem Anfänger empfehlen würde. Wenn Sie nicht mit all diesen Befehlen und Optionen vertraut sind, möchten Sie vielleicht mehr über git erfahren. Das Wichtigste, was mir geholfen hat, ist, dass ich diszipliniert bin, wenn es darum geht, logisch eindeutige Commits zu erstellen. dh jedes Commit sollte alle Änderungen enthalten, die Sie möglicherweise in Zukunft auf einmal rückgängig machen möchten (und nicht mehr oder weniger).

Soweit ich die Daten tatsächlich untersucht habe, fand ich diese Bücher hilfreich und interessant und sie befassen sich speziell mit großen Datensätzen (zumindest in Teilen):

  • Die Grafiken großer Datensätze , herausgegeben von Unwin, Theus und Hofmann.per springerlink wenn du zugriff hast, sonst sind wohl einzelne kapitel per googeln erreichbar.

  • Das Handbuch zur Datenvisualisierung , herausgegeben von Chen, Härdle und Unwin. auch über springerlink

  • Datenanalyse von Huber (2011) ..


3

Zwei Wörter: Konzeptkarte. Das ist die einzige effektive Möglichkeit, große Datenmengen oder wirklich verworrene Konzepte aufzuteilen und zu erobern.http://en.wikipedia.org/wiki/Concept_maps

Persönlich denke ich auf dem Papier besser als auf dem Bildschirm, daher ist es mir egal, womit ich es zu tun habe, bevor ich überhaupt mit einer grundlegenden Analyse beginne. Für ein professionelleres Diagramm gibt es eine Menge Mind-Mapping-Software http://en.wikipedia.org/wiki/List_of_concept-and_mind-mapping_software

Mind Mapping hat mehrere Vorteile:

  • sagt mir, was ich in Bezug auf "Kern" -Variablen und abgeleitete Variablen (falls vorhanden) habe
  • ermöglicht die Organisation / Formulierung eines Modells basierend auf Theorie / Logik
  • Weist darauf hin, welche Variablen fehlen und / oder hinzugefügt werden könnten, wenn die Beziehungen zwischen den Kernvariablen nicht so aussehen, wie ich es für richtig halte

Bearbeiten :

Hier als Beispiel die Concept Map zur Faktorenanalyse: http://www.metacademy.org/graphs/concepts/factor_analysis#focus=factor_analysis&mode=explore Dies dient nur dazu, das Konzept zu lernen und keine Analyse durchzuführen, sondern die Idee ist das gleiche: im Voraus abzubilden, was sinnvoll ist, und es dann zu tun.

Wenn Sie eine automatisierte / codierte Version davon suchen, glaube ich nicht, dass es eine gibt. Sie können das Modellierungskonzept nicht automatisieren, wenn Sie versuchen, ein System zu verstehen. (Und das ist eine gute Sache, weil es viele Leute von einem Job abhalten würde.)


Hrm ... Das könnte ein ausführlicheres Beispiel gebrauchen. Ich habe Probleme zu erkennen, wie dies helfen würde, mit der Komplexität umzugehen, von der ich spreche. Insbesondere hilft es nicht, sich mit Analysen (abgeleitete Daten, Diagramme usw.) von Untersuchungspfaden zu befassen, die zu Sackgassen führen.
Naught101

Die Concept Map soll nur Pfade untersuchen, die auf der Grundlage der themenspezifischen Theorie irgendwohin führen sollten. Wenn sich herausstellt, dass eine bestimmte Untersuchung nicht erfolgreich war, notieren Sie sie auf der Konzeptkarte, da dies Ihre Leitfaden- / Aufgabenliste ist. Von dort aus sehen Sie sofort, welche abgeleiteten Variablen betroffen sind und welche anderen Untersuchungen Sie durchführen könnten Versuchen.
Rocinante

3

Sie verwenden bereits git: Verwenden Sie die Versionskontrolle, um Ihre Erkundungen zu organisieren. Erstellen Sie für jeden neuen "Zweig" Ihrer Erkundung einen neuen Zweig und trennen Sie die Zweige auch für verschiedene Versionen der Diagramme ab. Mit dieser Methode wird es etwas schwieriger, Ihre Endergebnisse zu kombinieren. Sie können jedoch jederzeit ein nicht verfolgtes Verzeichnis führen, in dem Sie die "Juwelen" Ihrer Analyse ablegen können. Wahrscheinlich möchten Sie Ihre Dateien in diesem Verzeichnis irgendwie kennzeichnen, um anzugeben, von welchem ​​Fork / Commit sie stammen. Diese Methode hat den zusätzlichen Vorteil, dass es wirklich einfach ist, verschiedene Analysen über den diffBefehl gegenüberzustellen.


1

Ich würde mich mit Business Intelligence-Tools befassen, bei denen ähnliche Probleme auftreten. Insbesondere (Data Warehouses, Dimensionsanalyse) Hierarchien und Drilldowns.

Die Grundidee ist, dass Sie versuchen, Ihre zugrunde liegenden Daten als aggregierbare Größen (Zählungen, Einnahmen usw. statt z. B. Prozentsätze) darzustellen. Dann entwerfen Sie Hierarchien, die über die Details aggregieren (z. B. Monate / Wochen / ...). Auf diese Weise erhalten Sie einen einfachen Überblick über alle Ihre Daten und können bestimmte Bereiche vergrößern. Siehe zB http://cubes.databrewery.org/ (Python) oder Excel Power Pivot

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.