Analiza danych za pomocą Scala
Bardzo ważny jest wybór odpowiedniego narzędzia do analizy danych. Na forach Kaggle, gdzie odbywają się międzynarodowe konkursy Data Science, ludzie często pytają, które narzędzie jest lepsze. R i Python znajdują się na szczycie listy. W tym artykule opowiemy o alternatywnym stosie technologii analizy danych, opartym na Scali.
By Roman Zykov, Założyciel / Data Scientist @ TopDataLab
Bardzo ważny jest wybór odpowiedniego narzędzia do analizy danych. Na Kaggle.com na forach, na których odbywają się międzynarodowe konkursy Data Science, ludzie często pytają, które narzędzie jest lepsze. R i Python znajdują się na szczycie listy. W tym artykule opowiemy o alternatywnym stosie technologii analizy danych, opartym na języku programowania Scala i Iskra rozproszona platforma obliczeniowa.
Jak na to wpadliśmy? W Retail Rocket wykonujemy wiele uczenia maszynowego na bardzo dużych zbiorach danych. Używaliśmy wielu IPython + Pyhs2 (sterownik ula dla Pythona) + Pandas + Sklearn do tworzenia prototypów. Pod koniec lata 2014 podjęliśmy fundamentalną decyzję o przejściu na Spark, ponieważ eksperymenty wykazały, że uzyskamy 3-4 krotną poprawę wydajności na tym samym parku serwerów.
Kolejną zaletą jest to, że możemy użyć jednego języka programowania do modelowania i kodu, który będzie działał na serwerach produkcyjnych. To była dla nas ogromna korzyść, ponieważ wcześniej używaliśmy jednocześnie 4 języków: Hive, Pig, Java, Python. To problem dla małego zespołu inżynierów.
Spark dobrze obsługuje pracę z Pythonem/Scalą/Java za pośrednictwem interfejsów API. Zdecydowaliśmy się na Scala, ponieważ jest to język, w którym napisany jest Spark, co oznacza, że możemy analizować jego kod źródłowy i w razie potrzeby naprawiać błędy. Jest to również maszyna JVM, na której działa Hadoop.
Muszę przyznać, że wybór nie był łatwy, ponieważ nikt w zespole nie znał wtedy Scali.
Nie od dziś wiadomo, że aby nauczyć się dobrze porozumiewać w języku, trzeba się w nim zanurzyć i jak najwięcej go używać. Dlatego porzuciliśmy stos Pythona na rzecz Scali do modelowania i szybkiej analizy danych.
Pierwszym krokiem było znalezienie zamiennika dla notebooków IPython. Opcje były następujące:
- Zeppelin – notatnik podobny do IPythona dla Sparka;
- ISparkuj;
- Notatnik Spark;
- Notatnik IBM Spark IPython.
- Apache Trudy
Dotychczas wybór padł na ISpark, ponieważ jest prosty – to IPython dla Scali/Spark. Stosunkowo łatwo było przykręcić się do grafiki HighCharts i R. I nie mieliśmy problemu z podłączeniem go do klastra Yarn.
Zadanie
Spróbujmy odpowiedzieć na pytanie: czy średnia kwota zakupu (AOV) w Twoim sklepie internetowym zależy od statycznych parametrów klienta, do których należą rozliczenie, typ przeglądarki (mobile/Desktop), system operacyjny i wersja przeglądarki? Możesz to zrobić za pomocą Wzajemne informacje.
W naszych algorytmach rekomendacji i analizach często używamy entropii: klasyczna formuła Shannona, dywergencja Kullbacka-Leiblera, wzajemna informacja. Złożyliśmy nawet artykuł na ten temat. W słynnym podręczniku Murphy'ego o uczeniu maszynowym znajduje się osobna, choć niewielka, sekcja poświęcona tym środkom.
Przeanalizujmy to na prawdziwych danych Retail Rocket. Wcześniej skopiowałem próbkę z naszego klastra na swój komputer jako plik csv.
Dane
Tutaj używamy ISpark i Spark działających w trybie lokalnym, co oznacza, że wszystkie obliczenia są wykonywane lokalnie i są rozłożone na rdzenie procesora. Wszystko jest opisane w komentarzach do kodu. Najważniejsze jest to, że na wyjściu otrzymujemy RDD (Spark data structure), czyli zbiór klas przypadków typu Row, który jest zdefiniowany w kodzie. Umożliwi to odwoływanie się do pól za pomocą „.”, na przykład _.categoryId.
Najważniejsze artykuły z ostatnich 30 dni | |||
---|---|---|---|
|
Źródło: https://www.kdnuggets.com/2021/09/data-analysis-scala.html
- "
- &
- 100
- Korzyść
- Algorytmy
- Wszystkie kategorie
- Amazonka
- wśród
- analiza
- Apache
- Pszczoła
- mobilne i webowe
- artykuł
- Bolt
- przeglądarka
- błędy
- budować
- Pęczek
- zmiana
- Wykresy
- kod
- komentarze
- Konkursy
- computing
- dane
- analiza danych
- nauka danych
- naukowiec danych
- czynienia
- głęboka nauka
- rozwijać
- ZROBIŁ
- przetwarzanie rozproszone
- kierowca
- Inżynieria
- Inżynierowie
- itp
- przewyższać
- doświadczenie
- eksperyment
- eksploracja
- Twarz
- członków Twojej rodziny
- FAST
- Korzyści
- Łąka
- i terminów, a
- Fix
- założyciel
- Framework
- GitHub
- Hadoop
- tutaj
- Ul
- W jaki sposób
- How To
- HTTPS
- olbrzymi
- Informacja
- interaktywne
- na świecie
- IT
- Java
- język
- Języki
- duży
- UCZYĆ SIĘ
- nauka
- Biblioteka
- Linia
- Lista
- miejscowy
- lokalnie
- długo
- uczenie maszynowe
- maszyny
- matematyka
- Metryka
- Microsoft
- modelowanie
- Najbardziej popularne posty
- laptopy
- Online
- sklep internetowy
- koncepcja
- open source
- operacyjny
- system operacyjny
- Opcje
- zamówienie
- Pozostałe
- Papier
- Ludzie
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- perspektywa
- Fizyka
- Platforma
- Popularny
- teczka
- Produkcja
- Programowanie
- projekt
- zakup
- Python
- detaliczny
- run
- bieganie
- Scala
- nauka
- Naukowcy
- zestaw
- osada
- Prosty
- Rozmiar
- umiejętności
- mały
- So
- Tworzenie
- Typ przestrzeni
- sklep
- historie
- składane
- lato
- Utrzymany
- podpory
- Przełącznik
- system
- Technologies
- Testowanie
- Wykres
- czas
- Top
- Jedność
- URI
- us
- wartość
- sieć
- Wikipedia
- okna
- Praca
- X
- lat
- zero