Анализ данных с использованием Scala
Очень важно правильно выбрать инструмент для анализа данных. На форумах Kaggle, где проводятся международные соревнования по Data Science, люди часто спрашивают, какой инструмент лучше. R и Python находятся в верхней части списка. В этой статье мы расскажем вам об альтернативном стеке технологий анализа данных, основанном на Scala.
By Роман Зыков, Основатель / специалист по данным @ TopDataLab
Очень важно правильно выбрать инструмент для анализа данных. На Kaggle.com На форумах, где проводятся международные соревнования по Data Science, люди часто спрашивают, какой инструмент лучше. R и Python находятся в верхней части списка. В этой статье мы расскажем вам об альтернативном стеке технологий анализа данных, основанном на языке программирования Scala и Искриться платформа распределенных вычислений.
Как мы это сделали? В Retail Rocket мы много занимаемся машинным обучением на очень больших наборах данных. Раньше мы использовали связку IPython + Pyhs2 (драйвер hive для 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. Варианты были следующие:
- Zeppelin - ноутбук для Spark, похожий на IPython;
- ИСпарк;
- Блокнот Spark;
- Ноутбук IBM Spark IPython.
- Апач Труда
Пока что был выбран ISpark, потому что он прост - это IPython для Scala / Spark. Было относительно легко привязать графику HighCharts и R. И у нас не было проблем с подключением его к кластеру Yarn.
Сложность задачи
Попробуем ответить на вопрос: зависит ли средняя сумма покупки (AOV) в вашем интернет-магазине от статических параметров покупателя, которые включают расчет, тип браузера (мобильный / настольный), операционную систему и версию браузера? Вы можете сделать это с помощью Взаимная информация.
Мы много используем энтропию для наших алгоритмов рекомендаций и анализа: классическая формула Шеннона, расхождение Кульбака-Лейблера, взаимная информация. Мы даже подали статью на эту тему. В знаменитом учебнике Мерфи по машинному обучению есть отдельный, хоть и небольшой, раздел, посвященный этим мерам.
Давайте проанализируем это на реальных данных Retail Rocket. Предварительно я скопировал образец из нашего кластера на свой компьютер в виде файла csv.
Данные
Здесь мы используем ISpark и Spark, работающие в локальном режиме, что означает, что все вычисления выполняются локально и распределяются между ядрами процессора. Все описано в комментариях к коду. Самое главное, что на выходе мы получаем RDD (структура данных Spark), которая представляет собой набор классов case типа Row, который определен в коде. Это позволит вам ссылаться на поля через «.», Например _.categoryId.
Источник: https://www.kdnuggets.com/2021/09/data-analysis-scala.html
- "
- &
- 100
- плюс
- алгоритмы
- Все
- Amazon
- среди
- анализ
- апаш
- API
- Программы
- гайд
- болт
- браузер
- ошибки
- строить
- Группа
- изменение
- Графики
- код
- Комментарии
- Соревнования
- вычисление
- данным
- анализ данных
- наука о данных
- ученый данных
- занимавшийся
- глубокое обучение
- развивать
- DID
- распределенных вычислений
- водитель
- Проект и
- Инженеры
- и т.д
- Excel
- опыт
- эксперимент
- исследование
- Лицо
- семья
- БЫСТРО
- Особенности
- Поля
- First
- фиксированный
- основатель
- Рамки
- GitHub
- Hadoop
- здесь
- Hive
- Как
- How To
- HTTPS
- огромный
- информация
- интерактивный
- Мультиязычность
- IT
- Java
- язык
- Языки
- большой
- УЧИТЬСЯ
- изучение
- Библиотека
- линия
- Список
- локальным
- в местном масштабе
- Длинное
- обучение с помощью машины
- Продукция
- математика
- Метрика
- Microsoft
- моделирование
- Самые популярные
- ноутбуки
- онлайн
- Интернет-магазин
- открытый
- с открытым исходным кодом
- операционный
- операционная система
- Опции
- заказ
- Другое
- бумага & картон
- Люди
- производительность
- перспектива
- Физика
- Платформа
- Популярное
- «портфель»
- Производство
- Программирование
- Проект
- покупки
- Питон
- розничный
- Run
- Бег
- масштаб
- Наука
- Ученые
- набор
- поселок
- просто
- Размер
- навыки
- небольшой
- So
- Software
- Space
- магазин
- Истории
- представленный
- лето
- Поддержанный
- Поддержка
- Коммутатор
- система
- технологии
- Тестирование
- График
- время
- топ
- единство
- URI
- us
- ценностное
- Web
- Википедия.
- окна
- Работа
- X
- лет
- нуль