Data notes – Telegram
Data notes
46 subscribers
59 photos
5 videos
2 files
122 links
My data science notes
Download Telegram
Долгое время удивлялся, почему мне попадается так мало проектов, где по полной используется sklearn.Pipeline. Под этим я имею в виду не игрушечные примеры из 2-3 шагов, где первый PCA или OHE, а второй - логрег или random forest, а нормальный пайплайн из десятка шагов с отбором и преобразованием признаков из реальных задач, например, шаг, где детектятся группы сильно кореллирующих фичей, затем из каждой группы оставляется только одна, самая сильная. Или, когда на этапе моделирования катбустом мы делаем несколько итераций с отбрасыванием фичей с нулевой значимостью. Мы итак делаем эти шаги, так почему бы не сделать их частью пайплайна? Да, стандартные решения из sklearn вряд ли подойдут, поэтому круто научиться их делать самому. Собрал все свои кастомные трансформеры, совместимые с sklearn.Pipeline, положил их в репу и описал в заметке, думаю, будет полезно (ссылка на репу)
👍1🔥1
Оставлю это здесь как кандидата для следующей книги на прочтение Causal Inference for The Brave and True
👍1
Forwarded from Data Secrets
… однако, несмотря на все вышесказанное, сегодня все взгляды обращены на другого игрока👇

Nvidia только что стала самой дорогой компанией на планете, обогнав Microsoft. Сейчас капитализация компании составляет 3,3 триллиона долларов.

Напоминаем, что после презентации Apple Nvidia оттеснили на третье место, но выход нового Nemotron 4 все резко изменил.
Please open Telegram to view this post
VIEW IN TELEGRAM
Не самые стандартные вопросы по классическому МЛ, которые попадались на собесах за последнее время:

- Почему не стоит в проде использовать RandomForest из sklearn? Какие есть альтернативы, если все-таки нужнен именно RandomForest?
- Как вычислить уверенность RandomForest в прогнозе при решении задачи регрессии?
- Как меняются bias и variance в RandomForest при увеличении числа деревьев? А в GBDT?
- В чем принципиальное отличие логрега из statsmodels и из sklearn?
- В чем различия между дискриминативными и генеративными моделями? (речь про классический МЛ)
- Чем обусловлена разная форма распределения скоров LogisticRegression , SVC, RandomForest?
- Почему нейросети могут генерировать признаки автоматически, а GBDT - нет?
- Какие преимущества дает знание второй производной от функции потерь в GBDT?
- Для чего (и в каких случаях) необходима калибровка ответов бинарного классификатора? А когда можно обойтись без нее?
Еще вопросики по Python:
- Когда GIL не помеха для multithreading?
- В чем разница между multithreading и async? А что у них общего?
- Как так получилось, что в Python есть GIL, который создает ограничения при работе с multithreading, когда в других языках, например, C#, многопоточность спокойно работает безо всяких GIL?
- Приведите известные примеры применения множественного наследования
- Про ускорение вычислений. Что такое numba, когда она может помочь ускорить выполнение кода, а когда нет? Аналогичный вопрос про Cython.
- Приведите примеры из Ваших проектов, где примененялись декораторы и генераторы. Как связаны генераторы и async?
- Какие объекты Python хранятся в стеке (stack), а какие - в куче (heap)?
Стало попадаться много высказываний вроде "ах, вот N лет назад чтобы устроиться в ДС/МЛ достаточно было сказать, что умеешь писать фит-предикт в ноутбучке и тебе апплодировали стоя и брали на работу с огромной зарплатой. А вот сейчас с джунов три шкуры на собеседованиях дерут, на которые еще и не пробиться никак сквозь тысячи откликов."

Вспомнил, как я искал свою первую работу в сфере в 2016-17 годах. На тот момент диплом, основанный на решении задачи из реальной жизни с помощью МЛ (прогнозирование стоимости ремонта оборудования) был уже фактически написан и оставалась только формальная защита, что сильно пригодилось при обсуждении опыта и навыков на собесах.

Из фейлов - общение с tutu.ru на джуна-аналитика. Вопросы по основам SQL, которые зашли, а затем последовала задача, где нужно было определить оптимальное кол-во СМС-напоминалок клиенту, чтобы он продолжил покупку билетов на сайте, если он вдруг забросил процесс по каким-то причинам. Наивно верящий тогда в то, что МЛ - это серебрянная пуля, я начал бормотать что-то про выборку, которую нам надо собрать, пробовать разное кол-во СМС ну и так далее. Естественно, решение было гораздо проще. Справедливый отказ как итог.

