Skip to main content

Innenraum-Navigation: Vollständiges Datenverständnis

Dieses Notizbuch enthält EDA und ein Basis-Modell für den Wettbewerb „Indoor Location & Navigation“
Created on March 24|Last edited on February 2
Dieser Artikel wurde aus dem Englischen übersetzt. Hier ist das Original.


📍 Einleitung

Der Indoor Location and Navigation Kaggle Wettbewerb hatte zum Ziel, die Position eines Smartphones in einem Einkaufszentrum zu identifizieren. 200 Gebäude aus China wurden für den Wettbewerb verfügbar gemacht und beinhalteten dabei 30.000 Traces. Ein Trace ist ein Pfad, den ein Smartphone – oder ein Nutzer – durch das Einkaufszentrum nehmen kann.

Daten

Das Ziel: Sage die Position (x- und y-Koordinaten) und die Etage voraus, auf der ein Smartphone sich in einem Moment “t” befinden wird.
Die Daten wurden wie folgt verfügbar gemacht:
  • train & test Verzeichnisse: eine Serie von .txt Dateien, geordnet nach Lage und Etage. Jede Pfad-Datei enthält die Daten eines Traces/Pfads auf einer einzelnen Etage.
  • metadata: eine Serie von Ordnern, geordnet nach Lage und Etage, von denen jeder den Plan für jede Etage jedes Gebäudes enthält. Die Dateiformate waren .png und .json.
Ein Schema der Verzeichnisse kann im Folgenden auch betrachtet werden:

Du findest das vollständige Notizbuch (mit Datensätzen und Code) hier.

🔎 Explorative Datenanalyse

Jetzt, wo wir wissen, wie unsere Daten strukturiert sind, können wir unsere Etagenpläne beginnen zu erforschen, mit anderen Worten die Pfade und verschiedenen Merkmale, die verwendet werden könnten, um den waypoint, einen bestimmten Punkt in den Traces, vorherzusagen.
Die Organisatoren dieses Wettbewerbs haben einen GitHub repo erstellt, mit benutzerdefinierten Funktionen, um den Teams zu helfen, die Merkmale besser zu visualisieren. Daher wäre es eine Schande, nicht von der fruchtbaren Arbeit Gebrauch zu machen, die sie bereits hierin investiert haben.
Ok, wir nehmen uns die EDA Schritt für Schritt vor!

🏢 Lageplan

Zuerst sehen wir uns ein zufälliges Einkaufszentrum an und visualisieren den Plan jeder Etage. Ich habe eine benutzerdefinierte Funktion erstellt, die das site_no einer Lage als Input nimmt und eine plt Darstellung der Etagenpläne in dieser Lage ausgibt.
Im Folgenden siehst du, dass es für dieses Lagebeispiel 8 Etagen gibt:
  • 3 unterirdisch: B1, B2 und B3
  • 5 überirdisch: F1, F2, F3, F4 und F5

Run set
1


🗽 Wie viele Etagen?

Okay, der Lageplan sieht sehr interessant aus, aber wieviele Etagen haben wir wirklich im Durchschnitt in jedem Gebäude?
Diese Information ist extrem wichtig, erstens um die Varianz zwischen den Lagen zu beobachten und zweitens, weil die Variable floor auch eine unserer Ziel-Variablen ist.



Run set
1


🎯 Wegpunkt

Der Wegpunkt ist unsere zweite und dritte Zielvariable. Ein Wegpunkt ist “ein Haltepunkt auf einer Strecke”. Also hat dieser Punkt eine x und eine y-Koordinate und gehört zu einem größeren Pfad.
Lasst uns einen zufälligen Pfad in einem zufälligen Gebäude in unseren Daten visualisieren. In der folgenden Abbildung finden sich:
  • Ein Startpunkt: Das Smartphone startet bei Startpunkt 0, markiert als großer grüner Punkt.
  • Ein Pfad: Das Smartphone bewegt sich an der Gebäudekante der Etage entlang, biegt rechts ab und läuft geradeaus, wobei es sich manchmal vor und zurück bewegt. Es gibt etwa 30 Wegpunkte entlang des Pfads.
  • Ein Endpunkt: Das Smartphone lässt sich am Endpunkt nieder, markiert mit einem großen roten Punkt.
Jeder oben erwähnte Punkt ist ein Wegpunkt und kann einen Standort auf der Karte repräsentieren, den wir vorhersagen müssen.


