Big Data Science [RU]
1.62K subscribers
80 photos
9 videos
545 links
Big Data Science [RU] — канал о жизни Data Science.
Для сотрудничества: a.chernobrovov@gmail.com
🌏 — https://t.me/bdscience — Big Data Science channel (english version)
💼 — https://t.me/bds_job — channel about Data Science jobs and career
Download Telegram
Не знаешь, что обсудить с друзьями вечером в баре? Лови главные тезисы с митапа про Data Science и Machine Learning:

⭐ Даже если не планируете в вашем продукте никакого ML/AI, всё равно готовьте архитектуру данных и инфраструктуру для потенциального внедрения алгоритмов машинного обучения. Вероятность того, что это рано или поздно случится, слишком высока, и никакой highload не станет оправданием.

💫 Чтобы учесть влияние ML-моделей друг на друга, нужно использовать подходы похожие на оркестрцию данных. Но сейчас, к сожалению, нет фреймворков для этого. И каждый раз приходится изобретать свой велосипед.

🌟 Умная лента — это не просто ранжирование постов от ML-модели, но и борьба с непотребным контентом и обеспечение разнообразия контента. Кроме того, в большом продакшене ML требует целого ансамбля сервисов, обеспечивающих его работу.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
👀ТОП-5 открытых инструментов для отслеживания происхождения данных
Происхождение данных (data lineage) позволяет компании соблюдать нормативные требования, лучше понимать и доверять своим данным, а также экономить время на ручном анализе возможных эффектов от их изменения. Для мониторинга происхождения данных на сегодняшнем рынке есть множество инструментов, открытых и проприетарных. Из инструментов с открытым исходным кодом наиболее популярными являются следующие:
• Tokern позволяет пользователям получать данные о происхождении данных на уровне столбцов из баз данных и хранилищ данных, размещенных в Google BigQuery, AWS Redshift и Snowflake. Tokern можно интегрировать и с другими системами, т.к. он хорошо работает с большинством каталогов данных с открытым исходным кодом и ETL-фреймворков. Tokern также позволяет пользователям создавать происхождение данных из истории запросов или сценариев ETL, что делает его идеальным для интеграции инструментов BI и ETL. В качестве своего локального хранилища Tokern использует PostgreSQL, а для визуализации Kedro-Viz и библиотеку анализа сетевых графов NetworkX. Эти библиотеки позволяют пользователям отслеживать, визуализировать и анализировать данные о происхождении на уровне столбцов. Кроме того, пользователи также могут взаимодействовать с данными о происхождении, используя SDK или API Tokern. Еще Tokern обеспечивает обнаружение PII (личной информации) и PHI (личной медицинской информации) с помощью PIICatcher, сочетая регулярные выражения с NLP-библиотеками Spacy и Stanford NER.
• Egeria – стандарт метаданных с открытым исходным кодом, обеспечивающий беспрепятственную интеграцию инструментов обработки данных для надежного и согласованного представления метаданных. Egeria позволяет пользователям создавать более совершенные решения для отслеживания происхождения данных, проверки качества данных, идентификации PII и т. д. в дополнение к каталогизации и поиску метаданных. Egeria основана на открытом стандарте сбора и хранения данных OpenLineage. Это позволяет пользователям получить более полное представление о данных, предоставляя горизонтальное и вертикальное их происхождение и трассировки. Чтобы получить информацию о происхождении данных, Egeria прослушивает события Kafka, создаваемые исходными системами.
• Pachyderm —инструмент сбора данных, позволяющий разработчикам создавать конвейеры машинного обучения независимо от языка и фреймворка, вместо фокуса на облачных хранилищах данных. Он использует систему контроля версий, такую как lakeFS или Git, фиксирует и сохраняет изменения, например, коммиты, сохраняя полный и неизменный контрольный журнал событий. Также Pachyderm имеет полный журнал аудита и использует центральный репозиторий на основе объектного хранилища в настраиваемой файловой системе Pachyderm File System, чтобы обеспечить отслеживание происхождения данных и контроль их версий. Pachyderm обеспечивает неизменность источника данных пользователя, позволяя назначать глобальные идентификаторы событиям происхождения и объектам данных. Pachyderm позволяет просматривать неизменяемый график происхождения данных как DAG в пользовательском интерфейсе, что особенно полезно при работе с конвейерами ML. Pachyderm отлично интегрируется со многими базами, хранилищами и озерами данных. Поэтому многие компании используют его для операций MLOps, неструктурированных данных ETL и рабочих нагрузок NLP.
• OpenLineage – проект Linux Foundation, основанный на интеграции с платформами ETL, механизмами оркестрации данных, каталогами метаданных, механизмами контроля качества данных, а также инструментами наследования данных. OpenLineage использует JSONSchema в качестве определения API и поддерживает различные языки и платформы. Ранее упомянутая Egeria имеет основной уровень метаданных, построенный поверх OpenLineage. Marquez от WeWork также лежит в основе архитектуры OpenLineage, предлагая репозиторий пользовательского интерфейса и метаданных, а также API для сбора метаданных, предоставляемый через GraphQL и REST API.
👍3
• TrueDat – комплексное решение для управления данными, которое позволяет детально классифицировать, искать и отслеживать их, а также визуализировать весь жизненный цикл данных. Инструмент создан в 2017 г. компанией BlueTab, входящей в состав IBM, и до сих пор активно развивается.
https://blog.devgenius.io/5-best-open-source-data-lineage-tools-in-2022-f8ef39a7d5f6
👍1
🚀Как ускорить Pandas с библиотекой Pandarallel
Каждый Data Scientist знает, что Python-библиотека Pandas работает довольно медленно и не предназначена для больших объемов данных. Тем не менее, каждый Data Scientist ее использует.🤷‍♀️ Чтобы сделать Pandas более быстрой, можно включить в свой проект Pandarallel — простой и эффективный инструмент для распараллеливания операций Pandas на всех доступных процессорах.
Pandas использует только одно ядро ЦП, а Pandarallel позволяет воспользоваться преимуществами многоядерного компьютера. Еще Pandarallel предлагает индикаторы выполнения программы, доступные на ноутбуке и терминале, чтобы получить приблизительное представление об оставшемся объеме вычислений, которые необходимо выполнить.
Библиотеку можно использовать на любом компьютере под управлением Linux и macOS, а в Windows есть небольшие особенности: из-за многопроцессорной системы функция, которая отправляется в Pandarallel, должна быть автономной и не должна зависеть от внешних ресурсов.
https://nalepae.github.io/pandarallel/
👍4🤔2
🤷‍♀️Не все отсутствующие данные одинаково отсутствуют
Отсутствующие данные — это проблема, которая часто возникает в Data Science и машинном обучении. Есть множество причин, по которым данные могут отсутствовать, в зависимости от их типа и методов сбора. Но не все отсутствующие данные одинаковы, их можно разбить на следующие категории:
• Отсутствующие по причине невозможности их сбора или дороговизне этой процедуры
• Структурно отсутствующие данные, которые не могут быть получены из-за особенностей объектов исследований;
• Отсутствующие по причине случайного сбоя;
• Отсутствующие по неочевидным или неизвестным причинам.
В зависимости от причины отсутствия данных в датасете, можно сгладить или вовсе устранить это. Например, структурно отсутствующие данные предполагают изменение структуры вопросов об объекте исследования, чтобы ответы на них были получены. Вместо сбора редких или дорогостоящих данных можно выбрать прокси-метрики, которые позволяют принять решение. Постоянно повторяющиеся сбои необходимо устранить, а также больше узнавать о причинах отсутствия ожидаемых данных.
https://medium.com/@nahmed3536/types-of-missing-data-e718e6ac2a55
👍2
🔥Валидация данных в Python-скрипте с библиотекой pydantic
Эта легковесная библиотека позволяет проверить данные и управлять настройками с использованием аннотаций Python, применяя подсказки типов во время выполнения. Библиотека показывает пользователю ошибки, если данные невалидны. Достаточно определить, какими должны быть данные в чистом, каноническом Python и подтвердить это с помощью pydantic.
Справедливости ради стоит отметить, что pydantic — это прежде всего библиотека синтаксического анализа, а не средство валидации. Библиотека гарантирует типы и ограничения выходной модели, а не входных данных. Впрочем, хотя валидация модели не является основной целью pydantic, ее можно применять и для этого.
Основным средством определения объектов в pydantic являются модели, классы-наследники базового класса BaseModel. Можно рассматривать модели как типы данных в строго типизированных языках. Ненадежные данные могут быть переданы в модель, и после синтаксического анализа и проверки pydantic гарантирует, что поля результирующего экземпляра модели будут соответствовать типам полей, определенным в модели.
Библиотека отлично совмещается с любой IDE и работает очень быстро: большая часть библиотеки скомпилирована с помощью Cython. Pydantic обеспечивает проверку сложных структур данных и использование рекурсивных моделей, а также позволяет определять пользовательские типы данных через применение декоратора с анализом и проверкой входных данных.
Примечательно, что этот проект с открытым исходным кодом используют множество компаний и продуктов, включая FastAPI, Jupyter, Microsoft, AWS, Uber и др. Попробовать его можно прямо сейчас, импортировав в свой Python-скрипт сперва саму библиотеку через менеджер проектов pip, а затем ее базовый класс BaseModel:
pip install pydantic
from pydantic import BaseModel
https://pydantic-docs.helpmanual.io/
👍3
👍🏻Нужны красивые графики в Jupyter Notebook? Легко с PivotTable.js!
PivotTable.js — это Javascript-реализация сводных таблиц с открытым исходным кодом с функциями drag-and-drop. Проект распространяется под лицензией MIT и устанавливается через менеджер пакетов pip:
pip install pivottablejs
Библиотека позволяет удобно и быстро визуализировать статистику датасета, просто перетащив нужные данные.
https://pypi.org/project/pivottablejs/
👍5
Яндекс назвал лауреатов своей ежегодной научной премии