Из успехов - мой тогдашний шеф зареферил меня в известный рекламный холдинг на data scientist intern. Они только начали набирать команду, в которой еще никого не было, но главное, что они точно знали, какие задачи нужно было решать и кто именно им нужен, что далеко не всегда верно даже сегодня!
Собственно, собес:
- Две задачи по терверу, одна из которых нередко попадается и сейчас. Вторая на смесь комбинаторики с тервером на расчет агрегированных показателей ТВ охватов. Простой вариант затащил, а сложный - облом, причем как оказалось потом, эту задачу они сами не могли решить за вменяемое время (спойлер: потом мне ее как раз и дали в течение первых месяцев)
- Кодинг на бумаге: обход бинарного дерева в глубину. Кажется ерундой, но позиция стажерская да и без подготовки далеко не все мидлы осилят (сужу по опыту собесов уже со стороны собеседующего)
- Поскольку питона тогда в отделе еще и в помине не было, основным языком разработки был C# и требовалось знать и его, чтобы в первое время интегрировать наработки в существующую систему. C# на тот момент я уже год как изучал в универе, поэтому здесь тоже все было ок
- Вопросы по дипломному проекту. Как собирал данные, как строил модель, как валидировал и как это потом можно будет внедрить. Не очень-то отличается от того, что спрашивают сегодня, а это, еще раз напомню, стажерская позиция.
- Какие задачи интересны, чем хотелось бы заниматься .. бихейв. Здесь тоже сошлись

В итоге проработал в этой компании больше 3 лет и очень благодарен людям за наставничество.
Leetcode for ML

Super neat set of machine learning coding challenges.

It could be useful to prep for an exam or ML interview.

Link

Navigational hashtags: #armknowledgesharing #armsites
General hashtags: #ml #dl #machinelearning #deeplearning
Все наслышаны с избытком про LLM и про NVIDIA, которая прославилась беспрецендентным ростом благодаря продаже чипов, своебразных "лопат" для бигтехов, разрабатывающих AI. Этот факт подсвечивает проблему монополии на рынке чипов. Но есть еще ряд компаний, не столь популярных, но играющих не менее важную роль в этом процессе. И если у NVIDIA есть более-менее достойные конкуренты, то вот среди производителей чипов рынок производителей еще уже. Самих по себе производителей чипов в мире много, но здесь речь именно о самых передовых чипах с техпроцессом <10 нМ - именно они используются для AI и в современных компьютерах и смартфонах. Так вот дело в том, что компания TSMC производит большую часть таких чипов, и именно от нее почти полностью зависят Apple и NVIDIA (Apple когда-то делала свои чипы на заводах Samsung, но поскольку это прямые конкуренты на рынке смартфонов, то было решено перенести производство на TSMC). TSMC удивительная компания, которую называют "странообразующим" предприятием для Тайвани. У TSMC положение не только монопольное, но еще довольно уязвимое: мало того что Китай постоянно угрожает Тайвани войной, так еще и сам остров Тайвань находится в сесмоопасной зоне и землятресения там не редкость. Понятно, что у TSMC есть заводы и в других странах, но они производят менее современные чипы. Так что если с TSMC что случится, то последствия для мировой экономики будут катастрофическими. Рекомендую посмотреть вот этот видос про TSMC.

Но и TSMC в свою очередь находится в зависимости от одной малоизвестной компании - нидерландской ASML, которая произвоизводит литографические машины, которые и создают "рисунок" из транзисторов на кристалле. И здесь ситуация аналогичная самой TSMC: производителей литографов в мире много, но вот для самых передовых чипов здесь ASML монополист. Эти машины - настоящее инженерное чудо (рекомендую вот это видео про ASML): тысячи уникальных компонентов, миллиарды долларов инвестиций в исследования и десятки лет разработок, причем при поддержке со стороны мировых производителей электроники, которые между собой конкурируют - неудивительно, что такая компания будет уникальной. Так что если с ней что-то произойдет, то TSMC останется без средств производства, ну и далее - те же последствия. Так что весь технологический мир сегодня буквально зависит от этих двух компаний.
👍1
Write faster Python code, and ship your code faster

Faster and more memory efficient data
- Articles: Learn how to speed up your code and reduce memory usage.
- Products: Observability and profiling tools to help you identify bottlenecks in your code.

Docker packaging for Python
- Articles: Learn how to package your Python application for production.
- Products: Educational books and pre-written software templates.

