Analyse de données à l'aide de Scala
Il est très important de choisir le bon outil pour l'analyse des données. Sur les forums Kaggle, où se déroulent les compétitions internationales de Data Science, les gens demandent souvent quel outil est le meilleur. R et Python sont en tête de liste. Dans cet article, nous vous parlerons d'une pile alternative de technologies d'analyse de données, basée sur Scala.
By Roman Zykov, Fondateur/Data Scientist @ TopDataLab
Il est très important de choisir le bon outil pour l'analyse des données. Sur le Kaggle.com forums, où se déroulent des compétitions internationales de Data Science, les gens demandent souvent quel outil est le meilleur. R et Python sont en tête de liste. Dans cet article, nous vous parlerons d'une pile alternative de technologies d'analyse de données, basée sur le langage de programmation Scala et Spark plate-forme informatique distribuée.
Comment en sommes-nous arrivés là ? Chez Retail Rocket, nous faisons beaucoup d'apprentissage automatique sur de très grands ensembles de données. Nous avions l'habitude d'utiliser un tas d'IPython + Pyhs2 (pilote ruche pour Python) + Pandas + Sklearn pour développer des prototypes. À la fin de l'été 2014, nous avons pris la décision fondamentale de passer à Spark, car les expériences ont montré que nous obtiendrons 3 à 4 fois plus de performances sur le même parc de serveurs.
Un autre avantage est que nous pouvons utiliser un langage de programmation pour la modélisation et le code qui s'exécutera sur les serveurs de production. C'était un énorme avantage pour nous, car avant nous utilisions 4 langages simultanément : Hive, Pig, Java, Python. C'est un problème pour une petite équipe d'ingénieurs.
Spark prend également en charge le travail avec Python/Scala/Java via des API. Nous avons décidé de choisir Scala car c'est le langage dans lequel Spark est écrit, ce qui signifie que nous pouvons analyser son code source et corriger les bugs si nécessaire. C'est aussi la JVM sur laquelle s'exécute Hadoop.
Je dois dire que le choix n'a pas été facile, puisque personne dans l'équipe ne connaissait Scala à l'époque.
C'est un fait bien connu que pour apprendre à bien communiquer dans une langue, vous devez vous immerger dans la langue et l'utiliser autant que possible. Nous avons donc abandonné la pile Python au profit de Scala pour la modélisation et l'analyse rapide des données.
La première étape consistait à trouver un remplaçant pour les notebooks IPython. Les options étaient les suivantes :
- Zeppelin – un bloc-notes de type IPython pour Spark ;
- ISpark;
- Carnet d'étincelles ;
- Bloc-notes Spark IPython d'IBM.
- Apache Torée
Jusqu'à présent, le choix s'est porté sur ISpark parce que c'est simple – c'est IPython pour Scala/Spark. Il a été relativement facile de visser les graphiques HighCharts et R. Et nous n'avons eu aucun problème à le connecter au cluster Yarn.
Tâche
Essayons de répondre à la question : le montant moyen des achats (AOV) dans votre boutique en ligne dépend-il de paramètres client statiques, qui incluent le règlement, le type de navigateur (mobile/Desktop), le système d'exploitation et la version du navigateur ? Vous pouvez le faire avec Information mutuelle.
Nous utilisons beaucoup l'entropie pour nos algorithmes de recommandation et d'analyse : la formule classique de Shannon, la divergence de Kullback-Leibler, l'Information Mutuelle. Nous avons même soumis un article sur ce sujet. Il y a une section séparée, bien que petite, consacrée à ces mesures dans le célèbre manuel de Murphy sur l'apprentissage automatique.
Analysons-le sur des données réelles de Retail Rocket. Auparavant, j'ai copié l'échantillon de notre cluster sur mon ordinateur sous forme de fichier csv.
Données
Ici, nous utilisons ISpark et Spark exécutés en mode local, ce qui signifie que tous les calculs sont effectués localement et sont répartis entre les cœurs de processeur. Tout est décrit dans les commentaires du code. La chose la plus importante est qu'en sortie nous obtenons RDD (Spark data structure), qui est une collection de classes de cas de type Row, qui est définie dans le code. Cela vous permettra de vous référer aux champs via ".", par exemple _.categoryId.
Source : https://www.kdnuggets.com/2021/09/data-analysis-scala.html
- "
- &
- 100
- Avantage
- algorithmes
- Tous
- Amazon
- parmi
- selon une analyse de l’Université de Princeton
- Apache
- Apis
- applications
- article
- Volt (Bolt)
- navigateur
- bogues
- construire
- Bouquet
- Change
- Charts
- code
- commentaires
- Compétitions
- informatique
- données
- l'analyse des données
- science des données
- Data Scientist
- traitement
- l'apprentissage en profondeur
- développer
- DID
- informatique distribuée
- driver
- ENGINEERING
- Les ingénieurs
- etc
- Excel
- Découvrez
- expérience
- exploration
- Visage
- famille
- RAPIDE
- Fonctionnalités:
- Des champs
- Prénom
- Fixer
- fondateur
- Framework
- GitHub
- Hadoop
- ici
- Ruche
- Comment
- How To
- HTTPS
- majeur
- d'information
- Interactif
- International
- IT
- Java
- langue
- Langues
- gros
- APPRENTISSAGE
- apprentissage
- Bibliothèque
- Gamme
- Liste
- locales
- localement
- Location
- machine learning
- Les machines
- mathématiques
- Métrique
- Microsoft
- modélisation statistique
- Le Plus Populaire
- ordinateurs portables
- en ligne
- boutique en ligne
- ouvert
- open source
- d'exploitation
- le système d'exploitation
- Options
- de commander
- Autres
- Papier
- Personnes
- performant
- objectifs
- Physique
- plateforme
- Populaire
- portefeuille
- Vidéo
- Programmation
- Projet
- achat
- Python
- détail
- Courir
- pour le running
- Scala
- Sciences
- scientifiques
- set
- règlement
- étapes
- Taille
- compétences
- petit
- So
- Logiciels
- Space
- Boutique
- Stories
- soumis
- été
- Appareils
- Les soutiens
- Interrupteur
- combustion propre
- Les technologies
- Essais
- Le graphique
- fiable
- top
- unité
- URI
- us
- Plus-value
- web
- Wikipédia
- fenêtres
- Activités principales
- X
- années
- zéro