Ученые, которые занимаются исследованиями в области компьютерных наук, получат по миллиону рублей на развитие своих проектов. В 2022 году лауреатами стали шесть молодых ученых:

•Максим Великанов — занимается теорией deep learning, изучает бесконечно широкие нейронные сети и статистическую физику;

•Петр Мокров — исследует градиентные потоки Вассерштейна, нелинейную фильтрацию и байесовскую логистическую регрессию;

•Максим Кодрян — занимается deep learning, а также оптимизацией и генерализацией нейросетевых моделей;

•Руслан Рахимов — работает с нейронной визуализацией, CV и deep learning;

•Сергей Самсонов — изучает алгоритмы Монте-Карло с марковскими цепями, стохастическую аппроксимацию и другие темы;

•Тарас Хахулин — работает в области компьютерного зрения.

Круто, что отдельно выделяют и научных руководителей. В этом году гранты получили двое — Дмитрий Ветров, заведующий Центром глубинного обучения и байесовских методов ВШЭ, и Алексей Наумов, доцент факультета компьютерных наук ВШЭ, заведующий Международной лаборатории стохастических алгоритмов и анализа многомерных данных.

Подробнее о премии и лауреатах 2022 года — на сайте.
🔥4👍3
🌲ТОП-7 DS-событий декабря
В последний месяц 2022 года ожидаются следующие DS-события:
• 3 декабря – крупная конференция Яндекса, более 100 экспертов из мировых и российских компаний. Онлайн и офлайн. https://yatalks.yandex.ru/ru
• 4 декабря - командный онлайн-чемпионат Avanpost Challenge https://avanpostchallenge.ru/
• 5-16 декабря - онлайн-фестиваль Yandex DataLens Festival по аналитике данных https://cloud.yandex.ru/datalens-festival
• 6 декабря – вебинар Яндекса про возможности DataSphere для распределённых ML-команд https://cloud.yandex.ru/events/683
• 7 декабря – предновогодний митап Data People Junior https://datapeople.ru/junior_071222
• 7 декабря - Международный научный форум FIT-M 2022 по применению информационных технологий и компьютерного моделирования в науке, промышленности и бизнесе. Москва НИУ ВШЭ https://fit-m.org/
• 8 декабря – онлайн-митап ВТБ про применение ML-инструментов в бизнес-процессах https://vtb-meetup.ru/ml-tools-in-business
👍2
💥3 полезных Python-библиотеки для Data Science и не только
Сегодня познакомимся с 3-мя библиотеками, которые могут пригодиться в задачах Data Science:
• Fabric — высокоуровневая библиотека Python (2.7, 3.4+) для удаленного выполнения команд оболочки через SSH с получением полезных объектов Python. Она основана на API Invoke (выполнение команд подпроцесса и функции командной строки) и Paramiko (реализация протокола SSH). https://github.com/fabric/fabric
• TextDistance — библиотека для сравнения расстояния между двумя или более последовательностями с помощью более 30 алгоритмов. Пригодится в NLP-задачах для определения расстояния и сходства между последовательностями. https://github.com/life4/textdistance
• Watchdog - Python API (3.6+) и утилиты оболочки для мониторинга событий файловой системы. Пригодится для мониторинга каталогов, указанных в качестве аргументов командной строки, позволяет регистрировать сгенерированные события. https://github.com/gorakhargosh/watchdog
👍6
🤔PyPy vs CPython: под капотом Python
Каждый разработчик Python-скриптов знает про CPython — наиболее распространенную реализация виртуальной машины, которая интерпретирует написанный код. Кроме CPython есть также PyPy , построенный с использованием языка RPython. По сравнению с CPython, PyPy работает быстрее, реализуя Python 2.7.18, 3.9.15 и 3.8.15. PyPy поддерживает большинство часто используемых модулей стандартных Python-библиотек. Версия PyPy x86 работает в нескольких операционных системах, таких как Linux (32/64 бита), MacOS (64 бита), Windows (32 бита), OpenBSD, FreeBSD. Версии, отличные от x86, поддерживаются в Linux, а ARM64 — в MacOS.
Впрочем, PyPy не сможет ускорить код в кратковременных процессах, которые запускаются менее чем на пару секунд: JIT-компилятору не хватит времени на «разогрев». Также PyPy не даст выиграша в скорости, если все время выполнения проводится в runtime-библиотеках, т.е. в функциях C, а не в фактическом выполнении Python-кода. Поэтому PyPy работает лучше всего при выполнении долго выполняющихся программ, когда значительная часть времени тратится на выполнение кода Python.
С точки зрения потребления памяти, PyPy также может дать фору CPython: Python-программы с высоким потреблением ОЗУ (сотни МБ и более) могут в конечном итоге занимать меньше места в PyPy, чем в CPython.
https://www.pypy.org/features.html
👍5
🚀Ускоряем качество и повышаем скорость выполнения Python-кода с Refurb
Каждый Data Scientist знает, что Python — это интерпретируемый язык. Интерпретируемый код всегда медленнее, чем компилируемый в прямой машинный код, потому что для реализации интерпретируемой инструкции требуется гораздо больше времени. Поэтому то, как вы пишете свой код на Python, сильно влияет на скорость его выполнения. Наличие хорошей структуры кода и соблюдение языкового преобразования увеличат скорость Python-кода. Улучить качество Python-кода поможет библиотека Refurb. Она может модернизировать или изменить код Python с помощью одной единственной команды. Библиотека основана на идеях clippy, встроенного линтера для Rust.
Просто установите ее через менеджер пакетов pip
pip install refurb
И используйте подсказки, чтобы улучшить качество своего Python-кода и повысить скорость его выполнения.
https://github.com/dosisod/refurb
👍4🔥2🤔1
🤔SQLlite как встроенная база данных в Python
SQLite
— это встроенная реляционная файловая СУБД (RDBMS), которую можно использовать в Python- приложениях без установки дополнительного ПО. Достаточно импортировать встроенную Python-библиотеку sqlite3, чтобы использовать SQLite.
Сперва надо создать соединение с базой данных, импортировав sqlite3, а затем вызвать метод .connect, указав имя базы данных, которую надо создать, например, new_database.db.
import sqlite3
conn = sqlite3.connect(' new_database.db ')
Перед созданием таблицы нужно создать курсор – объект, который используется для создания соединения для выполнения SQL-запросов. При этом вызывается созданное соединение и метод .cursor():
c = conn.cursor()
После этого можно применить метод .execute() для создания новой таблицы в базе данных. Внутри кавычек пишется обычный синтаксис SQL-запросов, используемый для создания таблицы в большинстве СУБД. Например, создание таблицы через оператор CREATE TABLE:
c.execute("""CREATE TABLE new_table (
name TEXT,
weight INTEGER)""")
Наполнив таблицу данными, можно выполнять к ней типовые SQL-запросы на выборку и изменение значений.
https://towardsdatascience.com/yes-python-has-a-built-in-database-heres-how-to-use-it-b3c033f172d3
👍3🔥2
#тест
Векторизация может заменить циклы
Anonymous Quiz
57%
Да
43%
Нет
👍3🤔2
🤔ТОП-4 рисков embedding’ов в ML
Встраиваемые модели широко используются в машинном обучении чтобы перевести необработанные входные данные в низкоразмерный вектор, который фиксирует их семантическое значение и может использоваться для различных последующих моделей. Предварительно обученные встраивания в качестве экстракторов признаков используются для разработки фичей различных типов входных данных (текст, изображение, аудио, видео, мультимодальный) или категориальные признаки с высокой кардинальностью.
Главными рисками embedding’ов считаются:
• Высокая запутанность - изменение выходных данных восходящей модели встраивания влияет на производительность нижестоящей модели. Полагаясь на выходные данные embedding-модели, следует переобучать нижестоящие модели.
• Скрытые петли обратной связи. Предварительно обученные фичи встраивания часто используются как черный ящик. Но знание того, на чем обучалось встраивание необработанных входных данных, очень важно для качества модели и ее интерпретируемости.
• Высокие затраты на вывод в реальном времени требует больших затрат (хранение и обслуживание). Это напрямую влияет на рентабельность инвестиций в ML. Важно обеспечить качество во время сбоев в обслуживании встраивания, стоимость обучения и стоимость обслуживания за запрос.
• Высокая стоимость отладки - отладка и мониторинг встроенных фичей или основных причин сбоев обходится очень дорого. Поэтому следует отказаться от встроенных фичей, которые не имеют большого значения для модели.
https://medium.com/better-ml/embeddings-the-high-interest-credit-card-of-feature-engineering-414c00cb82e1
👍1
💥Не только Copilot: Codex от OpenAI
OpenAI выпустил бета-релиз модели Codex на базе GPT-3, которые могут понимать и генерировать код. Их обучающие данные содержат как естественный язык, так и миллиарды строк общедоступного кода из GitHub. Эти нейросетевые модели лучше всего разбираются в Python и владеют более чем дюжиной языков программирования, включая JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript, SQL и даже Shell. Codex пригодится в следующих задачах:
• Сделать код из комментариев
• Завершить следующую строку или функцию в контексте
• Найти полезную библиотеку или вызов API
• Добавить комментарии
• Сделать рефакторинг кода для повышения его эффективности
https://beta.openai.com/docs/guides/code
👍3
🤔Почему библиотека NumPy так популярна в Python?
NumPy — это библиотека языка Python, которая добавляет поддержку больших многомерных массивов и матриц, а также высокоуровневых (и очень быстро выполняющихся) математических функций для операций с этими массивами. У данной библиотеки есть несколько важных особенностей, которые сделали ее популярным инструментом.
Во-первых, исходный ее код в свободном доступе хранится на GitHub, поэтому NumPy называют open-source модулем для Python. https://github.com/numpy/numpy/tree/main/numpy
Во-вторых, NumPy написана на языке C. Данный язык является компилируемым, то есть конструкции на этом языке преобразуются в машинный код — набор инструкций для конкретного типа процессора. Преобразование происходит с помощью специальной программы-компилятора, благодаря чему все вычисления происходят достаточно быстро.
Для примера сравним производительность NumPy-массивов и стандартных Python-списков:
import numpy
import time
list1 = range(1000000)
list2 = range(1000000)
array1 = numpy.arange(1000000)
array2 = numpy.arange(1000000)
initialTime = time.time()
resultantList = [(a * b) for a, b in zip(list1, list2)]
print("Время, затраченное на создание списка Python:",(time.time() - initialTime),"сек")
initialTime = time.time()
resultantArray = array1 * array2
print("Время, затраченное на создание массива NumPy :", (time.time() - initialTime),"сек")
Как результат, мы можем полагать, что NumPy-массивы показали себя намного быстрее (0.002 сек), чем стандартные Python-списки (0.11 сек)
В целом, можно сказать, что производительность NumPy различается на разных платформах из-за различий в программном и аппаратном обеспечении. В качестве примеров были протестированы генераторы псевдослучайных чисел. Подробности можно узнать на официальном сайте NumPy здесь: https://numpy.org/doc/stable/reference/random/performance.html#performance-on-different-operating-systems
👍2🤔1