Navigational hashtags: #armknowledgesharing #armsites
General hashtags: #python #development #docker
1 сентября... 20 лет назад я стал студентом МАИ, 10 лет назад - студентом МГУ. В этот раз похвастаться чем-то похожим, не могу😁
🔥1😁1
AWS based risk engine (part 1)

Наконец-то с коллегами осуществили вывод в прод написанного за 5 месяцев с нуля risk engine (не знаю точного перевода на русский, но среди русскоговорящих коллег мы называем это “риск-движок”) для нигерийского финтеха.

Что это такое и для чего нужно?
Risk engine - это совокупность скоринговых моделей, антифрод моделей и правил (они называются policies или по-нашему “политики”), которые в определенной последовательности обрабатывают заявки клиентов на выдачу кредитов и принимают решение о выдаче, а также сроке и процентной ставке, если решение о выдаче положительное.

Как это работает?
Клиент отправляет заявку на кредит через мобильное приложение или сайт, по предоставленной клиентом информации запрашивается его кредитная история из БКИ, обогащается данными с его мобильного устройства, дополнительно запрашиваются данные из баз о мошенниках и из прочих источников. Все эти данные идут на вход риск-движка. Сначала он поочередно опрашивает антифрод модели, которые определяют вероятность мошенничества, затем скоринговые модели, которые прогнозируют вероятность невозврата кредита. Ответы от моделей используются политиками (которые представляют собой около сотни правил вроде “если возраст < 25 лет, то ставку нужно поднять” и т.д.) для принятия решения о выдаче. Решение отдается в бэкенд, и далее уже запускается механизм выдачи кредита или информирования об отказе.

Как это работало до нас?
Использовалась кастомная платформа (примеры: раз, два). Они все как один заявляют, что если вы дадите им ведро денег, то они вам все настроят один раз, а дальше вы будете как в зерокодинге соединять квадратики стрелочками, ничего программировать не надо, и никакие дорогостоящие инженеры вам не понадобятся! Как оно оказалось на самом деле? Комментировать особо не стану, легко можно догадаться, что почти так же, как и с зерокодингом:) Упомяну лишь, что задеплоить простой логрег на десяток фичей занимало до 2 недель. Зато без дорогих инженеров!
1👍1
AWS based risk engine (part 2)

Что сделали?


- За основу взяли AWS Step functions (SF), на которые идеально ложится логика работы движка, по сути это граф или блок-схема, состоящая из логических блоков. Словами эти блоки можно описать так:
Возьми входной джейсон. Если такая заявка уже была, то сходи в S3 за ее логами и верни как ответ. Если нет, то вызови скоринговую модель, затем антифрод модель передай ответы в политики. Выполни цепочку из политик (последняя из них собирает решения всех предыдущих блоков и принимает решение). Залогируй ответ и отдай его бэкенду.

- Каждый блок SF может быть lambda (политики и простые модели), sagemaker endpoint (модели посложнее), внешнее API (запросы внешних данных) или тоже SF, которые в свою очередь состоят из аналогичных элементов.

- На этапе прототипирования, когда нужно было доказать руководству жизнеспособность этого решения, эти блоки создавались вручную через AWS консоль. Но, понятное дело, что далеко так не уйдешь. Поэтому для промышленного решения после одобрения все блоки прописывали в CloudFormation (амазоновский аналог Terraform), для создания однотипных блоков вроде лямбд взяли jinja, настроили CI/CD и тесты.
👍1
AWS based risk engine (part 3)

Результаты?

- Сокращение инфраструктурных затрат почти в 20 раз! Serverless решает, когда вам не нужно что-то эдакое, где AWS упирается в потолок возможностей.
- Выкатка новой модели - 1 час вместо недели. Да, для этого нужен дорогостоящий инженер. Но зато только один, и платить нужно только за один его час, а не за неделю:)
- Возможность мгновенно развернуть несколько независимых контуров (по сути копий движка), обычно это dev, stage, prod.
- Возможности масштабирования, задеплоить можно хоть сотню моделей
- Тесты, которые спасают от сердечных приступов при выкатке в прод

Недостатки есть?

Конечно, я же не продаю вам коробочки со стрелками за ведро денег :)

- AWS Step functions имеет лимит на размер входного джейсона в 256Кб, что не так уж много, поэтому много данных передать таким способом не получится.
- Пока не знаем, как подружить Grafana с CloudWatch (это встроенный сервис логирования в AWS), а мониторинг очень нужен. Ну и встроенный в Sagemaker мониторинг моделей уж очень убогий.
- Графы в Step functions описываются своим собственным языком, который очень далек от идеала и можно провести часы, роясь в доке, чтобы вкурить, что не так. И да, ChatGPT вам тут не сильно поможет, т.к. на этом языке не так много всего в мире написано.

