Dataanalyse ved hjælp af Scala
Det er meget vigtigt at vælge det rigtige værktøj til dataanalyse. På Kaggle-foraene, hvor der afholdes internationale Data Science-konkurrencer, spørger folk ofte, hvilket værktøj der er bedre. R og Python er øverst på listen. I denne artikel vil vi fortælle dig om en alternativ stak af dataanalyseteknologier, baseret på Scala.
By Roman Zykov, Grundlægger/Data Scientist @ TopDataLab
Det er meget vigtigt at vælge det rigtige værktøj til dataanalyse. På den Kaggle.com fora, hvor der afholdes internationale Data Science-konkurrencer, spørger folk ofte, hvilket værktøj der er bedre. R og Python er øverst på listen. I denne artikel vil vi fortælle dig om en alternativ stak af dataanalyseteknologier, baseret på Scala programmeringssprog og Spark distribueret computerplatform.
Hvordan kom vi frem til det? Hos Retail Rocket laver vi meget maskinlæring på meget store datasæt. Vi plejede at bruge en masse IPython + Pyhs2 (hive-driver til Python) + Pandas + Sklearn til at udvikle prototyper. I slutningen af sommeren 2014 traf vi en grundlæggende beslutning om at skifte til Spark, da eksperimenter har vist, at vi vil få 3-4 gange ydelsesforbedringen på den samme serverpark.
En anden fordel er, at vi kan bruge ét programmeringssprog til modellering og kode, der kører på produktionsservere. Dette var en stor fordel for os, da vi før brugte 4 sprog samtidigt: Hive, Pig, Java, Python. Det er et problem for et lille team af ingeniører.
Spark understøtter godt arbejde med Python/Scala/Java gennem API'er. Vi besluttede at vælge Scala, fordi det er sproget Spark er skrevet på, hvilket betyder, at vi kan analysere dens kildekode og rette fejl, hvis det er nødvendigt. Det er også den JVM, som Hadoop kører på.
Jeg må sige, at valget ikke var let, da ingen i holdet kendte Scala på det tidspunkt.
Det er en kendt sag, at for at lære at kommunikere godt på et sprog, skal du fordybe dig i sproget og bruge det så meget som muligt. Så vi opgav Python-stakken til fordel for Scala til modellering og hurtig dataanalyse.
Det første skridt var at finde en erstatning for IPython-notebooks. Mulighederne var som følger:
- Zeppelin – en IPython-lignende notesbog til Spark;
- ISpark;
- Spark Notesbog;
- IBM's Spark IPython Notebook.
- Apache Tmalm
Indtil videre har valget været ISpark, fordi det er enkelt – det er IPython til Scala/Spark. Det har været relativt nemt at bolte på HighCharts og R-grafik. Og vi havde ingen problemer med at forbinde den til garnklyngen.
Opgaver
Lad os prøve at besvare spørgsmålet: afhænger det gennemsnitlige købsbeløb (AOV) i din netbutik af statiske kundeparametre, som inkluderer afregning, browsertype (mobil/desktop), operativsystem og browserversion? Du kan gøre dette med Gensidig information.
Vi bruger entropi meget til vores anbefalingsalgoritmer og analyse: den klassiske Shannon-formel, Kullback-Leibler divergensen, gensidig information. Vi har endda indsendt et papir om dette emne. Der er en separat, omend lille, sektion dedikeret til disse foranstaltninger i Murphys berømte lærebog om maskinlæring.
Lad os analysere det på rigtige Retail Rocket-data. På forhånd kopierede jeg prøven fra vores klynge til min computer som en csv-fil.
data
Her bruger vi ISpark og Spark, der kører i lokal tilstand, hvilket betyder, at alle beregninger udføres lokalt og fordeles på processorkernerne. Alt er beskrevet i kommentarer til koden. Det vigtigste er, at vi i output får RDD (Spark data structure), som er en samling af sagsklasser af typen Row, som er defineret i koden. Dette vil tillade dig at henvise til felter via “.”, for eksempel _.categoryId.
Kilde: https://www.kdnuggets.com/2021/09/data-analysis-scala.html
- "
- &
- 100
- Fordel
- algoritmer
- Alle
- Amazon
- blandt
- analyse
- Apache
- API'er
- apps
- artikel
- Bolt
- browser
- bugs
- bygge
- Bunch
- lave om
- Diagrammer
- kode
- kommentarer
- Konkurrencer
- computing
- data
- dataanalyse
- datalogi
- dataforsker
- beskæftiger
- dyb læring
- udvikle
- DID
- distribueret computing
- driver
- Engineering
- Ingeniører
- etc.
- Excel
- erfaring
- eksperiment
- udforskning
- Ansigtet
- familie
- FAST
- Funktionalitet
- Fields
- Fornavn
- Fix
- grundlægger
- Framework
- GitHub
- Hadoop
- link.
- Hive
- Hvordan
- How To
- HTTPS
- kæmpe
- oplysninger
- interaktiv
- internationalt
- IT
- Java
- Sprog
- Sprog
- stor
- LÆR
- læring
- Bibliotek
- Line (linje)
- Liste
- lokale
- lokalt
- Lang
- machine learning
- Maskiner
- matematik
- Metrics
- microsoft
- modellering
- Mest Populære
- notesbøger
- online
- online butik
- åbent
- open source
- drift
- operativsystem
- Indstillinger
- ordrer
- Andre
- Papir
- Mennesker
- ydeevne
- perspektiv
- Fysik
- perron
- Populær
- portefølje
- produktion
- Programmering
- projekt
- køb
- Python
- detail
- Kør
- kører
- Scala
- Videnskab
- forskere
- sæt
- afregning
- Simpelt
- Størrelse
- færdigheder
- lille
- So
- Software
- Space
- butik
- Historier
- indsendt
- sommer
- Understøttet
- Understøtter
- Kontakt
- systemet
- Teknologier
- Test
- Grafen
- tid
- top
- enhed
- URI
- us
- værdi
- web
- Wikipedia
- vinduer
- Arbejde
- X
- år
- nul