Technologische Neuigkeiten, Bewertungen und Tipps!

Ljubljana enthüllt seine Geheimnisse – Auf dem Weg zur KI

Hinweis: Der folgende Artikel hilft Ihnen dabei: Ljubljana enthüllt seine Geheimnisse – Auf dem Weg zur KI

Ursprünglich veröffentlicht auf Towards AI, dem weltweit führenden Nachrichten- und Medienunternehmen für KI und Technologie. Wenn Sie ein KI-bezogenes Produkt oder eine KI-bezogene Dienstleistung entwickeln, laden wir Sie ein, darüber nachzudenken, KI-Sponsor zu werden. Bei Towards AI helfen wir bei der Skalierung von KI- und Technologie-Startups. Wir helfen Ihnen dabei, Ihre Technologie der breiten Masse zugänglich zu machen.

Lösung der Mietpreise in Ljubljana mithilfe von KI

Wie die meisten Studierenden standen auch wir während unseres Studiums vor der Herausforderung, die richtige Wohnung zu finden. Nicht nur das Richtige, sondern das Optimale. Die Frage, die sich stellte, war:

„Was ist die bestmögliche Wohnung, die wir angesichts unseres Budgets finden könnten?“

Für alle Ausländer: Sie sehen die Sehenswürdigkeiten des Stadtzentrums der slowenischen Hauptstadt Ljubljana – den Eckpfeiler von Kultur, Politik und Bildung.

Web Scraping mit lxml in Python

Beim Web-Scraping einer Webseite wird diese abgerufen und Daten daraus extrahiert. Nach dem Abruf kann die Extraktion erfolgen. Der Inhalt einer Seite kann analysiert, durchsucht, neu formatiert, die Daten in eine Tabelle kopiert werden usw. Web-Scraper nehmen normalerweise etwas aus einer Seite heraus, um es an anderer Stelle für einen anderen Zweck zu verwenden. Die Daten wurden gecrackt und mit wenig Verarbeitung ist es uns gelungen, eine vollständig kompatible CSV-Datei zu erhalten.

Den vollständigen Code und die Daten finden Sie auf GitHub.

Die Daten, die wir erhalten haben, umfassten lediglich 4000 Proben. Da täglich neue Angebote auf die Website hochgeladen werden, haben wir uns eine Möglichkeit ausgedacht, die Daten jederzeit von der Website zu entfernen. Ein Bash-Skript wurde instanziiert und unser mächtiger kleiner Kerl startet jeden Abend um 3 Uhr morgens das Skript, das die Daten automatisch auswertet und an die CSV-Datei anhängt. Python protokolliert die Anzahl neuer Zeilen in einer TXT-Datei. Raspberry arbeitet unabhängig und ist über SSH erreichbar.

Datenvorverarbeitung

Die Daten werden von Pandas verarbeitet. Es gibt noch viel zu tun, also kommen wir zur Sache. Note dass wir für die Funktion read_csv ein anderes Trennzeichen als das Standardkomma verwenden. Alle Datentypen sind weiterhin als Objekte definiert. Derzeit befinden sich 4400 Datenzeilen im Speicher. Hoffentlich erfasst Raspberry genügend Daten, sodass wir eines Tages in der Lage sein werden, einen viel größeren Datensatz zu verwalten. Lassen Sie uns den Kopf des Datenrahmens anzeigen. Beachten Sie, dass einige Wörter und Sätze auf Slowenisch sind. Lass dich davon nicht stören 🙂

Raumfaktor

An erster Stelle steht der Raumfaktor. Die Daten kommen als eine aus der flachen Beschreibung zusammengefasste Zeichenfolge herein und erfordern einige Bearbeitung. Es gibt 13 verschiedene einzigartige Eingaben. Wir müssen die Werte manuell ändern. Zuletzt wandeln wir die Spalte in eine numerische Spalte um, indem wir pandas’ to_numeric für die Raumfaktorspalte aufrufen. Dies sind nun ganze Zahlen und werden für das Modell von entscheidender Bedeutung sein.