Скоро выложим статью с подробностями.
👍1🔥1
Любопытная статья (сорри, пэйволл) про добавление монотонных ограничений в бустинговые модели. Показан пример с ценами на недвижку, где по балльной оценке ее "состояния" от 1 до 10 и цене, за которую ее агентство изначально покупало, строится модель оценки цены, за которую ее можно перепродать. Логично, что конечная цена должна монотонно зависеть и от начальной цены и от состояния, но из-за шума в данных и небольшой выборки эти правила могут нарушаться при обучении модели. Тогда можно добавить искусственные ограничения на монотонность, что при фикс начальной цене, конечная цена монотонно растет при росте начальной цены, что звучит вплоне логично. Т.е. мы как бы искуственно добавляем наши доменные знания в модель, которые она может и не "добыть" исключительно из данных, если их немного и/или они некачественные.

Другой пример, с которым лично столкнулся недавно. В кредитном скоринге обычно участвует доход заемщика (опустим сейчас детали, как именно он может быть получен, когда заемщик в анкете врет). Модель показала, что с ростом доходов надежность заемщика сначала растет, но потом неожиданно начинает снижаться, что странно. Продакт, принимающий модель, указал на эту проблему и обоснованно потребовал переделать модель так, чтобы с ростом дохода благонадежность тоже монотонно росла. Но как быть, если модель - лог рег, основанный на биннинге + WOE? Оказывается, либа для биннинга, которую недавно обсуждали, например тут, тоже так умеет! Для этого нужно поставить нужное значение параметра monotonic_trend , тогда вещ фича будет разбита на интервалы так, что средний таргет изменяется монотонно, без максимумов/минимумов где-то посередине
👍2🔥2
Forwarded from New Yorko Times (Yury Kashnitsky)
Ссылки после стрима
#career #interviews

Что, вроде неплохо зашло? Если что-то еще упустили - пишите в коменты. Может, еще соберемся. Можно для diversity и стартаперов позвать (Бориса без пхд уже звали).

Во флудливом чатике streamyard было и что-то полезное. Кроме кеков, из-за которых ведущем было сложно держать щи ровно.

- Лучший источник для ml system design, на мой взгляд. Дается структура и много типичных примеров. Еще был совет читать блоги компаний, особенно перед собесом с одной из компаний, ведущих неплохие блоги

- методичка Бориса о собесах

- SWE interviews at Meta

тут расписывал про ресурсы, которые мне помогли в долгом забеге по собесам

- Хороший ютуб канал для бихейва - A life engineered

- мне очень помогли два канала экс-рекрутеров гугла: Jeff Sipe и Erika Gemzer. Все про бихейв + у Джеффа есть плэйлист про переговоры

- Книга System Design Interview от Alex Xu - это классика. У него же недавно появилась про ML system design. Не читал, но если она хоть чуть-чуть похожа на System design, то это 🔥

- настольная книга карьеристов: Rise. (do better, look better, connect better). Много про менторство, личный бренд (в правильном смысле слова) и нетворкинг

- еще Таня развернула мысль про поведенческие собесы в этом посте.

Насчет записи стрима: файлик есть, а времени и желания монтировать - нет. Ставьте звёздочки, если нужна запись - подумаем 😀
Please open Telegram to view this post
VIEW IN TELEGRAM
Женя - очень крутой лидер, именно с ним мы последние полгода делали риск-движок для нигерийского банка, о котором я упоминал выше. И, в отличие от меня, он в Нигерии прям живет, и в этом подкасте рассказывает много интересного не только про рабочие будни, но и про жизнь в этой стране, о которой мы, выходцы из стран СНГ, практически ничего не знаем.

Эксклюзивный контент!
1
RM_DS_position.pdf
87.4 KB
Ищем в наш нигерийский банк DS с уклоном в риск-аналитику.

Задачи - развивать риск-движок, "пополнять" его новыми моделями, интегрировать новые истоники данных и многое другое.
Подойдет тем, кто хочет в перспективе выйти на международный рынок труда, освоить "мировые" облачные технологии (AWS) и при этом работать на удаленке из РФ. Год назад здесь не было буквально ничего, так что работать еще есть над чем, многое предстоит сделать с нуля.
Точно не подойдет, если вы привыкли, что все данные разложены по полочкам, все процессы выстроены и каждый занимается только своими задачами. Плюс много общения с нигерийцами, что требует много усилий и терпения.

Писать в личку.
👍3
Простая на первый взгляд задачка
👍2