Analisi dei dati con Scala
È molto importante scegliere lo strumento giusto per l'analisi dei dati. Nei forum di Kaggle, dove si tengono i concorsi internazionali di Data Science, le persone spesso chiedono quale strumento sia migliore. R e Python sono in cima alla lista. In questo articolo ti parleremo di uno stack alternativo di tecnologie di analisi dei dati, basato su Scala.
By Roman Zykov, Fondatore/Data Scientist @ TopDataLab
È molto importante scegliere lo strumento giusto per l'analisi dei dati. Sul Kaggle.com forum, dove si tengono concorsi internazionali di Data Science, le persone spesso chiedono quale strumento sia migliore. R e Python sono in cima alla lista. In questo articolo ti parleremo di uno stack alternativo di tecnologie di analisi dei dati, basato sul linguaggio di programmazione Scala e Scintilla piattaforma di calcolo distribuito.
Come ci siamo inventati? In Retail Rocket facciamo molto apprendimento automatico su set di dati molto grandi. Usavamo un sacco di IPython + Pyhs2 (driver hive per Python) + Panda + Sklearn per sviluppare prototipi. Alla fine dell'estate 2014 abbiamo preso la decisione fondamentale di passare a Spark, poiché gli esperimenti hanno dimostrato che otterremo 3-4 volte il miglioramento delle prestazioni sullo stesso parco di server.
Un altro vantaggio è che possiamo utilizzare un linguaggio di programmazione per la modellazione e il codice che verrà eseguito sui server di produzione. Questo è stato un enorme vantaggio per noi, poiché prima usavamo 4 linguaggi contemporaneamente: Hive, Pig, Java, Python. È un problema per un piccolo team di ingegneri.
Spark supporta bene l'utilizzo di Python/Scala/Java tramite le API. Abbiamo deciso di scegliere Scala perché è il linguaggio in cui è scritto Spark, il che significa che possiamo analizzare il suo codice sorgente e correggere i bug se necessario. È anche la JVM su cui viene eseguito Hadoop.
Devo dire che la scelta non è stata facile, dal momento che nessuno della squadra all'epoca conosceva Scala.
È risaputo che per imparare a comunicare bene in una lingua, è necessario immergersi nella lingua e usarla il più possibile. Quindi abbiamo abbandonato lo stack Python in favore di Scala per la modellazione e l'analisi rapida dei dati.
Il primo passo è stato trovare un sostituto per i notebook IPython. Le opzioni erano le seguenti:
- Zeppelin – un notebook simile a IPython per Spark;
- ISpark;
- Taccuino Spark;
- Notebook Spark IPython di IBM.
- Apache Toree
Finora la scelta è stata ISpark perché è semplice: è IPython per Scala/Spark. È stato relativamente facile imbullonare la grafica HighCharts e R. E non abbiamo avuto problemi a collegarlo al cluster Yarn.
Task
Proviamo a rispondere alla domanda: l'importo medio di acquisto (AOV) nel tuo negozio online dipende dai parametri statici del cliente, che includono regolamento, tipo di browser (mobile/desktop), sistema operativo e versione del browser? Puoi farlo con Informazioni reciproche.
Usiamo molto l'entropia per i nostri algoritmi di raccomandazione e analisi: la classica formula di Shannon, la divergenza di Kullback-Leibler, Mutual Information. Abbiamo anche presentato un documento su questo argomento. C'è una sezione separata, anche se piccola, dedicata a queste misure nel famoso libro di testo di Murphy sull'apprendimento automatico.
Analizziamolo su dati reali di Retail Rocket. In precedenza ho copiato l'esempio dal nostro cluster al mio computer come file CSV.
Dati
Qui utilizziamo ISpark e Spark in esecuzione in modalità locale, il che significa che tutti i calcoli vengono eseguiti localmente e sono distribuiti tra i core del processore. Tutto è descritto nei commenti al codice. La cosa più importante è che in output otteniamo RDD (Spark data structure), che è una raccolta di classi case di tipo Row, che è definita nel codice. Ciò ti consentirà di fare riferimento ai campi tramite ".", ad esempio _.categoryId.
Le migliori storie degli ultimi 30 giorni | |||
---|---|---|---|
|
Fonte: https://www.kdnuggets.com/2021/09/data-analysis-scala.html
- "
- &
- 100
- Vantaggio
- Algoritmi
- Tutti
- Amazon
- tra
- .
- Apache
- API
- applicazioni
- articolo
- Bolt
- del browser
- bug
- costruire
- Mazzo
- il cambiamento
- Grafici
- codice
- Commenti
- Concorsi
- informatica
- dati
- analisi dei dati
- scienza dei dati
- scienziato di dati
- trattare
- apprendimento profondo
- sviluppare
- DID
- calcolo distribuito
- autista
- Ingegneria
- Ingegneri
- eccetera
- Excel
- esperienza
- esperimento
- esplorazione
- Faccia
- famiglia
- FAST
- Caratteristiche
- campi
- Nome
- Fissare
- fondatore
- Contesto
- GitHub
- Hadoop
- qui
- Alveare
- Come
- Tutorial
- HTTPS
- Enorme
- informazioni
- interattivo
- Internazionale
- IT
- Java
- Lingua
- Le Lingue
- grandi
- IMPARARE
- apprendimento
- Biblioteca
- linea
- Lista
- locale
- a livello locale
- Lunghi
- machine learning
- macchine
- matematica
- Metrica
- Microsoft
- modellismo
- Più popolare
- computer portatili
- online
- negozio on-line
- aprire
- open source
- operativo
- sistema operativo
- Opzioni
- minimo
- Altri
- Carta
- Persone
- performance
- prospettiva
- Fisica
- piattaforma
- Popolare
- lavori
- Produzione
- Programmazione
- progetto
- Acquista
- Python
- nello specifico retail
- Correre
- running
- Scala
- Scienze
- scienziati
- set
- insediamento
- Un'espansione
- Taglia
- abilità
- piccole
- So
- Software
- lo spazio
- Tornare al suo account
- Storie
- presentata
- estate
- supportato
- supporti
- Interruttore
- sistema
- Tecnologie
- Testing
- Il grafo
- tempo
- top
- unità
- URI
- us
- APPREZZIAMO
- sito web
- wikipedia
- finestre
- Lavora
- X
- anni
- zero