Analiza datelor folosind Scala
Este foarte important să alegeți instrumentul potrivit pentru analiza datelor. Pe forumurile Kaggle, unde au loc competiții internaționale de știință a datelor, oamenii se întreabă adesea care instrument este mai bun. R și Python sunt în fruntea listei. În acest articol vă vom spune despre o stivă alternativă de tehnologii de analiză a datelor, bazate pe Scala.
By Roman Zykov, Fondator/Data Scientist @ TopDataLab
Este foarte important să alegeți instrumentul potrivit pentru analiza datelor. Pe Kaggle.com forumuri, unde se organizează competiții internaționale de știință a datelor, oamenii se întreabă adesea care instrument este mai bun. R și Python sunt în fruntea listei. În acest articol vă vom spune despre o stivă alternativă de tehnologii de analiză a datelor, bazate pe limbajul de programare Scala și Scânteie platformă de calcul distribuită.
Cum am venit cu asta? La Retail Rocket facem multă învățare automată pe seturi de date foarte mari. Obișnuiam să folosim o mulțime de IPython + Pyhs2 (driver de stup pentru Python) + Pandas + Sklearn pentru a dezvolta prototipuri. La sfârșitul verii 2014 am luat o decizie fundamentală de a trece la Spark, deoarece experimentele au arătat că vom obține o îmbunătățire a performanței de 3-4 ori mai mare pe același parc de servere.
Un alt avantaj este că putem folosi un limbaj de programare pentru modelare și cod care va rula pe serverele de producție. Acesta a fost un beneficiu imens pentru noi, deoarece înainte folosim 4 limbi simultan: Hive, Pig, Java, Python. Este o problemă pentru o echipă mică de ingineri.
Spark acceptă bine lucrul cu Python/Scala/Java prin intermediul API-urilor. Am decis să alegem Scala pentru că este limbajul în care este scris Spark, ceea ce înseamnă că îi putem analiza codul sursă și putem remedia erorile dacă este necesar. Este, de asemenea, JVM-ul pe care rulează Hadoop.
Trebuie să spun că alegerea nu a fost ușoară, din moment ce nimeni din echipă nu-l cunoștea pe Scala la acea vreme.
Este un fapt binecunoscut că, pentru a învăța să comunici bine într-o limbă, trebuie să te scufunzi în limbă și să o folosești cât mai mult posibil. Așa că am abandonat stiva Python în favoarea Scala pentru modelare și analiza rapidă a datelor.
Primul pas a fost să găsești un înlocuitor pentru notebook-urile IPython. Opțiunile au fost următoarele:
- Zeppelin – un notebook asemănător IPython pentru Spark;
- ISpark;
- Spark Notebook;
- Notebook-ul IBM Spark IPython.
- Apache Toree
Până acum alegerea a fost ISpark pentru că este simplu – este IPython pentru Scala/Spark. A fost relativ ușor să prindeți grafica HighCharts și R. Și nu am avut nicio problemă să-l conectăm la clusterul Yarn.
Sarcină
Să încercăm să răspundem la întrebarea: valoarea medie de achiziție (AOV) din magazinul dvs. online depinde de parametrii statici ai clientului, care includ decontarea, tipul de browser (mobil/Desktop), sistemul de operare și versiunea browserului? Puteți face asta cu Informații reciproce.
Folosim mult entropia pentru algoritmii și analizele noastre de recomandare: formula clasică Shannon, divergența Kullback-Leibler, Informația reciprocă. Am trimis chiar și o lucrare pe această temă. Există o secțiune separată, deși mică, dedicată acestor măsuri în celebrul manual al lui Murphy despre învățarea automată.
Să-l analizăm pe date reale de retail Rocket. În prealabil am copiat eșantionul din clusterul nostru pe computerul meu ca fișier csv.
Date
Aici folosim ISpark și Spark care rulează în mod local, ceea ce înseamnă că toate calculele sunt efectuate local și sunt distribuite între nucleele procesorului. Totul este descris în comentarii la cod. Cel mai important lucru este că în ieșire obținem RDD (Spark data structure), care este o colecție de clase de caz de tip Row, care este definită în cod. Acest lucru vă va permite să vă referiți la câmpuri prin „.”, de exemplu _.categoryId.
Sursa: https://www.kdnuggets.com/2021/09/data-analysis-scala.html
- "
- &
- 100
- Avantaj
- algoritmi
- TOATE
- Amazon
- printre
- analiză
- Apache
- API-uri
- Apps
- articol
- Bolt
- browser-ul
- gandaci
- construi
- Buchet
- Schimbare
- Grafice
- cod
- comentarii
- Competiţii
- tehnica de calcul
- de date
- analiza datelor
- știința datelor
- om de știință de date
- abuzive
- învățare profundă
- dezvolta
- FĂCUT
- calcul distribuit
- şofer
- Inginerie
- inginerii
- etc
- Excel
- experienţă
- experiment
- explorare
- Față
- familie
- FAST
- DESCRIERE
- Domenii
- First
- Repara
- fondator
- Cadru
- GitHub
- Hadoop
- aici
- Stup
- Cum
- Cum Pentru a
- HTTPS
- mare
- informații
- interactiv
- Internațional
- IT
- Java
- limbă
- Limbă
- mare
- AFLAȚI
- învăţare
- Bibliotecă
- Linie
- Listă
- local
- la nivel local
- Lung
- masina de învățare
- Masini
- matematică
- Metrici
- Microsoft
- modelare
- Cel mai popular
- notebook-uri
- on-line
- magazin online
- deschide
- open-source
- de operare
- sistem de operare
- Opţiuni
- comandă
- Altele
- Hârtie
- oameni
- performanță
- perspectivă
- Fizică
- platformă
- Popular
- portofoliu
- producere
- Programare
- proiect
- cumpărare
- Piton
- cu amănuntul
- Alerga
- funcţionare
- Scala
- Ştiinţă
- oamenii de stiinta
- set
- așezare
- simplu
- Mărimea
- aptitudini
- mic
- So
- Software
- Spaţiu
- stoca
- Istorii
- prezentat
- de vară
- Suportat
- Sprijină
- Intrerupator
- sistem
- Tehnologii
- Testarea
- Graficul
- timp
- top
- unitate
- URI
- us
- valoare
- web
- Wikipedia
- ferestre
- Apartamente
- X
- ani
- zero