🧲 Magnetische Stärke

📌Magnetische Stärke: Jeder Punkt in einem Gebäude ist ein Gegenstand einzigartiger magnetischer Kräfte. Etagen, Wände und Objekte um den Raum herum kreieren eine vierdimensionale Karte von einem dreidimensionalen Raum und magnetischer Größenordnung. Die magnetische Größenordnung an irgendeinem Punkt im Raum kann gemessen werden, indem die magnetischen Vektoren x, y und z an diesem Punkt abgelesen werden.
Also erfasst das Telefon Schwankungen im Magnetfeld, während der Nutzer sich bewegt (und während das Telefon rotiert). Im folgenden Beispiel ist das Magnetfeld am Anfang der Laufbahn sehr viel stärker, aber weniger stark auf der linken Seite der Etage.

Hinweis📐: mu tesla (1x104G) – eine abgeleitete Einheit der magnetischen Induktion 📐

📶 WiFi

📌 WiFi-Zugangspunkte: Die Etagen einer Lage können viele WiFi-Zugangspunkte haben. Also variieren die Signale und ihre Stärke stark in verschiedenen Bereichen.
Im folgenden Beispiel kannst du sehen, dass die Route mit diesen Zugangspunkten gefüllt ist.


🔵🦷 IBeacon (Bluetooth)

📌 IBeacon: Beacons arbeiten in Tandems mit mobilen Apps, um bestimmte Nachrichten oder Aktionen auszulösen, die auf Regeln basieren wie Auslösen einer Push-Benachrichtigung, wenn ein Nutzer sich innerhalb einer bestimmten Entfernung eines Beacons befindet.
Es gibt viele Beacons entlang des Beispielpfads, aber dennoch gibt es einen großen Abschnitt, der überhaupt keine iBeacons hat (eingekreist in orange), daher könnte die Genauigkeit in dieser Sektion für dieses bestimmte Beispiel geringer sein.
Hinweis: RSSE ist ein Web-Feed, das einem Nutzer erlauben kann, viele verschiedenen Internet-Seiten in einem einzigen News-Aggregator zu verfolgen.

Hinweis📐: dBm (Dezibel Milliwatt) – eine Maßeinheit absoluter Leistung; je näher die Zahl an 0 geht, desto besser ist deine Signalstärke📐

💻 Light GBM – Basislinienmodell

Es gab viele Ansätze in diesem Wettbewerb, von Techniken maschinellen Lernens wie Light GBM, XGBoost and KMeans Clustering bis zu fortschrittlicheren Methodologien von Deep Learning wie LSTMs.
Bei meinem Basislinienmodell habe ich mich dafür entschieden, einem Code-Tutorial von Jiwei Liu zu folgen, welches Wettbewerbsdaten von Devin Anzelmo für die WiFi-Merkmale nutzte.
Du kannst den kompletten Trainings-Lauf in meinem Notizbuch finden, aber im Folgenden findet sich ein Schema, wie die Trainingsfunktion funktioniert:

Nachdem es durchgelaufen ist, habe ich die folgenden Werte erhalten: (nicht schlecht, was? 😅 )
Hinweis: MPE ist der Mean Position Error (Mittellage-Fehler), welcher die Evaluierungs-Meßgröße der Wahl für diesen Wettbewerb ist. Je kleiner der Fehler, desto besser.

Run set
1

Ich habe außerdem meine Beitrags- und Trainings-Protokolle als Artefakte gespeichert, so dass ich sie hinterher leicht aufrufen und vergleichen kann.

📝 Finalversuche und Endnotizen

Für diesen Wettbewerb habe ich auch den XGBoost-Ansatz getestet. Auch wenn die Geschwindigkeit viel schneller war, als ich das Modell unter Verwendung von RAPIDS implementiert habe, war der Mean Position Error (MPE) viel höher als der LightBGM.
Zukünftige Versuche könnten LSTMs einbinden, oder möglicherweise andere Bibliotheken maschinellen Lernens, oder… vielleicht eine Kombination von ihnen allen?

Du kannst das vollständige Notizbuch (mit Datensätzen und Code) hier finden.


💜 Vielen Dank fürs Lesen und viel Spaß beim Data Sciencin’! 💜
Iterate on AI agents and models faster. Try Weights & Biases today.