Архив рубрики: Заметки

График распределения дроби

Посмотрите, каким шикарным графиком поделились со мной коллеги!

Это график распределения частотности двух событий за всю жизнь пользователя. X — число событий типа А в месяц, Y — число событий типа Б в месяц, каждая точка — отдельный пользователь. На графике увеличена область от 0 до 1 по обоим шкалам. Откуда здесь полосы?! Читать далее График распределения дроби

Формальная постановка задачи предиктивного моделирования

На прошлой неделе встрял в теоретическую дискуссию с одним data scientist’ом  о формальной постановке задачи предиктивного моделирования. Тема совершенно оторванная от реальности, но тем не менее, может, кому-то из неофитов покажется полезной.

Data scientist обычно не выбирает задачи сам себе. Задачи исходят из бизнес-кейса и предметной области, а гипотезы и модели подбираются, исходя из их практической применимости. Более того, большинство гипотез о решении задач уже давно придуманы и осмыслены людьми, работающими с предметной областью — технарями, продажниками, рисковиками и т.п. Читать далее Формальная постановка задачи предиктивного моделирования

Версионирование .ipynb в git: готовые решения

Я очень не люблю класть .ipynb блокноты в git. На каждое движение они изменяют свои метаданные, порождая хаотичные диффы. Если класть .ipynb в систему версионирования, то нужно предварительно очищать его от всех входов и выходов и следить, чтобы никто нечаянно не закоммитил неочищенную версию, и это все очень неудобно… Оказывается, не я один беспокоюсь из-за этого. Читать далее Версионирование .ipynb в git: готовые решения

Как класть Parquet 2: внутреннее устройство

Почему-то в интернетах не так уж много пишут о внутреннем устройстве Parquet. Мне удалось найти всего несколько достойных внимания источников, и это официальный док, readme для parquet-mr, официальная презентация и презентация про оптимизацию от Ryan Blue. Кроме этого, у нас есть JavaDoc к ParquetOutputFormat.java и гора исходников. Давайте разберемся, как же оно работает? Читать далее Как класть Parquet 2: внутреннее устройство

Как класть Parquet 1: когда использовать

Для одного клиента написал подробную инструкцию об том, как работать с Parquet. Хотел сослаться на какие-нибудь приличные гайды в интернетах, но не обнаружил таковых ни на русском, ни на английском. Придется писать самому. Итак, начинаем цикл заметок.

Apache Parquet это файловый формат для поколоночного хранения структурированных данных, оптимизированный под использование с HDFS и Apache Spark. Он великолепно подходит для хранения тяжелых таблиц, их быстрого чтения и фильтрации. По производительности и компактности он оставляет далеко позади себя все неколоночные форматы. При этом он подходит далеко не для всех случаев. Давайте поговорим, когда имеет смысл его использовать, а когда лучше обойтись другими форматами. Читать далее Как класть Parquet 1: когда использовать

Как разрабатывают скоринговые модели для банков

Поучаствовал в дискуссии на тему разработки скоринговых моделей для банков. Полный текст дискуссии — в сообществе Open Data Science, вступайте.

Крупные розничные банки разрабатывают скоринговые модели сами, в первую очередь потому, что это их core business. Скоринговая модель оперирует многомиллионными бюджетами, цена ошибки огромна, параметры зависят от кредитной политики, в итоге естественно желание полностью контролировать модель. Кроме того, допуск аутсорсеров к модели может повлечь за собой утечки, которые могут использоваться мошенниками или конкурентами. Читать далее Как разрабатывают скоринговые модели для банков

Параметрический полиморфизм как он есть

Предыдущая заметка подтолкнула меня изучить матчасть, какие подходы к параметрической типизации существуют в природе. Не вдаваясь в теорию, параметрическая типизация — это механизм, который позволяет разрабатывать программы (обычно, алгоритмы и структуры данных) безотносительно типов данных, с которыми они работают. На практике применяется два подхода — мономорфизм и параметрический полиморфизм.  Читать далее Параметрический полиморфизм как он есть

Примитивы и generic’и в Scala

Когда я только знакомился со Scala, я был впечатлён тем, что ребятки разрешили проблему с поддержкой примитивов в generic’ах, или параметризированных типах, как их здесь называют. Это то, чего в Java очень не хватало. Недавно я заинтересовался деталями реализации, как конкретно это работает. И тут мне открылось страшное. Читать далее Примитивы и generic’и в Scala