Standort

Wir wussten, dass der offensichtliche Parameter beim Versuch, die Preise in der Stadt vorherzusagen, der Standort war. Was nicht so offensichtlich war, war, wie es dem Modell zugeführt werden sollte, damit die Ausgabe damit korreliert. Nachdem wir einige Zeit damit verbracht haben, Python-Fehler zu beheben, haben wir Folgendes herausgefunden: GeoPy wandelt die angegebenen Zeichenfolgen in Orte um, von denen wir den Breiten- und Längengrad ermitteln und den K-Means-Clustering-Algorithmus anwenden können, um 10 Cluster zu definieren und fügen Sie die K-Means-Beschriftungen entsprechend hinzu, sodass jede Beschriftung dem Clustered-Index entspricht.

Jetzt können wir sowohl den Breiten- als auch den Längengrad sowie die Ortsbeschreibung weglassen, da wir sie nicht mehr benötigen. Die Spalte „Größe“ und „Preis“ war einfach genug. Mithilfe der str-Notation von Pandas haben wir die Einheiten entfernt und die Spalte erneut in eine numerische Spalte umgewandelt. Die letzten beiden Parameter geben das Baujahr und das Jahr der Renovierung an. Sie scheinen viele Nullwerte zu haben. Durch die Verwendung der Fillna mit der „Pad“-Methode für die sortierten Spalten wurde dieses Problem behoben.

Wie sich herausstellte, war es auch sinnvoll, das Bau- und Renovierungsjahr vom aktuellen Jahr abzuziehen [2020]. Dies lässt nun darauf schließen, wie viele Jahre der Bau bzw. die Renovierung des Gebäudes zurückliegt. Zusammen mit der Normalisierung wird dies die Verlustkennzahlen erheblich verbessern.

Aufteilen der Daten

Wir geben 10 % der Daten an, die als Testsatz dienen sollen. Der Datensatz wird von ursprünglich 7 auf 5 Spalten eingegrenzt. Wie Sie später sehen werden, werden 10 % der Trainingsdaten für die Validierung aufgewendet.

Hyperparameter-Tuning

Das Optimieren von Hyperparametern für maschinelles Lernen ist eine mühsame, aber entscheidende Aufgabe, da die Leistung eines Algorithmus stark von der Wahl der Hyperparameter abhängen kann. Durch die manuelle Optimierung wird Zeit für wichtige Schritte der Machine-Learning-Pipeline wie Feature-Engineering und Interpretation der Ergebnisse benötigt. Raster- und Zufallssuche sind unkompliziert, erfordern jedoch lange Laufzeiten, da sie Zeit mit der Bewertung wenig erfolgversprechender Bereiche des Suchraums verschwenden. Die Abstimmung von Hyperparametern erfolgt zunehmend durch automatisierte Methoden, die darauf abzielen, mithilfe einer fundierten Suche in kürzerer Zeit optimale Hyperparameter zu finden, ohne dass über die Ersteinrichtung hinaus manueller Aufwand erforderlich ist.

  • Versuchsaufbau und HParams-Zusammenfassung
  • Adapt TensorFlow wird ausgeführt, um Hyperparameter und Metriken zu protokollieren
  • Starten Sie Läufe und protokollieren Sie sie alle in einem übergeordneten Verzeichnis
  • Visualisieren Sie die Ergebnisse im HParams-Dashboard von TensorBoard

Wir werden 4 Hyperparameter optimieren (die Abbruchrate, den Optimierer zusammen mit der Lernrate und die Anzahl der Einheiten einer bestimmten dichten Schicht). TensorFlow macht es mit den Tensorboard-Plugins ganz einfach. Es gibt viel Code, aber um es einfach zu halten: Im Wesentlichen iterieren wir über die Intervalle unserer 4 Hyperparameter und optimale Hyperparameter werden gespeichert, wenn das Modell die höchste Genauigkeit erreicht. Wir führen außerdem ein Protokoll über alles und der Tensorboard-Rückruf stellt sicher, dass alle Informationen in Tensorboard sichtbar sind. Die Run-Funktion speichert die Metriken und führt ein Protokoll über jede Auswertung der Hyperparameter.

