Аналіз даних за допомогою Scala
Дуже важливо вибрати правильний інструмент для аналізу даних. На форумах Kaggle, де проводяться міжнародні змагання Data Science, люди часто запитують, який інструмент краще. R і Python знаходяться у верхній частині списку. У цій статті ми розповімо вам про альтернативний стек технологій аналізу даних, заснований на Scala.
By Роман Зиков, засновник/дослідник даних @ TopDataLab
Дуже важливо вибрати правильний інструмент для аналізу даних. На Kaggle.com На форумах, де проводяться міжнародні змагання Data Science, люди часто запитують, який інструмент краще. R і Python знаходяться у верхній частині списку. У цій статті ми розповімо вам про альтернативний стек технологій аналізу даних, заснований на мові програмування Scala і Іскритися розподілена обчислювальна платформа.
Як ми це придумали? У Retail Rocket ми виконуємо багато машинного навчання на дуже великих наборах даних. Ми використовували купу IPython + Pyhs2 (драйвер вулика для Python) + Pandas + Sklearn для розробки прототипів. Наприкінці літа 2014 року ми прийняли принципове рішення перейти на Spark, оскільки експерименти показали, що ми отримаємо в 3-4 рази підвищення продуктивності на тому ж парку серверів.
Ще одна перевага полягає в тому, що ми можемо використовувати одну мову програмування для моделювання та коду, який працюватиме на виробничих серверах. Це було величезною перевагою для нас, оскільки раніше ми використовували одночасно 4 мови: Hive, Pig, Java, Python. Це проблема для невеликої команди інженерів.
Spark добре підтримує роботу з Python/Scala/Java через API. Ми вирішили вибрати Scala, оскільки це мова, на якій написаний Spark, а це означає, що ми можемо проаналізувати його вихідний код і виправити помилки, якщо потрібно. Це також JVM, на якій працює Hadoop.
Треба сказати, що вибір був непростим, оскільки Scala на той момент ніхто в команді не знав.
Загальновідомий факт, щоб навчитися добре спілкуватися мовою, потрібно зануритися в мову та якомога більше нею користуватися. Тому ми відмовилися від стеку Python на користь Scala для моделювання та швидкого аналізу даних.
Першим кроком було знайти заміну ноутбукам IPython. Варіанти були наступні:
- цепелін – блокнот, схожий на IPython для Spark;
- ISpark;
- Блокнот Spark;
- Ноутбук IBM Spark IPython.
- Апач Труда
Поки що вибір був ISpark, тому що він простий – це IPython для Scala/Spark. Було відносно легко використовувати графіку HighCharts і R. І ми без проблем підключили його до кластера Yarn.
Завдання
Спробуємо відповісти на запитання: чи залежить середня сума покупки (AOV) у вашому інтернет-магазині від статичних параметрів клієнта, до яких входять розрахунки, тип браузера (мобільний/настільний), операційна система та версія браузера? Ви можете зробити це за допомогою Взаємна інформація.
Ми часто використовуємо ентропію для наших рекомендаційних алгоритмів та аналізу: класичну формулу Шеннона, дивергенцію Кульбака-Лейблера, взаємну інформацію. Ми навіть подали доповідь на цю тему. У відомому підручнику Мерфі з машинного навчання є окремий, хоча й невеликий розділ, присвячений цим заходам.
Давайте проаналізуємо це на реальних даних Retail Rocket. Попередньо я скопіював зразок з нашого кластера на свій комп’ютер у вигляді файлу csv.
дані
Тут ми використовуємо ISpark і Spark, що працює в локальному режимі, що означає, що всі обчислення виконуються локально і розподіляються між ядрами процесора. Все описано в коментарях до коду. Найголовніше, що на виводі ми отримуємо RDD (структуру даних Spark), яка являє собою набір класів випадків типу Row, який визначено в коді. Це дозволить вам звертатися до полів через «.», наприклад _.categoryId.
Джерело: https://www.kdnuggets.com/2021/09/data-analysis-scala.html
- "
- &
- 100
- Перевага
- алгоритми
- ВСІ
- Amazon
- серед
- аналіз
- Apache
- Інтерфейси
- додатка
- стаття
- Болт
- браузер
- помилки
- будувати
- гроно
- зміна
- Чарти
- код
- коментарі
- Змагання
- обчислення
- дані
- аналіз даних
- наука про дані
- вчений даних
- справу
- глибоке навчання
- розвивати
- DID
- розподілені обчислення
- водій
- Машинобудування
- Інженери
- і т.д.
- перевершувати
- досвід
- експеримент
- дослідження
- Особа
- сім'я
- ШВИДКО
- риси
- Поля
- Перший
- виправляти
- засновник
- Рамки
- GitHub
- Hadoop
- тут
- Вулик
- Як
- How To
- HTTPS
- величезний
- інформація
- інтерактивний
- Міжнародне покриття
- IT
- Java
- мова
- мови
- великий
- УЧИТЬСЯ
- вивчення
- бібліотека
- Лінія
- список
- місцевий
- локально
- Довго
- навчання за допомогою машини
- Машинки для перманенту
- математика
- Метрика
- Microsoft
- моделювання
- Найбільш популярний
- ноутбуки
- онлайн
- Інтернет-магазин
- відкрити
- з відкритим вихідним кодом
- операційний
- операційна система
- Опції
- порядок
- інші
- Папір
- Люди
- продуктивність
- перспектива
- Фізика
- платформа
- популярний
- портфель
- Production
- Програмування
- проект
- покупка
- Python
- роздрібна торгівля
- прогін
- біг
- масштаб
- наука
- Вчені
- комплект
- поселення
- простий
- Розмір
- навички
- невеликий
- So
- Софтвер
- Простір
- зберігати
- історії
- представлений
- літо
- Підтриманий
- Опори
- перемикач
- система
- Технології
- Тестування
- Графік
- час
- топ
- єдність
- URI
- us
- значення
- Web
- Вікіпедія
- windows
- Work
- X
- років
- нуль