Datenanalyse mit Scala
Es ist sehr wichtig, das richtige Werkzeug für die Datenanalyse auszuwählen. In den Kaggle-Foren, in denen internationale Data Science-Wettbewerbe ausgetragen werden, wird oft gefragt, welches Tool besser ist. R und Python stehen ganz oben auf der Liste. In diesem Artikel informieren wir Sie über einen alternativen Stack von Datenanalysetechnologien auf Basis von Scala.
By Roman Zykov, Gründer/Datenwissenschaftler @ TopDataLab
Es ist sehr wichtig, das richtige Werkzeug für die Datenanalyse auszuwählen. Auf der Kaggle.com In Foren, in denen internationale Data Science-Wettbewerbe ausgetragen werden, wird oft gefragt, welches Tool besser ist. R und Python stehen ganz oben auf der Liste. In diesem Artikel informieren wir Sie über einen alternativen Stapel von Datenanalysetechnologien, basierend auf der Programmiersprache Scala und Spark verteilte Computerplattform.
Wie sind wir darauf gekommen? Bei Retail Rocket betreiben wir viel maschinelles Lernen mit sehr großen Datensätzen. Früher haben wir eine Reihe von IPython + Pyhs2 (Hive-Treiber für Python) + Pandas + Sklearn verwendet, um Prototypen zu entwickeln. Ende Sommer 2014 haben wir uns grundsätzlich für den Wechsel zu Spark entschieden, da Experimente gezeigt haben, dass wir auf demselben Serverpark die 3-4-fache Leistungssteigerung erzielen werden.
Ein weiterer Vorteil besteht darin, dass wir eine Programmiersprache für die Modellierung und den Code verwenden können, der auf Produktionsservern ausgeführt wird. Dies war ein großer Vorteil für uns, da wir zuvor 4 Sprachen gleichzeitig verwendeten: Hive, Pig, Java, Python. Es ist ein Problem für ein kleines Team von Ingenieuren.
Spark unterstützt die Arbeit mit Python/Scala/Java über APIs gut. Wir haben uns für Scala entschieden, weil es die Sprache ist, in der Spark geschrieben ist, was bedeutet, dass wir den Quellcode analysieren und bei Bedarf Fehler beheben können. Es ist auch die JVM, auf der Hadoop läuft.
Ich muss sagen, dass die Wahl nicht leicht war, da zu diesem Zeitpunkt niemand im Team Scala kannte.
Es ist eine bekannte Tatsache, dass Sie, um in einer Sprache gut kommunizieren zu lernen, in die Sprache eintauchen und sie so oft wie möglich verwenden müssen. Also haben wir den Python-Stack zugunsten von Scala für die Modellierung und schnelle Datenanalyse aufgegeben.
Der erste Schritt bestand darin, einen Ersatz für IPython-Notebooks zu finden. Die Optionen waren wie folgt:
- Zeppelin – ein IPython-ähnliches Notebook für Spark;
- ISpark;
- Funken-Notizbuch;
- IBMs Spark IPython-Notebook.
- Apache TErz
Bisher fiel die Wahl auf ISpark, weil es einfach ist – es ist IPython für Scala/Spark. Es war relativ einfach, HighCharts und R-Grafiken anzuschrauben. Und wir hatten kein Problem damit, es mit dem Yarn-Cluster zu verbinden.
Aufgabe
Versuchen wir, die Frage zu beantworten: Hängt der durchschnittliche Einkaufsbetrag (AOV) in Ihrem Online-Shop von statischen Kundenparametern ab, zu denen Abrechnung, Browsertyp (Mobile/Desktop), Betriebssystem und Browserversion gehören? Das kannst du mit Gegenseitige Information.
Wir verwenden viel Entropie für unsere Empfehlungsalgorithmen und Analysen: die klassische Shannon-Formel, die Kullback-Leibler-Divergenz, Mutual Information. Wir haben sogar ein Paper zu diesem Thema eingereicht. In Murphys berühmtem Lehrbuch über maschinelles Lernen gibt es einen separaten, wenn auch kleinen Abschnitt, der diesen Maßnahmen gewidmet ist.
Lassen Sie uns es anhand von echten Retail Rocket-Daten analysieren. Zuvor habe ich das Sample von unserem Cluster als csv-Datei auf meinen Computer kopiert.
Datum
Hier verwenden wir ISpark und Spark im lokalen Modus, was bedeutet, dass alle Berechnungen lokal durchgeführt und auf die Prozessorkerne verteilt werden. Alles wird in Kommentaren zum Code beschrieben. Das Wichtigste ist, dass wir in der Ausgabe RDD (Spark-Datenstruktur) erhalten, eine Sammlung von Fallklassen vom Typ Row, die im Code definiert ist. Dadurch können Sie mit „.“ auf Felder verweisen, zum Beispiel _.categoryId.
Quelle: https://www.kdnuggets.com/2021/09/data-analysis-scala.html
- "
- &
- 100
- Vorteil
- Algorithmen
- Alle
- Amazon
- unter
- Analyse
- Apache
- APIs
- Apps
- Artikel
- Bolt
- Browser
- Bugs
- bauen
- Haufen
- Übernehmen
- Charts
- Code
- Bemerkungen
- Ligen
- Computing
- technische Daten
- Datenanalyse
- Datenwissenschaft
- Datenwissenschaftler
- Behandlung
- tiefe Lernen
- entwickeln
- DID
- Verteiltes rechnen
- Fahrer
- Entwicklung
- Ingenieure
- etc
- Excel
- ERFAHRUNGEN
- Experiment
- Exploration
- Gesicht
- Familie
- FAST
- Eigenschaften
- Felder
- Vorname
- Fixieren
- Gründer
- Unser Ansatz
- GitHub
- Hadoop
- hier
- Bienenstock
- Ultraschall
- Hilfe
- HTTPS
- riesig
- Information
- interaktive
- International
- IT
- Javac
- Sprache
- Sprachen
- grosse
- LERNEN
- lernen
- Bibliothek
- Line
- Liste
- aus einer regionalen
- örtlich
- Lang
- Maschinelles Lernen
- Maschinen
- Mathematik
- Metrik
- Microsoft
- Modellieren
- Am beliebtesten
- Laptops
- Online
- Online-Shop
- XNUMXh geöffnet
- Open-Source-
- die
- Betriebssystem
- Optionen
- Auftrag
- Anders
- Papier
- Personen
- Leistung
- Perspektive
- Physik
- Plattform
- Beliebt
- Mappe
- Produktion
- Programmierung
- Projekt
- Kauf
- Python
- Einzelhandel
- Führen Sie
- Laufen
- Scala
- Wissenschaft
- Wissenschaftler
- kompensieren
- Siedlung
- Einfacher
- Größe
- Fähigkeiten
- klein
- So
- Software
- Raumfahrt
- speichern
- Geschichten
- eingereicht
- Sommer
- Unterstützte
- Unterstützt
- Schalter
- System
- Technologies
- Testen
- Der Graph
- Zeit
- Top
- Einheit
- URI
- us
- Wert
- Netz
- Wikipedia
- Fenster
- Arbeiten
- X
- Jahr
- Null