🙌🏻Анализ главных компонент: 7 методов сокращения размерности в Scikit-Learn
Одна из главных проблем машинного обучения на больших наборах данных – это огромный размер вычислительных векторов. Поэтому способы снижения размерности для уменьшения количества переменных очень актуальны. Таким способом является анализ главных компонентов (PCA, Principal Component Analysis), суть которого в уменьшении размерности набора данных, сохранив при этом как можно больше «изменчивости», т.е. статистической информации.
PCA - это статистический метод преобразования данных большой размерности в данные низкой размерности путем выбора наиболее важных фич, которые собирают максимум информации о датасете. Фичи выбираются на основе отклонений, которые они вызывают в выходных данных. Признак, вызывающий наибольшую дисперсию, - это первый главный компонент. Признак, отвечающий за вторую по величине дисперсию, считается вторым главным компонентом и пр. Важно, что главные компоненты никак не связаны друг с другом. Помимо ускорения ML-алгоритмов, PCA позволяет визуализировать данные, проецируя их в более низкое измерение, чтобы отобразить в двухмерном или трехмерном пространстве.
Популярная Python-библиотека Scikit-learn включает модуль sklearn.decomposition.PCA, который реализован как объект-преобразователь для множества компонентов в методе fit(). Его также можно использовать для новых данных, чтобы проецировать их на эти компоненты. Чтобы воспользоваться методом PCA в библиотеке Scikit-Learn, следует выполнить 2 шага:
1. Инициализировать класс PCA, передав нужное количество компонентов конструктору;
2. вызвать методы подгонки, а затем преобразовать их, передав им набор фичей. Метод преобразования возвращает указанное количество основных компонентов.
Scikit-learn поддерживает несколько вариантов метода PCA:
• Kernel Principal Component Analysis (KPCA) - метод нелинейного уменьшения размерности с использованием ядра. Ядро PCA было разработано, чтобы помочь с классификацией данных, границы решения которых описываются нелинейной функцией. Идея состоит в том, чтобы перейти в пространство более высокого измерения, в котором граница принятия решения становится линейной. В модуле sklearn.decomposition есть разные ядра: линейное (linear), полиномиальное (poly), ядро гауссовой радиальной базисной функции (rbf), сигмоидальное (sigmoid') и пр. По умолчанию используется линейное (linear), что подходит, если данные линейно разделимы.
• Sparse PCA – разреженный вариант PCA, целью которого является извлечение набора разреженных компонентов, которые наилучшим образом восстанавливают данные. Обычно компоненты, извлеченные методом PCA, имеют исключительно плотные выражения, т.е. ненулевые коэффициенты как линейные комбинации исходных переменных. Это затрудняет интерпретацию результатов. На практике реальные главные компоненты можно более естественно представить как разреженные векторы, например, при распознавании лиц они могут отображать части лиц.
• Incremental Principal Component Analysis (IPCA) - инкрементный метод PCA, когда набор данных для декомпозиции слишком велик для размещения в памяти. IPCA строит приближение низкого ранга для входных данных, используя объем памяти, не зависящий от объема входной выборки. Он по-прежнему зависит от входных фичей, но изменение размера пакета позволяет контролировать использование памяти.
• Fast Independent Component Analysis (ICA) – быстрый независимый PCA используется для оценки источников с учетом зашумленных измерений и восстановления источников, поскольку классический PCA не работает с негауссовскими процессами.
Одна из главных проблем машинного обучения на больших наборах данных – это огромный размер вычислительных векторов. Поэтому способы снижения размерности для уменьшения количества переменных очень актуальны. Таким способом является анализ главных компонентов (PCA, Principal Component Analysis), суть которого в уменьшении размерности набора данных, сохранив при этом как можно больше «изменчивости», т.е. статистической информации.
PCA - это статистический метод преобразования данных большой размерности в данные низкой размерности путем выбора наиболее важных фич, которые собирают максимум информации о датасете. Фичи выбираются на основе отклонений, которые они вызывают в выходных данных. Признак, вызывающий наибольшую дисперсию, - это первый главный компонент. Признак, отвечающий за вторую по величине дисперсию, считается вторым главным компонентом и пр. Важно, что главные компоненты никак не связаны друг с другом. Помимо ускорения ML-алгоритмов, PCA позволяет визуализировать данные, проецируя их в более низкое измерение, чтобы отобразить в двухмерном или трехмерном пространстве.
Популярная Python-библиотека Scikit-learn включает модуль sklearn.decomposition.PCA, который реализован как объект-преобразователь для множества компонентов в методе fit(). Его также можно использовать для новых данных, чтобы проецировать их на эти компоненты. Чтобы воспользоваться методом PCA в библиотеке Scikit-Learn, следует выполнить 2 шага:
1. Инициализировать класс PCA, передав нужное количество компонентов конструктору;
2. вызвать методы подгонки, а затем преобразовать их, передав им набор фичей. Метод преобразования возвращает указанное количество основных компонентов.
Scikit-learn поддерживает несколько вариантов метода PCA:
• Kernel Principal Component Analysis (KPCA) - метод нелинейного уменьшения размерности с использованием ядра. Ядро PCA было разработано, чтобы помочь с классификацией данных, границы решения которых описываются нелинейной функцией. Идея состоит в том, чтобы перейти в пространство более высокого измерения, в котором граница принятия решения становится линейной. В модуле sklearn.decomposition есть разные ядра: линейное (linear), полиномиальное (poly), ядро гауссовой радиальной базисной функции (rbf), сигмоидальное (sigmoid') и пр. По умолчанию используется линейное (linear), что подходит, если данные линейно разделимы.
• Sparse PCA – разреженный вариант PCA, целью которого является извлечение набора разреженных компонентов, которые наилучшим образом восстанавливают данные. Обычно компоненты, извлеченные методом PCA, имеют исключительно плотные выражения, т.е. ненулевые коэффициенты как линейные комбинации исходных переменных. Это затрудняет интерпретацию результатов. На практике реальные главные компоненты можно более естественно представить как разреженные векторы, например, при распознавании лиц они могут отображать части лиц.
• Incremental Principal Component Analysis (IPCA) - инкрементный метод PCA, когда набор данных для декомпозиции слишком велик для размещения в памяти. IPCA строит приближение низкого ранга для входных данных, используя объем памяти, не зависящий от объема входной выборки. Он по-прежнему зависит от входных фичей, но изменение размера пакета позволяет контролировать использование памяти.
• Fast Independent Component Analysis (ICA) – быстрый независимый PCA используется для оценки источников с учетом зашумленных измерений и восстановления источников, поскольку классический PCA не работает с негауссовскими процессами.
• Linear Discriminant Analysis (LDA) - линейный дискриминантный анализ, как и классический PCA, является методом линейного преобразования. Но PCA не контролируется, т.е. игнорирует метки классов, а LDA - это контролируемое машинное обучение, которое используется для различения двух классов или групп. LDA подходит для контролируемого уменьшения размерности путем проецирования входных данных в линейное подпространство из направлений, которые максимизируют разделение между классами. Размерность вывода обязательно меньше количества классов. В scikit-learn LDA реализуется с помощью LinearDiscriminantAnalysis, где параметр n_components указывает количество возвращаемых функций.
• Non-negative Matrix Factorization (NMF) - неотрицательная матричная факторизация, альтернативный подход к декомпозиции, который предполагает, что данные и компоненты неотрицательны. NMF - это неконтролируемый метод уменьшения линейной размерности. В NMF исходные данные (матрица признаков) разбиваются на несколько матриц (т.е. разлагаются на множители), представляющие скрытые отношения между наблюдениями и их характеристиками. NMF можно подключить вместо PCA, когда матрица данных не содержит отрицательных значений. NMF не предоставляет объясненную дисперсию, как PCA и другие методы, поэтому лучший способ найти оптимальное значение n_components - это попробовать диапазон значений.
• Truncated Singular Value Decomposition (TSVD) - усеченное разложение по сингулярным значениям похоже на PCA. Этот метод выполняет уменьшение линейной размерности с помощью усеченного сингулярного разложения. В отличие от PCA, этот оценщик не центрирует данные перед вычислением разложения по сингулярным значениям и может эффективно работать с разреженными матрицами.
https://medium.com/@deepak.engg.phd/dimensionality-reduction-with-scikit-learn-ee5d2b69225b
• Non-negative Matrix Factorization (NMF) - неотрицательная матричная факторизация, альтернативный подход к декомпозиции, который предполагает, что данные и компоненты неотрицательны. NMF - это неконтролируемый метод уменьшения линейной размерности. В NMF исходные данные (матрица признаков) разбиваются на несколько матриц (т.е. разлагаются на множители), представляющие скрытые отношения между наблюдениями и их характеристиками. NMF можно подключить вместо PCA, когда матрица данных не содержит отрицательных значений. NMF не предоставляет объясненную дисперсию, как PCA и другие методы, поэтому лучший способ найти оптимальное значение n_components - это попробовать диапазон значений.
• Truncated Singular Value Decomposition (TSVD) - усеченное разложение по сингулярным значениям похоже на PCA. Этот метод выполняет уменьшение линейной размерности с помощью усеченного сингулярного разложения. В отличие от PCA, этот оценщик не центрирует данные перед вычислением разложения по сингулярным значениям и может эффективно работать с разреженными матрицами.
https://medium.com/@deepak.engg.phd/dimensionality-reduction-with-scikit-learn-ee5d2b69225b
Medium
Dimensionality Reduction with Scikit-Learn
As a matter of fact, when compression technology came along, we thought the future in 1996 was about voice. We got it wrong. It is about…
Не сбавляем обороты, новая неделя - новый хакатон.
На очереди Самара ✨
10/116
🐯 Кейс №1: Защита редких животных
Создать модель машинного обучения для распознавания амурских тигров (Сихотэ-Алинский природный заповедник) и дальневосточного леопарда (национальный парк «Земля леопарда»).
Фотоловушки для автоматической съемки видов животных в дикой природе - один из самых эффективных инструментов по сохранению биоразнообразия. Эти устройства позволяют проводить точный мониторинг природных территорий в беспрецедентных масштабах. Однако фотоловушки генерируют слишком большой объем данных, что затрудняет их анализ. Последние разработки в области машинного обучения и компьютерного зрения должны помочь в распознавании не только видов особо охраняемых животных, но и их отдельных особей.
Решение кейса – это прототип системы, способной на основе загружаемых неразмеченных данных определить вид животного (тигр или леопард). Доп. задача (оценивается отдельно) способность модели определить конкретную особь - тигрицу Принцессу.
Кейсодержатель: Минприроды России
👩
На основании представленных дата-сетов, содержащих анонимизированные данные МИС ФГБУ «НМИЦ им. В. А. Алмазова» Минздрава России за 2019 г, необходимо разработать модель машинного обучения, способную прогнозировать риски летального исхода у пациентов, находящихся на стационарном лечении, и выявлять факторы, коррелирующие с целевым признаком.
Своевременное выявление пациентов группы высокого риска позволит вовремя принять необходимые меры по предотвращению необратимых последствий для здоровья пациентов. Кроме того, профилактика осложнений снизит финансовую нагрузку на систему здравоохранения.
Кейсодержатель: Минздрав РФ
Общий призовой фонд: 800 000 рублей
Офлайн площадка: стадион Солидарность Арена
Регистрация открыта до 24 ноября.
Стань частью российского ИИ-сообщества ⚡️⚡️
https://hacks-ai.ru/hakaton/samara
На очереди Самара ✨
10/116
🐯 Кейс №1: Защита редких животных
Создать модель машинного обучения для распознавания амурских тигров (Сихотэ-Алинский природный заповедник) и дальневосточного леопарда (национальный парк «Земля леопарда»).
Фотоловушки для автоматической съемки видов животных в дикой природе - один из самых эффективных инструментов по сохранению биоразнообразия. Эти устройства позволяют проводить точный мониторинг природных территорий в беспрецедентных масштабах. Однако фотоловушки генерируют слишком большой объем данных, что затрудняет их анализ. Последние разработки в области машинного обучения и компьютерного зрения должны помочь в распознавании не только видов особо охраняемых животных, но и их отдельных особей.
Решение кейса – это прототип системы, способной на основе загружаемых неразмеченных данных определить вид животного (тигр или леопард). Доп. задача (оценивается отдельно) способность модели определить конкретную особь - тигрицу Принцессу.
Кейсодержатель: Минприроды России
👩
⚕️🩺 Кейс №2: Спасение жизней с помощью ИИНа основании представленных дата-сетов, содержащих анонимизированные данные МИС ФГБУ «НМИЦ им. В. А. Алмазова» Минздрава России за 2019 г, необходимо разработать модель машинного обучения, способную прогнозировать риски летального исхода у пациентов, находящихся на стационарном лечении, и выявлять факторы, коррелирующие с целевым признаком.
Своевременное выявление пациентов группы высокого риска позволит вовремя принять необходимые меры по предотвращению необратимых последствий для здоровья пациентов. Кроме того, профилактика осложнений снизит финансовую нагрузку на систему здравоохранения.
Кейсодержатель: Минздрав РФ
Общий призовой фонд: 800 000 рублей
Офлайн площадка: стадион Солидарность Арена
Регистрация открыта до 24 ноября.
Стань частью российского ИИ-сообщества ⚡️⚡️
https://hacks-ai.ru/hakaton/samara
🐱Визуализация временных изменений категориальных данных: PyCatFlow vs RankFlow
Иногда Data Scientist’у требуется визуализировать ранжированные списки с течением времени, например, изменения в результатах поиска по запросам в Google или YouTube. Для этого можно использовать RankFlow - полезный инструмент с минималистичным UI и довольно затруднительным процессом подготовки данных. RankFlow позволяет сравнивать ранжированные списки с течением времени. Он требует, чтобы входные табличные данные были организованы так, чтобы каждый столбец представлял ранжированный список. Каждый ранжированный список может быть дополнен весами, добавляя к данным еще один уровень информации. Например, для результатов поиска на YouTube, можно взять количество просмотров, голосов за или соотношение голосов за-против. Каждый столбец в таблице данных представлен в виде стека узлов, упорядоченных в соответствии с рангом в данном наборе данных. Кроме того, идентичные узлы соединены между столбцами. Это выводит на первый план непрерывность и изменения данных, позволяя анализировать паттерны.
Создание визуализации RankFlow на основе этих данных требует изменения набора данных. Для каждой версии API должен быть столбец, содержащий ранжированный список разрешений, которые не упорядочиваются по какой-либо метрике релевантности. Поэтому создание порядка для диаграммы RankFlow - это дизайнерское решение, то есть элементы могут быть отсортированы в алфавитном порядке, по частоте их появления в наборе данных или на основе дополнительных данных.
На практике адаптация данных к требуемой структуре данных RankFlow довольна утомительна. Чтобы ускорить пред- и постобработку диаграмм, можно написать собственный скрипт на Python, который обрабатывает XML-данные в файле SVG, созданном RankFlow. Альтернативой является PyCatFlow - инструмент визуализации, аналогичный RankFlow, который хорошо подходит для временных данных без явной информации о ранжировании, но с потенциальными дополнительными категориальными данными. PyCatFlow - это open-source пакет Python, который можно свободно скачать с Github.
https://medium.com/@bumatic/pycatflow-visualizing-categorical-data-over-time-b344102bcce2
https://github.com/bumatic/PyCatFlow
Иногда Data Scientist’у требуется визуализировать ранжированные списки с течением времени, например, изменения в результатах поиска по запросам в Google или YouTube. Для этого можно использовать RankFlow - полезный инструмент с минималистичным UI и довольно затруднительным процессом подготовки данных. RankFlow позволяет сравнивать ранжированные списки с течением времени. Он требует, чтобы входные табличные данные были организованы так, чтобы каждый столбец представлял ранжированный список. Каждый ранжированный список может быть дополнен весами, добавляя к данным еще один уровень информации. Например, для результатов поиска на YouTube, можно взять количество просмотров, голосов за или соотношение голосов за-против. Каждый столбец в таблице данных представлен в виде стека узлов, упорядоченных в соответствии с рангом в данном наборе данных. Кроме того, идентичные узлы соединены между столбцами. Это выводит на первый план непрерывность и изменения данных, позволяя анализировать паттерны.
Создание визуализации RankFlow на основе этих данных требует изменения набора данных. Для каждой версии API должен быть столбец, содержащий ранжированный список разрешений, которые не упорядочиваются по какой-либо метрике релевантности. Поэтому создание порядка для диаграммы RankFlow - это дизайнерское решение, то есть элементы могут быть отсортированы в алфавитном порядке, по частоте их появления в наборе данных или на основе дополнительных данных.
На практике адаптация данных к требуемой структуре данных RankFlow довольна утомительна. Чтобы ускорить пред- и постобработку диаграмм, можно написать собственный скрипт на Python, который обрабатывает XML-данные в файле SVG, созданном RankFlow. Альтернативой является PyCatFlow - инструмент визуализации, аналогичный RankFlow, который хорошо подходит для временных данных без явной информации о ранжировании, но с потенциальными дополнительными категориальными данными. PyCatFlow - это open-source пакет Python, который можно свободно скачать с Github.
https://medium.com/@bumatic/pycatflow-visualizing-categorical-data-over-time-b344102bcce2
https://github.com/bumatic/PyCatFlow
Medium
PyCatFlow: Visualizing Categorical Data Over Time
PyCatFlow is a Python package for visualizing temporal changes to categorical data. It is inspired by Bernhard Rieder’s visualization tool…
💥Apache Spark на Google Colab? Установка PySpark в DS-облако
Apache Spark – один из самых востребованных вычислительных фреймворков в области Big Data. Благодаря кластерной архитектуре и выполнению заданий MapReduce в памяти он быстро обрабатывает огромные массивы данных. Spark имеет API для популярного в DS языка Python – PySpark и автоматически распараллеливает код, созданный на локальной машине, на все узлы кластера. Но как быть, если у вас нет кластера, а нужно обработать множество данных?
Помогут облачные решения – Google Colab, куда можно установить Spark. Cначала нужно загрузить Java, т.к. фреймворк написан на Scala и работает на JVM:
!apt-get install openjdk-8-jdk-headless -qq > /dev/null
Затем следует загрузить с официального сайта Apache Software Foundation сам фреймворк Spark вместе с Hadoop
!wget -q https://www-us.apache.org/dist/spark/spark-3.1.2/spark-3.1.2-bin-hadoop2.7.tgz
Разархивировать загруженный tgz-файл
!tar xf spark-3.1.2-bin-hadoop2.7.tgz
Далее следует установить библиотеку findspark, чтобы найти Spark в системе и импортировать его.
!pip install -q findspark
Затем следует задать путь к среде Colab, чтобы запустить там PySpark:
import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
os.environ["SPARK_HOME"] = "/content/spark-3.1.2-bin-hadoop2.7"
Чтобы обнаружить Spark в системе, импортируем findspark и используем метод findspark.init(). А метод findspark.find() поможет узнать, где установлен Spark:
import findspark
findspark.init()
findspark.find()
Наконец, можно импортировать сеанс Spark - SparkSession из PySpark.sql и создать точку входа во фреймворк, при необходимости указав имя приложения в конфигурационном параметре appName(“”)
from pyspark.sql import SparkSessionspark= SparkSession \
.builder \
.appName("Spark Application Name") \
.getOrCreate()
https://medium.com/geekculture/how-to-get-your-spark-installation-right-every-time-on-colab-218d57b6091d
Apache Spark – один из самых востребованных вычислительных фреймворков в области Big Data. Благодаря кластерной архитектуре и выполнению заданий MapReduce в памяти он быстро обрабатывает огромные массивы данных. Spark имеет API для популярного в DS языка Python – PySpark и автоматически распараллеливает код, созданный на локальной машине, на все узлы кластера. Но как быть, если у вас нет кластера, а нужно обработать множество данных?
Помогут облачные решения – Google Colab, куда можно установить Spark. Cначала нужно загрузить Java, т.к. фреймворк написан на Scala и работает на JVM:
!apt-get install openjdk-8-jdk-headless -qq > /dev/null
Затем следует загрузить с официального сайта Apache Software Foundation сам фреймворк Spark вместе с Hadoop
!wget -q https://www-us.apache.org/dist/spark/spark-3.1.2/spark-3.1.2-bin-hadoop2.7.tgz
Разархивировать загруженный tgz-файл
!tar xf spark-3.1.2-bin-hadoop2.7.tgz
Далее следует установить библиотеку findspark, чтобы найти Spark в системе и импортировать его.
!pip install -q findspark
Затем следует задать путь к среде Colab, чтобы запустить там PySpark:
import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
os.environ["SPARK_HOME"] = "/content/spark-3.1.2-bin-hadoop2.7"
Чтобы обнаружить Spark в системе, импортируем findspark и используем метод findspark.init(). А метод findspark.find() поможет узнать, где установлен Spark:
import findspark
findspark.init()
findspark.find()
Наконец, можно импортировать сеанс Spark - SparkSession из PySpark.sql и создать точку входа во фреймворк, при необходимости указав имя приложения в конфигурационном параметре appName(“”)
from pyspark.sql import SparkSessionspark= SparkSession \
.builder \
.appName("Spark Application Name") \
.getOrCreate()
https://medium.com/geekculture/how-to-get-your-spark-installation-right-every-time-on-colab-218d57b6091d
Medium
How to (Rightly) Install Pyspark on Google Colab
Let’s get it right regardless of version updates
🥁Дата-инженерия для DS: SynapseML от Microsoft
Корпорация Microsoft адаптировала Apache Spark к задачам дата-инженеров и DS-специалистов, выпустив SynapseML — фреймворк для создания масштабируемых ML-конвейеров. Ранее эта библиотека с открытым исходным кодом называлась MMLSpark. SynapseML на бвзе SparkML добавляет в экосистему Spark инструменты глубокого обучения и анализа данных, включая бесшовную интеграцию ML-конвейеров с Open Neural Network Exchange (ONNX), LightGBM, Cognitive Services, Vowpal Wabbit и OpenCV. Это позволяет создавать мощные и хорошо масштабируемые прогнозные и аналитические модели для различных источников данных.
Примечательно, что SynapseML умеет работать с неразмеченными датасетами благодаря API-методам готовых ИИ-сервисов для быстрого решения типовых ML-задач. SynapseML требует Scala 2.12, Spark 3.0+ и Python 3.6+. Фреймворк позволяет писать код на любом Spark-совместимом языке: Python, Scala, R, Java, .NET и C#. По протоколу HTTP пользователи могут встраивать любую веб-службу в свои модели SparkML, а кластерная природа Spark обеспечит масштабирование ML-проектов.
https://microsoft.github.io/SynapseML/
https://github.com/microsoft/SynapseML
Корпорация Microsoft адаптировала Apache Spark к задачам дата-инженеров и DS-специалистов, выпустив SynapseML — фреймворк для создания масштабируемых ML-конвейеров. Ранее эта библиотека с открытым исходным кодом называлась MMLSpark. SynapseML на бвзе SparkML добавляет в экосистему Spark инструменты глубокого обучения и анализа данных, включая бесшовную интеграцию ML-конвейеров с Open Neural Network Exchange (ONNX), LightGBM, Cognitive Services, Vowpal Wabbit и OpenCV. Это позволяет создавать мощные и хорошо масштабируемые прогнозные и аналитические модели для различных источников данных.
Примечательно, что SynapseML умеет работать с неразмеченными датасетами благодаря API-методам готовых ИИ-сервисов для быстрого решения типовых ML-задач. SynapseML требует Scala 2.12, Spark 3.0+ и Python 3.6+. Фреймворк позволяет писать код на любом Spark-совместимом языке: Python, Scala, R, Java, .NET и C#. По протоколу HTTP пользователи могут встраивать любую веб-службу в свои модели SparkML, а кластерная природа Spark обеспечит масштабирование ML-проектов.
https://microsoft.github.io/SynapseML/
https://github.com/microsoft/SynapseML
microsoft.github.io
SynapseML
Simple and Distributed Machine Learning
🎄❄️☃️Последний месяц 2021 года будет продуктивным! DS-события декабря:
1. 1 декабря – онлайн-митап от VK «Цифровые технологии» для директоров цифровой трансформации нефтегазовой отрасли и всех, кто интересуется цифровизацией https://vk.company/ru/press/events/862/
2. 3-4 декабря – YaTalks – крупная ежегодная конференция от Яндекса для разработчиков. Более 80 экспертов из мировых и российских компаний расскажут о современных тенденциях и лучших практиках Backend- и Frontend-разработки, а также поделятся опытом запуска новых продуктов и мобильных приложений. Для ML предусмотрен отдельный трек. Конференция пройдет онлайн, участие бесплатно по предварительной регистрации: https://yatalks.yandex.ru/
3. 3 декабря - конференция CNews "От чат-ботов к Conversation AI". Москва Radisson Blu Olympiyskiy Hotel https://conversations-ai.com/
4. 10-12 декабря – онлайн-хакатон FintechHack с призовым фондом 900 тысяч рублей. https://codenrock.com/contests/fintechack
5. 11 декабря – онлайн-встреча Big Stream по Backend- и Frontend-разработке, ML и анализу данных. https://simbirsoft.timepad.ru/event/1832864/
6. 14 декабря – DataStart – бесплатная онлайн конференция: Data Science, машинное обучение и нейросети. https://datastart.ru/
7. 16-18 декабря – Fit-M – международный научный форму от НИУ ВШЭ по анализу данных, ML-разработке, технологиям Big Data и компьютерному моделированию. https://fit-m.org/
8. 21 декабря – Очередной митап Ситамобил о применении Data science в городских и геосервисах, логистике и технологиях умных городов.https://citymobil.timepad.ru/events/
1. 1 декабря – онлайн-митап от VK «Цифровые технологии» для директоров цифровой трансформации нефтегазовой отрасли и всех, кто интересуется цифровизацией https://vk.company/ru/press/events/862/
2. 3-4 декабря – YaTalks – крупная ежегодная конференция от Яндекса для разработчиков. Более 80 экспертов из мировых и российских компаний расскажут о современных тенденциях и лучших практиках Backend- и Frontend-разработки, а также поделятся опытом запуска новых продуктов и мобильных приложений. Для ML предусмотрен отдельный трек. Конференция пройдет онлайн, участие бесплатно по предварительной регистрации: https://yatalks.yandex.ru/
3. 3 декабря - конференция CNews "От чат-ботов к Conversation AI". Москва Radisson Blu Olympiyskiy Hotel https://conversations-ai.com/
4. 10-12 декабря – онлайн-хакатон FintechHack с призовым фондом 900 тысяч рублей. https://codenrock.com/contests/fintechack
5. 11 декабря – онлайн-встреча Big Stream по Backend- и Frontend-разработке, ML и анализу данных. https://simbirsoft.timepad.ru/event/1832864/
6. 14 декабря – DataStart – бесплатная онлайн конференция: Data Science, машинное обучение и нейросети. https://datastart.ru/
7. 16-18 декабря – Fit-M – международный научный форму от НИУ ВШЭ по анализу данных, ML-разработке, технологиям Big Data и компьютерному моделированию. https://fit-m.org/
8. 21 декабря – Очередной митап Ситамобил о применении Data science в городских и геосервисах, логистике и технологиях умных городов.https://citymobil.timepad.ru/events/
🙌🏻XLS-R – новый набор ML-моделей от Facebook AI
Разработчики PyTorch из Facebook опубликовали XLS-R – набор крупномасштабных моделей для самостоятельного обучения кросс-языковому представлению речи на базе wav2vec 2.0. Модели предварительно обучены на 128 языках в течение более 400 тысяч часов немаркированной речи. Благодаря тонкой настройке модели показывают высокий уровень точности распознавания речи и отлично подходят для задач перевода, понимания и идентификации языка. Обучающие данные брались из разных источников, включая аудиокниги и записи судебных заседаний. Нейросетевые модели XLS-R содержат более 2-х миллиардов параметров и являются мультиязыковыми. Причем тестирование показало, что обучение сразу нескольким языкам повышает эффективность нейросетей. Скачать XLS-R можно с Github прямо сейчас.
https://github.com/pytorch/fairseq/tree/main/examples/wav2vec/xlsr
Разработчики PyTorch из Facebook опубликовали XLS-R – набор крупномасштабных моделей для самостоятельного обучения кросс-языковому представлению речи на базе wav2vec 2.0. Модели предварительно обучены на 128 языках в течение более 400 тысяч часов немаркированной речи. Благодаря тонкой настройке модели показывают высокий уровень точности распознавания речи и отлично подходят для задач перевода, понимания и идентификации языка. Обучающие данные брались из разных источников, включая аудиокниги и записи судебных заседаний. Нейросетевые модели XLS-R содержат более 2-х миллиардов параметров и являются мультиязыковыми. Причем тестирование показало, что обучение сразу нескольким языкам повышает эффективность нейросетей. Скачать XLS-R можно с Github прямо сейчас.
https://github.com/pytorch/fairseq/tree/main/examples/wav2vec/xlsr
GitHub
fairseq/examples/wav2vec/xlsr at main · facebookresearch/fairseq
Facebook AI Research Sequence-to-Sequence Toolkit written in Python. - facebookresearch/fairseq
👀Visual Genome: крупнейший размеченный датасет
Ученые Стенфордского университета собрали крупнейший аннотированный датасет с более 100 тысяч изображений. Всего в наборе данных почти 5,5 миллионов описаний объектов, включая атрибуты и отношения. Можно даже не скачивать датасет, а получить нужные данные, обратившись к конечной точке RESTful-API методом GET. Несмотря на то, что последние обновления в датасете датированы 2017 годом, это отличный набор данных для обучения моделей в типовых ML-задачах, от распознавания образов до анализа данных с помощью графовых алгоритмов.
https://visualgenome.org/api/v0/api_home.html
Ученые Стенфордского университета собрали крупнейший аннотированный датасет с более 100 тысяч изображений. Всего в наборе данных почти 5,5 миллионов описаний объектов, включая атрибуты и отношения. Можно даже не скачивать датасет, а получить нужные данные, обратившись к конечной точке RESTful-API методом GET. Несмотря на то, что последние обновления в датасете датированы 2017 годом, это отличный набор данных для обучения моделей в типовых ML-задачах, от распознавания образов до анализа данных с помощью графовых алгоритмов.
https://visualgenome.org/api/v0/api_home.html
Как читать Parquet-файлы с pandas
Колоночный формат Apache Parquet широко распространен в области Big Data благодаря хранению данных по столбцам и эффективному сжатию. Он позволяет быстро считать нужные данные из конкретного столбца вместо чтения полной строки, что экономит время. Однако, не каждая прикладная система умеет читать бинарные Parquet-файлы. Часто приходится преобразовывать Parquet-файлы в формат CSV или TXT, прежде чем открыть их, например, в MS Excel или Power BI, которые часто используются в работе DS-специалиста. В этом случае поможет Python-библиотека pandas со встроенной функцией считывания данных read_parquet() из Parquet-файла в датафрейм. Затем датафрейм можно сохранить в CSV-файле с помощью метода to_csv() и открывать его практически в любом офисном редакторе таблиц.
https://medium.com/@i.m.mak/workaround-for-reading-parquet-files-in-power-bi-e2d060abcb80
Колоночный формат Apache Parquet широко распространен в области Big Data благодаря хранению данных по столбцам и эффективному сжатию. Он позволяет быстро считать нужные данные из конкретного столбца вместо чтения полной строки, что экономит время. Однако, не каждая прикладная система умеет читать бинарные Parquet-файлы. Часто приходится преобразовывать Parquet-файлы в формат CSV или TXT, прежде чем открыть их, например, в MS Excel или Power BI, которые часто используются в работе DS-специалиста. В этом случае поможет Python-библиотека pandas со встроенной функцией считывания данных read_parquet() из Parquet-файла в датафрейм. Затем датафрейм можно сохранить в CSV-файле с помощью метода to_csv() и открывать его практически в любом офисном редакторе таблиц.
https://medium.com/@i.m.mak/workaround-for-reading-parquet-files-in-power-bi-e2d060abcb80
Medium
Workaround for reading Parquet files in Power BI
If you’re working with Apache Spark, an ML solution or a reporting project where you need quick reads, you must have definitely come…
Forwarded from Digital Dinner
This media is not supported in your browser
VIEW IN TELEGRAM
Хирург из Лондона провел операцию на банане в Калифорнии, по удаленке в сети 5G.
💦Что такое CDC-системы и зачем они нужны
Чтобы сократить объем данных, считываемых из корпоративного хранилища или озера, но всегда быть в курсе последних изменений, используется CDC-подход: захват измененных данных или Change Data Capture. Есть готовые инструменты CDC: Oracle Golden Gate, Qlik Replicate и HVR, лучше всего подходят для приема данных из часто обновляемых реляционных СУБД. Также инженеры данных создают собственные решения:
• вычисления CDC с использованием меток времени, маркирующих моменты создания, обновления и истечения срока действия в исходных таблицах. Любой процесс, который вставляет, обновляет или удаляет строку, должен также обновить соответствующий столбец отметки времени. Жесткое удаление не допускается. Недостаток этого способа в том, что необходимо переделать структуру базы данных, чтобы добавить столбец timestamp, а также необходимость тесной связи между исходной таблицей и кодом ETL-процесса.
• вычисления CDC с использованием отрицательного запроса, когда между источником и целевым приемником создается связь, и выполняется минус-запрос SQL для расчета журнала изменений. Этот способ скорее антипаттерн, т.к. работает только, если исходная и целевая базы данных относятся к одному типу, а еще он приводит к тому к увеличению перемещаемого объема данных.
Оба метода CDC, написанного вручную, вызывают значительную нагрузку на исходную базу данных. А специальные инструменты CDC сокращают нагрузку на сеть и источник, анализируя логи для расчета изменений. Однако, основным недостатком готовых CDC-решения является их высокая стоимость. Кроме того, администратор исходной СУБД должен предоставлять CDC-средству привилегированный доступ к журналу базы данных, что воспринимается не очень лояльно по соображениям безопасности.
https://towardsdatascience.com/change-data-capture-cdc-for-data-ingestion-ca81ff5934d2
Чтобы сократить объем данных, считываемых из корпоративного хранилища или озера, но всегда быть в курсе последних изменений, используется CDC-подход: захват измененных данных или Change Data Capture. Есть готовые инструменты CDC: Oracle Golden Gate, Qlik Replicate и HVR, лучше всего подходят для приема данных из часто обновляемых реляционных СУБД. Также инженеры данных создают собственные решения:
• вычисления CDC с использованием меток времени, маркирующих моменты создания, обновления и истечения срока действия в исходных таблицах. Любой процесс, который вставляет, обновляет или удаляет строку, должен также обновить соответствующий столбец отметки времени. Жесткое удаление не допускается. Недостаток этого способа в том, что необходимо переделать структуру базы данных, чтобы добавить столбец timestamp, а также необходимость тесной связи между исходной таблицей и кодом ETL-процесса.
• вычисления CDC с использованием отрицательного запроса, когда между источником и целевым приемником создается связь, и выполняется минус-запрос SQL для расчета журнала изменений. Этот способ скорее антипаттерн, т.к. работает только, если исходная и целевая базы данных относятся к одному типу, а еще он приводит к тому к увеличению перемещаемого объема данных.
Оба метода CDC, написанного вручную, вызывают значительную нагрузку на исходную базу данных. А специальные инструменты CDC сокращают нагрузку на сеть и источник, анализируя логи для расчета изменений. Однако, основным недостатком готовых CDC-решения является их высокая стоимость. Кроме того, администратор исходной СУБД должен предоставлять CDC-средству привилегированный доступ к журналу базы данных, что воспринимается не очень лояльно по соображениям безопасности.
https://towardsdatascience.com/change-data-capture-cdc-for-data-ingestion-ca81ff5934d2
Medium
Change Data Capture(CDC) for Data Lake Data Ingestion
Change Data Capture(CDC) tools can accelerate Data Lake adoption by enabling scalable and network efficient near-real-time data replication
💥Комбо Python и SQL в FugueSQL: единый SQL-интерфейс для датафреймов Pandas, Spark и Dask
FugueSQL - это открытая Python-библиотека, которая позволяет комбинировать Python-код с SQL-командами, переключаясь между ними в Jupyter Notebook или Python-скрипте. FugueSQL поддерживает распределенные вычисления и предоставляет унифицированный API для запуска одного и того же кода SQL в Pandas, Dask и Apache Spark.
В отличие от PandaSQL, который имеет единственный сервер SQLite, что приводит к большим накладным расходам при передаче данных между Pandas и базой данных, FugueSQL поддерживает несколько локальных бэкендов: pandas, DuckDB и SQLite.
При использовании pandas-бэкэнда Fugue напрямую переводит SQL в операции pandas, исключая передачу данных. DuckDB имеет превосходную поддержку pandas, поэтому накладные расходы на передачу данных незначительны. И Pandas, и DuckDB являются предпочтительными серверными модулями FugueSQL для локальной обработки данных. Fugue также поддерживает Spark, Dask и cuDF (через blazingSQL) в качестве бэкэндов.
В Fugue код SQL анализируется с помощью ANTLR и сопоставляется с эквивалентными функциями в API Fugue. FugueSQL имеет множество встроенных возможностей и расширяется с помощью Python-кода. По умолчанию он поддерживает наиболее распространенные на практике функции: заполнение значений NULL, удаление значений NULL, переименование столбцов, изменение схемы и пр. Fugue также добавляет некоторые улучшения в стандартный SQL, чтобы изящно обрабатывать сквозные рабочие процессы данных. Например, создание промежуточных таблиц через присвоение переменных.
В Pandas %% fsql принимает NativeExecutionEngine в качестве параметра по умолчанию. В Dask работа FugueSQL чуть медленнее нативного движка, но более полна с точки зрения реализованных ключевых слов SQL. FugueSQL также работает на Spark, сопоставляя операции %%fsql с операциями Spark и Spark SQL. Это позволяет быстро разрабатывать распределенные приложения. Достаточно создать локальный прототип с помощью NativeExecutionEngine, протестировать его и развернуть в кластере Spark, просто изменив механизм выполнения.
https://towardsdatascience.com/introducing-fuguesql-sql-for-pandas-spark-and-dask-dataframes-63d461a16b27
https://fugue-tutorials.readthedocs.io/tutorials/fugue_sql/index.html
FugueSQL - это открытая Python-библиотека, которая позволяет комбинировать Python-код с SQL-командами, переключаясь между ними в Jupyter Notebook или Python-скрипте. FugueSQL поддерживает распределенные вычисления и предоставляет унифицированный API для запуска одного и того же кода SQL в Pandas, Dask и Apache Spark.
В отличие от PandaSQL, который имеет единственный сервер SQLite, что приводит к большим накладным расходам при передаче данных между Pandas и базой данных, FugueSQL поддерживает несколько локальных бэкендов: pandas, DuckDB и SQLite.
При использовании pandas-бэкэнда Fugue напрямую переводит SQL в операции pandas, исключая передачу данных. DuckDB имеет превосходную поддержку pandas, поэтому накладные расходы на передачу данных незначительны. И Pandas, и DuckDB являются предпочтительными серверными модулями FugueSQL для локальной обработки данных. Fugue также поддерживает Spark, Dask и cuDF (через blazingSQL) в качестве бэкэндов.
В Fugue код SQL анализируется с помощью ANTLR и сопоставляется с эквивалентными функциями в API Fugue. FugueSQL имеет множество встроенных возможностей и расширяется с помощью Python-кода. По умолчанию он поддерживает наиболее распространенные на практике функции: заполнение значений NULL, удаление значений NULL, переименование столбцов, изменение схемы и пр. Fugue также добавляет некоторые улучшения в стандартный SQL, чтобы изящно обрабатывать сквозные рабочие процессы данных. Например, создание промежуточных таблиц через присвоение переменных.
В Pandas %% fsql принимает NativeExecutionEngine в качестве параметра по умолчанию. В Dask работа FugueSQL чуть медленнее нативного движка, но более полна с точки зрения реализованных ключевых слов SQL. FugueSQL также работает на Spark, сопоставляя операции %%fsql с операциями Spark и Spark SQL. Это позволяет быстро разрабатывать распределенные приложения. Достаточно создать локальный прототип с помощью NativeExecutionEngine, протестировать его и развернуть в кластере Spark, просто изменив механизм выполнения.
https://towardsdatascience.com/introducing-fuguesql-sql-for-pandas-spark-and-dask-dataframes-63d461a16b27
https://fugue-tutorials.readthedocs.io/tutorials/fugue_sql/index.html
Medium
Introducing FugueSQL — SQL for Pandas, Spark, and Dask DataFrames
An End-To-End SQL Interface for Data Science and Analytics
👻Что такое UMAP и зачем это Data Scientist’у
UMAP (Uniform Manifold Approximation and Projection) - это универсальный алгоритм обучения многообразию и уменьшения размерности. Он разработан для совместимости с scikit-learn, использует тот же API и может быть добавлен в конвейеры sklearn. Будучи стохастическим алгоритмом, UMAP использует рандомизацию для ускорения шагов аппроксимации и оптимизации. Это означает, что разные прогоны UMAP могут давать разные результаты. Хотя UMAP относительно стабилен, в идеале разница между прогонами должна быть относительно небольшой, но она есть. Чтобы гарантировать точное воспроизведение результатов, UMAP позволяет пользователю устанавливать случайное начальное состояние.
Начиная с версии 0.4 UMAP также поддерживает многопоточность для повышения производительности, а при оптимизации условия гонки между потоками допустимы на определенных этапах. Случайность в выходных данных UMAP для многопоточного случая зависит не только от входного случайного начального числа, но и от условий гонки между потоками во время оптимизации, что невозможно контролировать. Поэтому результаты многопоточного UMAP не могут быть воспроизведены явно.
UMAP можно использовать в качестве эффективного этапа предварительной обработки для повышения производительности кластеризации на основе плотности. Но UMAP, как и t-SNE, не сохраняет плотность полностью и может создавать ложные разрывы в кластерах. По сравнению с t-SNE, UMAP сохраняет более глобальную структуру, создавая более значимые кластеры. А благодаря поддержке произвольных размеров встраивания, UMAP позволяет работать с большими размерными пространствами.
Из-за активного использования метода ближайших соседей, для некоторых датасетов UMAP может чрезмерно потреблять память. Поможет установка параметра low_memory в значение True, чтобы переключиться на более медленный, но менее интенсивный подход к вычислению ближайших соседей. Также важно знать, что при запуске без случайного начального числа UMAP будет использовать параллельную реализацию NUMBA для многопоточной работы и использования ядер ЦП. По умолчанию он будет использовать столько ядер, сколько доступно. Ограничить количество потоков, используемых Numba, можно с помощью переменной среды NUMBA_NUM_THREADS. Также из-за особенностей Numba, UMAP не поддерживает 32-разрядную версию Windows.
Несмотря на некоторые недостатки, UMAP можно использовать в следующих случаях:
• разведочный анализ данных (EDA);
• интерактивная визуализация результатов анализа;
• обработка разреженных матриц;
• выявление вредоносных программ на основе поведенческих данных;
• предварительная обработка векторов фраз для кластеризации;
• предварительная обработка эмбеддингов изображений (Inception) для кластеризации.
https://github.com/lmcinnes/umap
https://umap-learn.readthedocs.io/en/latest/index.html
UMAP (Uniform Manifold Approximation and Projection) - это универсальный алгоритм обучения многообразию и уменьшения размерности. Он разработан для совместимости с scikit-learn, использует тот же API и может быть добавлен в конвейеры sklearn. Будучи стохастическим алгоритмом, UMAP использует рандомизацию для ускорения шагов аппроксимации и оптимизации. Это означает, что разные прогоны UMAP могут давать разные результаты. Хотя UMAP относительно стабилен, в идеале разница между прогонами должна быть относительно небольшой, но она есть. Чтобы гарантировать точное воспроизведение результатов, UMAP позволяет пользователю устанавливать случайное начальное состояние.
Начиная с версии 0.4 UMAP также поддерживает многопоточность для повышения производительности, а при оптимизации условия гонки между потоками допустимы на определенных этапах. Случайность в выходных данных UMAP для многопоточного случая зависит не только от входного случайного начального числа, но и от условий гонки между потоками во время оптимизации, что невозможно контролировать. Поэтому результаты многопоточного UMAP не могут быть воспроизведены явно.
UMAP можно использовать в качестве эффективного этапа предварительной обработки для повышения производительности кластеризации на основе плотности. Но UMAP, как и t-SNE, не сохраняет плотность полностью и может создавать ложные разрывы в кластерах. По сравнению с t-SNE, UMAP сохраняет более глобальную структуру, создавая более значимые кластеры. А благодаря поддержке произвольных размеров встраивания, UMAP позволяет работать с большими размерными пространствами.
Из-за активного использования метода ближайших соседей, для некоторых датасетов UMAP может чрезмерно потреблять память. Поможет установка параметра low_memory в значение True, чтобы переключиться на более медленный, но менее интенсивный подход к вычислению ближайших соседей. Также важно знать, что при запуске без случайного начального числа UMAP будет использовать параллельную реализацию NUMBA для многопоточной работы и использования ядер ЦП. По умолчанию он будет использовать столько ядер, сколько доступно. Ограничить количество потоков, используемых Numba, можно с помощью переменной среды NUMBA_NUM_THREADS. Также из-за особенностей Numba, UMAP не поддерживает 32-разрядную версию Windows.
Несмотря на некоторые недостатки, UMAP можно использовать в следующих случаях:
• разведочный анализ данных (EDA);
• интерактивная визуализация результатов анализа;
• обработка разреженных матриц;
• выявление вредоносных программ на основе поведенческих данных;
• предварительная обработка векторов фраз для кластеризации;
• предварительная обработка эмбеддингов изображений (Inception) для кластеризации.
https://github.com/lmcinnes/umap
https://umap-learn.readthedocs.io/en/latest/index.html
GitHub
GitHub - lmcinnes/umap: Uniform Manifold Approximation and Projection
Uniform Manifold Approximation and Projection. Contribute to lmcinnes/umap development by creating an account on GitHub.
🚀Ускоряем DS на больших данных: Pandas API прямо в Apache Spark
Популярный вычислительный фреймворк Apache Spark позволяет писать программы на Python, который знаком каждому DS-специалисту. Теперь PySpark включает pandas-библиотеку, которую можно импортировать всего одной строкой: import pyspark.pandas as ps.
Это дает следующие преимущества:
• снижает порог входа в Spark;
• унифицирует кодовую базу для небольших и больших данных, локальных машин и распределенных кластеров;
• ускоряет код Pandas.
Примечательно, что Pandas на Spark работает даже быстрее другого популярного Python-движка Dask.
https://spark.apache.org/docs/latest/api/python/user_guide/pandas_on_spark/index.html
https://towardsdatascience.com/run-pandas-as-fast-as-spark-f5eefe780c45
https://databricks.com/blog/2021/10/04/pandas-api-on-upcoming-apache-spark-3-2.html
Популярный вычислительный фреймворк Apache Spark позволяет писать программы на Python, который знаком каждому DS-специалисту. Теперь PySpark включает pandas-библиотеку, которую можно импортировать всего одной строкой: import pyspark.pandas as ps.
Это дает следующие преимущества:
• снижает порог входа в Spark;
• унифицирует кодовую базу для небольших и больших данных, локальных машин и распределенных кластеров;
• ускоряет код Pandas.
Примечательно, что Pandas на Spark работает даже быстрее другого популярного Python-движка Dask.
https://spark.apache.org/docs/latest/api/python/user_guide/pandas_on_spark/index.html
https://towardsdatascience.com/run-pandas-as-fast-as-spark-f5eefe780c45
https://databricks.com/blog/2021/10/04/pandas-api-on-upcoming-apache-spark-3-2.html
Medium
Run Pandas as Fast as Spark
Why the Pandas API on Spark is a total game changer
🚨 Серия митапов про Data Science в гео-данных, гео-сервисах, логистике, приложениях Smart City продолжается!
21 декабря в 19:00 МСК ждем всех на завершающей в этот год онлайн-встрече Citymobil Data Meetup!
🚀 В 2021 провели 4 митапа, привлекли 12 классных спикеров с огненными докладами:
Ксения Мензорова, Екатерина Колпакова, Николай Радчиков, Михаил Дьячков, Алексей Венжега, Алексей Кудинов, Максим Шаланкин, Сергей Свиридов, Даниил Тарарухин, Артем Солоухин, Андрей Критилин, Федор Лаврентьев.
🎁 Но на Новый год мы решили обойтись без сложных докладов, а сделать классный развлекательный формат: подвести итоги года в мире Data Science и Big Data, а также устроить викторину с подарками 🥳!
Регистрация для бесплатного участия: https://citymobil.timepad.ru/event/1870148/
Итоги года подведут:
🚕 Алексей Чернобровов (Ситимобил, Head of Data Science)
🆗 Андрей Кузнецов (Ok.ru, Data Scientist)
📹 Артур Кузин (SberDevices, Head of Computer Vision Platfrom)
⛓ Валерий Бабушкин (Blockchain.com, Head of Data Science)
☎️ Виктор Кантор (МТС, Директор центра Big Data)
🖼 Дмитрий Коробченко (NVIDIA, Senior Manager of AI)
Ведущие: Алексей Чернобровов и Анастасия Никулина!
21 декабря в 19:00 МСК ждем всех на завершающей в этот год онлайн-встрече Citymobil Data Meetup!
🚀 В 2021 провели 4 митапа, привлекли 12 классных спикеров с огненными докладами:
Ксения Мензорова, Екатерина Колпакова, Николай Радчиков, Михаил Дьячков, Алексей Венжега, Алексей Кудинов, Максим Шаланкин, Сергей Свиридов, Даниил Тарарухин, Артем Солоухин, Андрей Критилин, Федор Лаврентьев.
🎁 Но на Новый год мы решили обойтись без сложных докладов, а сделать классный развлекательный формат: подвести итоги года в мире Data Science и Big Data, а также устроить викторину с подарками 🥳!
Регистрация для бесплатного участия: https://citymobil.timepad.ru/event/1870148/
Итоги года подведут:
🚕 Алексей Чернобровов (Ситимобил, Head of Data Science)
🆗 Андрей Кузнецов (Ok.ru, Data Scientist)
📹 Артур Кузин (SberDevices, Head of Computer Vision Platfrom)
⛓ Валерий Бабушкин (Blockchain.com, Head of Data Science)
☎️ Виктор Кантор (МТС, Директор центра Big Data)
🖼 Дмитрий Коробченко (NVIDIA, Senior Manager of AI)
Ведущие: Алексей Чернобровов и Анастасия Никулина!
citymobil.timepad.ru
Citymobil Data Meetup / События на TimePad.ru
Ситимобил каждый месяц проводит митапы о применении Data science в городских и геосервисах, логистике и технологиях умных городов.
Сегодняшний митап пройдет на нашем YouTube-канале https://youtu.be/RXn5ERnhfaM
Сегодняшний митап пройдет на нашем YouTube-канале https://youtu.be/RXn5ERnhfaM
👑Продолжаем знакомиться с полезными DS-инструментами: встречайте Streamlit
Streamlit - это Python-библиотека с открытым исходным кодом, которая упрощает создание и публикацию красивых пользовательских веб-приложений для ML и DS. Создавайте и развертывайте мощные приложения всего за пару минут. Сравнение Streamlit с Dash похоже на сравнение Python с C#. Streamlit упрощает создание приложений для веб-данных в чистом коде Python, часто в несколько строк кода. Например, однострочные команды для отображения интерактивных визуальных элементов Plotly, Bokeh и Altair, Pandas DataFrames и пр. Streamlit поддерживается огромным open-source сообществом разработчиков: добавляйте собственные компоненты в библиотеку с помощью JavaScript. А облачное использование Streamlit открыто для всех: можно создать и разместить до трех приложений бесплатно.
https://streamlit.io/
Streamlit - это Python-библиотека с открытым исходным кодом, которая упрощает создание и публикацию красивых пользовательских веб-приложений для ML и DS. Создавайте и развертывайте мощные приложения всего за пару минут. Сравнение Streamlit с Dash похоже на сравнение Python с C#. Streamlit упрощает создание приложений для веб-данных в чистом коде Python, часто в несколько строк кода. Например, однострочные команды для отображения интерактивных визуальных элементов Plotly, Bokeh и Altair, Pandas DataFrames и пр. Streamlit поддерживается огромным open-source сообществом разработчиков: добавляйте собственные компоненты в библиотеку с помощью JavaScript. А облачное использование Streamlit открыто для всех: можно создать и разместить до трех приложений бесплатно.
https://streamlit.io/
streamlit.io
Streamlit • A faster way to build and share data apps
Streamlit is an open-source Python framework for data scientists and AI/ML engineers to deliver interactive data apps – in only a few lines of code.
☀️Встречайте Gallia: новая библиотека для преобразования данных
Эта Scala-библиотека с поддержкой схемы пригодится для практического преобразования данных, включая ETL-процессы, разработка функций, HTTP-ответы и пр. Будучи отлично масштабируемой, она предназначена, чтобы заполнить пробел между Pandas и Spark SQL. Gallia пригодится тем, кто ценит мощную систему типов как в Scala, и тем, кому сложно понять слишком навороченные SQL-запросы. По сути, Gallia реализует парадигму единого окна для большинства или всех потребностей преобразования данных в одном приложении. Библиотека поддерживает все виды манипуляций с данными, от агрегаций до пивот-поворота таблиц, включая обработку отдельных и вложенных объектов, а не только коллекций. Для масштабирования Gallia отлично интегрируется со Spark RDD API.
https://cros-anthony.medium.com/gallia-a-library-for-data-transformation-3fafaaa2d8b9
https://github.com/galliaproject/gallia-core/blob/master/README.md
Эта Scala-библиотека с поддержкой схемы пригодится для практического преобразования данных, включая ETL-процессы, разработка функций, HTTP-ответы и пр. Будучи отлично масштабируемой, она предназначена, чтобы заполнить пробел между Pandas и Spark SQL. Gallia пригодится тем, кто ценит мощную систему типов как в Scala, и тем, кому сложно понять слишком навороченные SQL-запросы. По сути, Gallia реализует парадигму единого окна для большинства или всех потребностей преобразования данных в одном приложении. Библиотека поддерживает все виды манипуляций с данными, от агрегаций до пивот-поворота таблиц, включая обработку отдельных и вложенных объектов, а не только коллекций. Для масштабирования Gallia отлично интегрируется со Spark RDD API.
https://cros-anthony.medium.com/gallia-a-library-for-data-transformation-3fafaaa2d8b9
https://github.com/galliaproject/gallia-core/blob/master/README.md
Medium
Gallia: A Library for Data Transformation
A schema-aware Scala library for practical data transformation: ETL, feature engineering, HTTP responses, etc
Forwarded from Алексей Чернобровов
Сегодня ML – это не только разработка моделей. Data Scientist ведет непрерывный сбор и анализ статистики процессов машинного обучения, включая распределение значений метрик и показателей производительности модели. Это занимает много времени, поэтому появляются инструменты для автоматизированного исследования таких метаданных и особенностей инфраструктуры. Одним из них является автономный open-source пакет Aim. Он позволяет отслеживать множество ML-экспериментов и сравнивать их производительность в удобном GUI или программно через SDK. API предоставляет методы, чтобы запрашивать метаданные ML-прогонов для последующей автоматизации и дополнительного анализа. По сути, Aim реализует концепцию MLOps и является альтернативой популярным средствам этого стека: Tensorboard и MLFlow. Однако, по сравнению с ними Aim имеет следующие преимущества:
• В отличие от TensorBoard и MLFlow, в Aim можно группировать и агрегировать показатели обучения ML-модели, а также строить подзаголовки по гиперпараметрам и вводить собственные функции сравнения экспериентов;
• Aim работает быстрее TensorBoard и MlFlow. Aim может обрабатывать тысячи тренировочных прогонов с десятками экспериментов в каждом, причем как на бэкэнде, так и в GUI. В частности, пользовательский интерфейс Aim может обрабатывать несколько тысяч показателей одновременно с плавным шагом.
Пакет поддерживает интеграцию с PyTorch, Hugging Face, Keras, TensorFlow и XGBoost. Пока Aim доступен для Python 3.6+ на платформах Linux и MacOS. В ближайших планах разработчиков добавить интеграцию с Python-библиотеками Scikit-learn и plotly, IDE Google Colab и Jupyter Notebook, а также MLOps-инструментами Kubeflow, Streamlit, Raytune и Google MLMD. Еще ожидается поддержка резервного копирования в облачные хранилища AWS S3, Google Cloud Storage и Azure.
Попробовать Aim можно уже сейчас, скачав его с Github: https://github.com/aimhubio/aim.
Подробная документация: https://aimstack.readthedocs.io/en/latest/
• В отличие от TensorBoard и MLFlow, в Aim можно группировать и агрегировать показатели обучения ML-модели, а также строить подзаголовки по гиперпараметрам и вводить собственные функции сравнения экспериентов;
• Aim работает быстрее TensorBoard и MlFlow. Aim может обрабатывать тысячи тренировочных прогонов с десятками экспериментов в каждом, причем как на бэкэнде, так и в GUI. В частности, пользовательский интерфейс Aim может обрабатывать несколько тысяч показателей одновременно с плавным шагом.
Пакет поддерживает интеграцию с PyTorch, Hugging Face, Keras, TensorFlow и XGBoost. Пока Aim доступен для Python 3.6+ на платформах Linux и MacOS. В ближайших планах разработчиков добавить интеграцию с Python-библиотеками Scikit-learn и plotly, IDE Google Colab и Jupyter Notebook, а также MLOps-инструментами Kubeflow, Streamlit, Raytune и Google MLMD. Еще ожидается поддержка резервного копирования в облачные хранилища AWS S3, Google Cloud Storage и Azure.
Попробовать Aim можно уже сейчас, скачав его с Github: https://github.com/aimhubio/aim.
Подробная документация: https://aimstack.readthedocs.io/en/latest/
GitHub
GitHub - aimhubio/aim: Aim 💫 — An easy-to-use & supercharged open-source experiment tracker.
Aim 💫 — An easy-to-use & supercharged open-source experiment tracker. - aimhubio/aim
👻4 простых совета для эффективной дата-инженерии
Чтобы проекты дата-инженерии с сотнями артефактов, включая файлы зависимостей, задания, модульные тесты, shell-файлы и блокноты Jupyter, не превратились в хаос, соблюдайте следующие правила:
• управляйте зависимостями, например, через менеджер зависимостей типа Poetry
• помните про юнит-тесты - внедрение модульных тестов в проект убережет от неприятностей и улучшит качество кода
• разделяй и властвуй - храните все преобразования данных в отдельном модуле
• документируйте, чтобы помнить о коде и решаемой им бизнес-задаче самому и делиться знаниями с коллегами
https://blog.devgenius.io/keeping-your-data-pipelines-organized-fa387247d59e
Чтобы проекты дата-инженерии с сотнями артефактов, включая файлы зависимостей, задания, модульные тесты, shell-файлы и блокноты Jupyter, не превратились в хаос, соблюдайте следующие правила:
• управляйте зависимостями, например, через менеджер зависимостей типа Poetry
• помните про юнит-тесты - внедрение модульных тестов в проект убережет от неприятностей и улучшит качество кода
• разделяй и властвуй - храните все преобразования данных в отдельном модуле
• документируйте, чтобы помнить о коде и решаемой им бизнес-задаче самому и делиться знаниями с коллегами
https://blog.devgenius.io/keeping-your-data-pipelines-organized-fa387247d59e
Medium
Keeping Your Data Pipelines Organized
Presenting an easy to go Data Engineer project structure
👣AutoML и не только с PyCaret
PyCaret – AutoML-библиотека с открытым исходным кодом на Python и низкоуровневым подходом к автоматизации большинства MLOps-задач. В PyCaret есть специальные функции для анализа, развертывания и объединения моделей, которых нет во многих других ML-фреймворках. Она позволяет перейти от подготовки данных к развертыванию ML-модели за считанные минуты в выбранной пользователем среде разработки.
По сути, PyCaret – это Python-оболочка для нескольких библиотек и ML-фреймворков: scikit-learn, XGBoost, LightGBM, CatBoost, spaCy, Optuna, Hyperopt, Ray и пр. Простота PyCaret позволяет использовать его не только опытным DS-специалистам, но и обычным пользователям, которые умеют выполнять простые сложные аналитические задачи. Библиотека доступна для свободного скачивания и использования под лицензией MIT. Пакет содержит несколько модулей, функции в которых сгруппированы по основным сценариям использования: от простой классификации до NLP-задач и определения аномалий.
https://pycaret.org/
https://github.com/pycaret/pycaret
PyCaret – AutoML-библиотека с открытым исходным кодом на Python и низкоуровневым подходом к автоматизации большинства MLOps-задач. В PyCaret есть специальные функции для анализа, развертывания и объединения моделей, которых нет во многих других ML-фреймворках. Она позволяет перейти от подготовки данных к развертыванию ML-модели за считанные минуты в выбранной пользователем среде разработки.
По сути, PyCaret – это Python-оболочка для нескольких библиотек и ML-фреймворков: scikit-learn, XGBoost, LightGBM, CatBoost, spaCy, Optuna, Hyperopt, Ray и пр. Простота PyCaret позволяет использовать его не только опытным DS-специалистам, но и обычным пользователям, которые умеют выполнять простые сложные аналитические задачи. Библиотека доступна для свободного скачивания и использования под лицензией MIT. Пакет содержит несколько модулей, функции в которых сгруппированы по основным сценариям использования: от простой классификации до NLP-задач и определения аномалий.
https://pycaret.org/
https://github.com/pycaret/pycaret
PyCaret
Low-code ML for Python.