Gegevensanalyse met behulp van Scala
Het is erg belangrijk om de juiste tool te kiezen voor data-analyse. Op de Kaggle-forums, waar internationale Data Science-wedstrijden worden gehouden, wordt vaak gevraagd welke tool beter is. R en Python staan bovenaan de lijst. In dit artikel vertellen we je over een alternatieve stapel data-analysetechnologieën, gebaseerd op Scala.
By Roman Zykov, Oprichter/Data Scientist @ TopDataLab
Het is erg belangrijk om de juiste tool te kiezen voor data-analyse. Op de Kaggle. com forums, waar internationale Data Science-wedstrijden worden gehouden, vragen mensen vaak welke tool beter is. R en Python staan bovenaan de lijst. In dit artikel zullen we u vertellen over een alternatieve stapel technologieën voor gegevensanalyse, gebaseerd op de programmeertaal Scala en Vonk gedistribueerd computerplatform.
Hoe zijn we erop gekomen? Bij Retail Rocket doen we veel aan machine learning op zeer grote datasets. Vroeger gebruikten we een aantal IPython + Pyhs2 (hive driver voor Python) + Pandas + Sklearn om prototypes te ontwikkelen. Aan het einde van de zomer van 2014 hebben we een fundamentele beslissing genomen om over te stappen op Spark, aangezien experimenten hebben aangetoond dat we 3-4 keer de prestatieverbetering zullen krijgen op hetzelfde park van servers.
Een ander voordeel is dat we één programmeertaal kunnen gebruiken voor modellering en code die op productieservers zal draaien. Dit was een enorm voordeel voor ons, aangezien we voorheen 4 talen tegelijk gebruikten: Hive, Pig, Java, Python. Het is een probleem voor een klein team van ingenieurs.
Spark ondersteunt goed werken met Python/Scala/Java via API's. We hebben voor Scala gekozen omdat dit de taal is waarin Spark is geschreven, wat betekent dat we de broncode kunnen analyseren en indien nodig bugs kunnen oplossen. Het is ook de JVM waarop de Hadoop draait.
Ik moet zeggen dat de keuze niet gemakkelijk was, aangezien niemand in het team Scala op dat moment kende.
Het is een bekend feit dat om goed te leren communiceren in een taal, je jezelf moet onderdompelen in de taal en deze zoveel mogelijk moet gebruiken. Dus hebben we de Python-stack verlaten ten gunste van Scala voor modellering en snelle gegevensanalyse.
De eerste stap was het vinden van een vervanging voor IPython-notebooks. De opties waren als volgt:
- Zeppelin – een IPython-achtige notebook voor Spark;
- ISPark;
- Spark-notitieboekje;
- IBM's Spark IPython-notebook.
- Apache Tof
Tot nu toe is de keuze gevallen op ISpark omdat het eenvoudig is: het is IPython voor Scala/Spark. Het was relatief eenvoudig om HighCharts- en R-graphics te gebruiken. En we hadden geen probleem om het aan te sluiten op het Yarn-cluster.
Taak
Laten we proberen de vraag te beantwoorden: is het gemiddelde aankoopbedrag (AOV) in uw online winkel afhankelijk van statische klantparameters, waaronder afrekening, browsertype (mobiel/desktop), besturingssysteem en browserversie? Dit doe je met Wederzijdse informatie.
We gebruiken veel entropie voor onze aanbevelingsalgoritmen en analyse: de klassieke Shannon-formule, de Kullback-Leibler-divergentie, wederzijdse informatie. We hebben zelfs een paper over dit onderwerp ingediend. Er is een aparte, zij het kleine, sectie gewijd aan deze maatregelen in Murphy's beroemde leerboek over machine learning.
Laten we het analyseren op echte Retail Rocket-gegevens. Van tevoren heb ik het voorbeeld van ons cluster naar mijn computer gekopieerd als een csv-bestand.
Data
Hier gebruiken we ISpark en Spark in de lokale modus, wat betekent dat alle berekeningen lokaal worden uitgevoerd en worden verdeeld over de processorcores. Alles wordt beschreven in opmerkingen bij de code. Het belangrijkste is dat we in de uitvoer RDD (Spark-gegevensstructuur) krijgen, wat een verzameling case-klassen van het type Row is, die in de code is gedefinieerd. Hiermee kunt u naar velden verwijzen via ".", bijvoorbeeld _.categoryId.
Bron: https://www.kdnuggets.com/2021/09/data-analysis-scala.html
- "
- &
- 100
- Voordeel
- algoritmen
- Alles
- Amazone
- onder
- analyse
- apache
- APIs
- apps
- dit artikel
- Bolt
- browser
- bugs
- bouw
- Bos
- verandering
- Grafieken
- code
- opmerkingen
- Wedstrijden
- computergebruik
- gegevens
- gegevensanalyse
- data science
- data scientist
- omgang
- diepgaand leren
- ontwikkelen
- DEED
- distributed computing
- bestuurder
- Engineering
- Ingenieurs
- etc
- Excel
- ervaring
- experiment
- exploratie
- Gezicht
- familie
- SNELLE
- Voordelen
- Velden
- Voornaam*
- Bepalen
- oprichter
- Achtergrond
- GitHub
- Hadoop
- hier
- Bijenkorf
- Hoe
- How To
- HTTPS
- reusachtig
- informatie
- interactieve
- Internationale
- IT
- Java
- taal
- Talen
- Groot
- LEARN
- leren
- Bibliotheek
- Lijn
- Lijst
- lokaal
- plaatselijk
- lang
- machine learning
- Machines
- wiskunde
- Metriek
- Microsoft
- modellering
- Meest populair
- laptops
- online.
- online winkel
- open
- open source
- werkzaam
- besturingssysteem
- Opties
- bestellen
- Overig
- Papier
- Mensen
- prestatie
- perspectief
- Fysica
- platform
- Populair
- portfolio
- Productie
- Programming
- project
- inkomsten
- Python
- <HR>Retail
- lopen
- lopend
- Scala
- Wetenschap
- wetenschappers
- reeks
- nederzetting
- Eenvoudig
- Maat
- vaardigheden
- Klein
- So
- Software
- Tussenruimte
- shop
- Blog
- ingediend
- zomer
- ondersteunde
- steunen
- Stap over voor slechts
- system
- Technologies
- Testen
- De grafiek
- niet de tijd of
- top
- eenheid
- URI
- us
- waarde
- web
- Wikipedia
- ruiten
- Mijn werk
- X
- jaar
- nul