Die größte Kombination von Hyperparametern wird in einem Wörterbuch namens hparams gespeichert und stellt eine absolut gültige Form zur Aufnahme in ein Modell dar. Wenn Sie darüber nachdenken, könnte die Optimierung der Hyperparameter selbst ein konkretes Modell sein. Ich beschloss, das Modell erneut zu erstellen, einschließlich der besten Hparams, aber mit einer wesentlich größeren Anzahl an Epochen. Es bestand keine Notwendigkeit, die Optimierung der Hyperparameter mit der gleichen Anzahl von Epochen zu übertreiben, da wir lediglich Parameter brauchten, die das beste Ergebnis lieferten.

Laut Hyperparameter-Tuning sind die optimalen Parameter 64 Einheiten, 0,3 für die Abbruchrate, stochastischer Gradientenabstieg als Optimierer und eine Lernrate von 0,001.

Regulierung

Wir haben zwei Regularisierungsmethoden verwendet und werfen einen kurzen Blick auf sie.

  • ist eine Regularisierungstechnik, die komplexe Co-Anpassungen an Trainingsdaten durch zufälliges Absenken der Neuronengewichte verhindert. Bei einer Dropout-Rate von 0,2 werden 20 % der Gewichte der Neuronen auf 0 gesetzt. Daher wird nichts unternommen.
  • fügt dem Verlust den „absoluten Größenwert“ des Koeffizienten als Strafterm hinzu. Dadurch werden die weniger wichtigen Merkmale noch weiter verkleinert. Der Huber-Verlust ist eine Verlustfunktion, die in der robusten Regression verwendet wird und weniger empfindlich gegenüber Ausreißern in Daten ist als der quadratische Fehlerverlust. Diese Funktion ist quadratisch für kleine Werte von a und linear für große Werte.Quelle: WikiWie Sie sehen können, nimmt für Ziel = 0 der Verlust zu, wenn der Fehler zunimmt. Allerdings hängt die Geschwindigkeit, mit der es zunimmt, davon ab? Wert. Tatsächlich schreibt Grover (2019) darüber wie folgt: Der Huber-Verlust nähert sich MAE, wenn ? ~ 0 und MSE wann? ~ ∞ (große Zahlen.)

Modellleistung

Wir können mit einer Genauigkeit von 80 % schlussfolgern, dass unsere Datenvorhersagen nicht mehr als 30 % daneben liegen. Das mag viel erscheinen, aber beachten Sie, dass dies unser erstes vorläufiges Modell mit lediglich 4400 Datenpunkten ist. Wir gehen davon aus, dass unsere Ergebnisse in drei Monaten, wenn die Dateneinträge 5000 überschreiten, deutlich besser sein werden.

Abschluss

KI wird weiterhin zum Werkzeug für unterwegs, um praktische Lösungen für alltägliche Probleme zu finden. In unserem Fall haben wir ein effizientes Modell für maschinelles Lernen entwickelt, das die Mietpreise von Wohnungen bis zu einem gewissen Grad vorhersagen konnte, was das Studentenerlebnis noch angenehmer macht.

Was als Hobbyprojekt begann, erwies sich als recht erfolgreiches TensorFlow-Modell zur Vorhersage der Mietpreise der slowenischen Hauptstadt.

Verbinden Sie sich und lesen Sie mehr

Kontaktieren Sie mich gerne über alle sozialen Medien. Ich freue mich über Ihr Feedback, Ihre Anerkennung oder Ihre Kritik. Lass mich wissen, was du erschaffst!!!

LinkedIn, Medium, GitHub, Gmail

Pay2Go-Struktur in der Creator Economy


Ljubljana enthüllt seine Geheimnisse wurde ursprünglich in Towards AI auf Medium veröffentlicht, wo die Leute das Gespräch fortsetzen, indem sie diese Geschichte hervorheben und darauf reagieren.

Veröffentlicht über Towards AI