Dataanalyse ved hjelp av Scala
Det er svært viktig å velge riktig verktøy for dataanalyse. På Kaggle-forumene, hvor det arrangeres internasjonale Data Science-konkurranser, spør folk ofte hvilket verktøy som er bedre. R og Python er øverst på listen. I denne artikkelen vil vi fortelle deg om en alternativ stabel med dataanalyseteknologier, basert på Scala.
By Roman Zykov, grunnlegger/dataforsker @ TopDataLab
Det er svært viktig å velge riktig verktøy for dataanalyse. På Kaggle.com fora, hvor internasjonale Data Science-konkurranser holdes, spør folk ofte hvilket verktøy som er bedre. R og Python er øverst på listen. I denne artikkelen vil vi fortelle deg om en alternativ stabel med dataanalyseteknologier, basert på Scala programmeringsspråk og Spark distribuert dataplattform.
Hvordan kom vi på det? Hos Retail Rocket driver vi mye med maskinlæring på veldig store datasett. Vi pleide å bruke en haug med IPython + Pyhs2 (hive-driver for Python) + Pandas + Sklearn for å utvikle prototyper. På slutten av sommeren 2014 tok vi en grunnleggende beslutning om å bytte til Spark, ettersom eksperimenter har vist at vi vil få 3-4 ganger ytelsesforbedringen på samme serverpark.
En annen fordel er at vi kan bruke ett programmeringsspråk for modellering og kode som skal kjøres på produksjonsservere. Dette var en stor fordel for oss, siden vi før brukte 4 språk samtidig: Hive, Pig, Java, Python. Det er et problem for et lite team av ingeniører.
Spark støtter godt arbeid med Python/Scala/Java gjennom APIer. Vi bestemte oss for å velge Scala fordi det er språket Spark er skrevet på, noe som betyr at vi kan analysere kildekoden og fikse feil om nødvendig. Det er også JVM som Hadoop kjører på.
Jeg må si at valget ikke var lett, siden ingen i laget kjente Scala på den tiden.
Det er en kjent sak at for å lære å kommunisere godt på et språk, må du fordype deg i språket og bruke det så mye som mulig. Så vi forlot Python-stakken til fordel for Scala for modellering og rask dataanalyse.
Det første trinnet var å finne en erstatning for IPython-notatbøker. Alternativene var som følger:
- Zeppelin – en IPython-lignende notatbok for Spark;
- ISpark;
- Spark Notebook;
- IBMs Spark IPython Notebook.
- Apache Toree
Så langt har valget vært ISpark fordi det er enkelt – det er IPython for Scala/Spark. Det har vært relativt enkelt å feste HighCharts og R-grafikk. Og vi hadde ingen problemer med å koble den til garnklyngen.
Oppgave
La oss prøve å svare på spørsmålet: avhenger gjennomsnittlig kjøpsbeløp (AOV) i nettbutikken din av statiske kundeparametere, som inkluderer oppgjør, nettlesertype (mobil/desktop), operativsystem og nettleserversjon? Du kan gjøre dette med Gjensidig informasjon.
Vi bruker entropi mye for våre anbefalingsalgoritmer og analyse: den klassiske Shannon-formelen, Kullback-Leibler-divergensen, gjensidig informasjon. Vi sendte til og med inn et papir om dette emnet. Det er en egen, om enn liten, del viet til disse tiltakene i Murphys berømte lærebok om maskinlæring.
La oss analysere det på ekte Retail Rocket-data. På forhånd kopierte jeg prøven fra klyngen vår til datamaskinen min som en csv-fil.
Data
Her bruker vi ISpark og Spark som kjører i lokal modus, som betyr at alle beregninger utføres lokalt og fordeles på prosessorkjernene. Alt er beskrevet i kommentarer til koden. Det viktigste er at vi i output får RDD (Spark data structure), som er en samling av case-klasser av typen Row, som er definert i koden. Dette vil tillate deg å referere til felt via “.”, for eksempel _.categoryId.
Kilde: https://www.kdnuggets.com/2021/09/data-analysis-scala.html
- "
- &
- 100
- Fordel
- algoritmer
- Alle
- Amazon
- blant
- analyse
- Apache
- APIer
- apps
- Artikkel
- Bolt
- nett~~POS=TRUNC leseren~~POS=HEADCOMP
- bugs
- bygge
- Bunch
- endring
- Topplisten
- kode
- kommentarer
- Konkurranser
- databehandling
- dato
- dataanalyse
- datavitenskap
- dataforsker
- håndtering
- dyp læring
- utvikle
- gJORDE
- distribuert databehandling
- sjåfør
- Ingeniørarbeid
- Ingeniører
- etc
- Excel
- erfaring
- eksperiment
- leting
- Face
- familie
- FAST
- Egenskaper
- Felt
- Først
- Fix
- Grunnleggeren
- Rammeverk
- GitHub
- Hadoop
- her.
- Hive
- Hvordan
- Hvordan
- HTTPS
- stort
- informasjon
- interaktiv
- internasjonalt
- IT
- Java
- Språk
- språk
- stor
- LÆRE
- læring
- Bibliotek
- linje
- Liste
- lokal
- lokalt
- Lang
- maskinlæring
- maskiner
- matematikk
- Metrics
- Microsoft
- modellering
- Mest populær
- notatbøker
- på nett
- nettbutikk
- åpen
- åpen kildekode
- drift
- operativsystem
- alternativer
- rekkefølge
- andre
- Papir
- porsjoner
- ytelse
- perspektiv
- Fysikk
- plattform
- Populær
- portefølje
- Produksjon
- Programmering
- prosjekt
- Kjøp
- Python
- detaljhandel
- Kjør
- rennende
- Skala
- Vitenskap
- forskere
- sett
- bosetting
- Enkelt
- Størrelse
- ferdigheter
- liten
- So
- Software
- Rom
- oppbevare
- Stories
- innsendt
- sommer
- Støttes
- Støtter
- Bytte om
- system
- Technologies
- Testing
- Grafen
- tid
- topp
- enhet
- URI
- us
- verdi
- web
- Wikipedia
- vinduer
- Arbeid
- X
- år
- null