Big Data & Machine Learning w Allegro
Big Data:
• clickstream (web/mobile - Kafka)
• backend events (microservices - Hermes)
• dane archiwalne z wielu lat (DWH)
ML w Allegro:
• rankingowanie
• rekomendacje
• atrybucja wielokanałowa
(...)
Stream Analytics with SQL on Apache Flink - Fabian Hueske
Machine learning vs big data od pomysłu do produkcji - Bartłomiej Twardowski Paweł Zawistowski
1. Machine learning vs Big Data - od pomysłu do produkcji
Bartłomiej Twardowski, Paweł Zawistowski
2. Agenda + Trochę o nas
• B.Twardowski
• Big Data dla ML
• od surówki do modelu
• praktyczne rady
• P.Zawistowski
• Ruszamy na produkcję
• Co może pójść źle...
3. Big Data & Machine Learning w Allegro
Big Data:
• clickstream (web/mobile - Kafka)
• backend events (microservices - Hermes)
• dane archiwalne z wielu lat (DWH)
ML w Allegro:
• rankingowanie
• rekomendacje
• atrybucja wielokanałowa
• ocena jakości zdjęć
• ads (za chwilę)
4. Zaczynamy naszą przygodę...
...czyli: jak od surowych danych przejść do modelowania?
Ankieta KDNuggets CRISP-DM
Źródło: http://www.kdnuggets.com/2014/10/crisp-dm-top-methodology-analytics-data-mining-data-science-projects.html
5. Exploratory Data Analysis - lubimy duże dane
Pomocne narzędzia:
- HQL(Hive+Tez), SQL (Exadata)
- Hue (każdy ma dostęp z konta AD)
- R (sparkR+dplyr+ggplot2+shiny)
- Jupyter Notebooks (+Spark backend)
- Kibana (ElasticSearch)
- Tableau (Hive JDBC/Spark)
6. Przygotowanie danych
• Na koniec dnia potrzebujemy zbiory: train,
valid, test
• zadania: czyszczenie danych, agregacja,
próbkowanie, transformacja atrybutów, cechy
- wybór/tworzenie, redukcja wymiarów
• większość naszego czasu! (90%/10%)
• nie raz będziemy wracać i modyfikować ten proces
• GIGO
• if isOnHadoop(data): Spark+DataFrame
else: data.table/dplyr/pandas
7. Big Data? A może odpowiednia próbka?
• Próbkowanie
• odpowiedni dobór reprezentatywnych danych:
• random/stratified
• zachowanie charakterystyki danych (np. sezonowość w e-commerce)
• Niezbalansowane zbiory danych
• Przykłady:
• e-commerce: don’t buy/buy - 99%/1%, medical diagnosis (90% healty, 10% disease)...
• Predykcja większościowej klasy jest łatwa, ale bezużyteczna
• Balansujemy zbiór danych pod nasze potrzeby - np. dla metod pairwaise dla
każdej próbki pozytywnej losujemy z empirycznym rozkładem negatywną
8. Wybór algorytmu ML
- “kwintesencja” całego procesu
- wybieramy model na potrzeby naszego problemu np. predykcja
kliku, prawdopodobieństwo zakupu, ranking ofert
- mnóstwo dostępnych rozwiązań dla różnej klasy problemów
- dostępne implementacje, w większości open-source
- publikacje + reprodukowalne eksperymenty: arXive + Github =>
GitXive
- warto zachowywać wraz z wynikiem wytrenowane parametry i
wybrane hyper-parametry
9. Czego uczymy nasz model?
Predykcji wartości X czy zarabiania pieniędzy w walucie Y?
• odpowiedni dobór f. kosztu przy optymalizacji modelu
• ewaluacja model offline vs online - różne miary
• dobranie miary sukcesu dla swojego przedsięwzięcia
Przykład:
• optym. pod predykcje wartości (RMSE)
• właściwie pokazujemy jako listę posortowaną i jakość rankingu
(recall@N/nDCG@N)
• biznes patrzy na raport: CTR, GMV
10. Kiedy warto rozpraszać ML
- kiedy nie mamy innego
wyjścia
- mamy gotową
implementację naszego
algorytmu
Info na moim Twitter: @btwardow, bez montażu ;-)
12. Ta sama implementacja w Theano - CPU vs GPU
Factorization Machines implemented in Theano, left CPU (16xIntel) vs GPU (AWS g2.2xlarge)
13. Wybór technologi dev/prod - kompromis?
- mądry wybór narzędzi do zadania (dostępne
biblioteki/informacje/społeczność)
- wykorzystanie technologi która umożliwi eksperyment na produkcji
i szybką weryfikacje hipotezy (np. Spark+MLlib, python+Theano,
mxnet)
- mit “data scientist” - od surowych danych po działające rozwiązanie
na produkcji z wysokim SLA
14. Clean Code i TDD w programowaniu alg. ML
- jest trudne!
- przyzwyczajenie do Notebook
- póki nie robimy własnego pakietu (R/Julia/Python) często uważamy
za niepotrzebne
- dużo zależności od danych: czy do repo wrzucać próbki w CSV? a
może pisać specjalny generator?
18. Co może pójść nie tak?
Źródło: http://static.fjcdn.com/pictures/What+could+possibly+go+wrong+comp+1_f5df2e_5306624.jpg
19. CACE - Changing Anything,
Changes Everything
Źródło: D. Sculley et al.: „Machine Learning: The High-Interest Credit Card of Technical Debt”, Google,
20. Problemy z atrybutami wejściowymi
Źródło: https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/CPT_Hardware-InputOutput.svg/1212px-CPT_Hardware-InputOutput.svg.png
24. Problemy z atrybutami wyjściowymi
Źródło: https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/CPT_Hardware-InputOutput.svg/1212px-CPT_Hardware-InputOutput.svg.png
25. Nieznani użytkownicy
• Z przygotowanego modelu korzystają inni - nie zawsze o
tym wiemy.
• Zmiana w modelu może mieć trudne do przewidzenia
skutki.
26. Nieznani użytkownicy - np. kaskady korekt
prognoza
pogody
kalendarz
liczba
(koszyków? osób?)
średnia
wartość
koszyka
obrót
sklepuA Bpromocje
dane
historyczne
A - przewiduje ruch w sklepie
B - przewiduje obrót sklepu
Źródło: http://www.seriouseats.com/images/2016/01/20160115-things-never-to-but-at-supermarket-.jpg