Дата канальи — про «специалистов» в данных / ML / AI
5.52K subscribers
217 photos
7 videos
12 files
201 links
Корпжиза аналитиков и DS. Если хотите анонимно поделиться историей на широкий круг -- го в личку @NikitaZelinskiy, аналогично по остальным вопросам
Download Telegram
#кейсы #ML
Видел в одном канале канальи-манагера пафосные рассуждения, что любого сотрудника можно оценить по масштабу последствий от ошибочно принятого этим сотрудником решения. Как обычно отвечу кейсом.

Так сложилось, что я работал в структурах где цена ошибки высока, и соотношение контролирующих и проверяющих к непосредственно делающим сильно больше двух.
Однажды нас с коллегой вызывают в переговорку – там сидят эдакий проверяющий эксперт и его начальник.

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

В ответ коллега набросал нехитрый скриптец вроде тех что ниже
Начальник извинился и агрессивного дурачка уволили 🙌

Но мораль истории не в том как сравнивать распределения (я думаю, вы в курсе давно).
Не стоит переоценивать влияние стечения обстоятельств и приписывать только себе как заслуги так и провалы.

PS: кстати, с тестами Колмогорова-Смирнова или PSI тоже стоит обращаться внимательно, прикладываю ссылку на исследование стат свойств PSI https://scholarworks.wmich.edu/cgi/viewcontent.cgi?article=4249&context=dissertations
👍6
#кейсы #ML
Если каунты плохие, то бывают фичи и пострашнее. Есть такая неблагодарная задача – цену на недвижимость предсказывать. В будущее. Если бы без него – то базовая эвристика это среднее / медиана цены за квадрат в аналогичных квартирах, которые находятся по соседству, сверху уже можно накручивать все что в голову взбредет.

Однако когда хотим прогноз в будущее на 3 (!) года, все гораздо сложнее – квартиры в цене растут по-разному. В одну светлую мысль голову пришла мысль предсказать цену, определить по рынку дециль, в который квартира попала в своем сегменте, и использовать его как фичу при прогнозе цены в будущее. Нам так понравилось, что и для оюъектов-аналогов мы стали использовать децили.

Чуете подвох? Вот и мы не почуяли. А он есть – крайние децили оказались не сильно стабильные во времени и тут уже пришел черед каналий-аналитиков указать на кейсы нарушений бизнес-логики.
👍31
Вот так вот, сидишь , никого не трогаешь — а потом тебе в эфире рассказывают о твоих достижениях, а ты ни сном не духом
🔥51
#кейсы #ML
ID как фичи 🤮
Не буду сегодня вдаваться в избитую тему, расскажу лучше про очень простой кейс. Видите график?

Это временной ряд числа записей через одну электронную систему в сервис (так как данные полностью синтетические – назовем это записями москвичей в поликлиники).

Судя по картинке, предсказывать число записей в будущем не должно быть сложно? Или нет? Почему он растет?
Базовая гипотеза – не все поликлиники сразу подключили к системе, давайте глянем на график подключения: Вроде похожи.

Отчего же модели не получаются?
Здесь произошел момент, который я так люблю 😎 – семеро каналий-аналитиков и DS пробуют саримы и прочие навороченные модели, пыхтят и мучаются пару недель.
А я пошел строить число ID на дату, и выглядело оно так:

Слили две базы! И у примерно 3 млн москвичей тоже появилась возможность записываться)
Теперь же понятно, где ограничить трейн для модели? )
🔥9
#кейсы

случайно удалил, восстанавливаю:
Манагерский кейс
Как-то встречаю в курилке пару тех лидов и они дружно жалуются что не могут ничего делать руками – в их продукты командировали каналью-скрама и все время встречи отнимают. А сколько встреч в день в среднем? – ну две-три. Пинаю скрама чтобы обсчитала (и объясняю методологию – включать во время встречи еще полчаса после нее на то, чтобы врубиться что происходит) – бодро докладывает что встречи занимают только (!) 9-10% рабочего времени.
Примерный календарь слева

Пришлось проводить работу с PO, CPO, Scrum и прочими на тему что если между встречами час – то ничего закодить не успеешь и для человека, работающего головой а не только лишь ртом (то есть того кто учит модели и пишет код) такой календарь превращается в тот что справа.

И я таки тоже потратил полчаса чтобы объяснить как быть – до обеда дать людям спокойно кодить (0 встреч), после обеда – встречи. Или наоборот , главное чтобы минимум 4 часа подряд было на работу каждый день
Мораль: от перемены мест слагаемых сумма меняется еще как. И особенности психики человека игнорировать нельзя.
9👍7💯4
#ML

Продолжая тему данных или почему мучения каналий из прошлого поста были направсны.
Всем подписчикам знакома картинка с пандой из статьи десятилетней давности Яна Goodfellow на ICLR’15 с примером, показывающим, что если добавлять малые, но не случайные, возмущения к картинке с пандой, можно получить картинку-объект, на котором модель будет ошибаться и называть панду гиббоном. Такие объекты называются adversarial examples и чаще всего причиной их существования является underfitting моделей – слишкому уж они линейны в смысле разделяющей поверхности.

Так вот, эти adversarial examples устойчивы к добавлению случайного шума и, более того, они частично сохраняются даже при смене типов модели! 😱😱😱 (см картинку из другой его статьи тех же времен).

Если смена моделей и их тюнинг становятся похожими на перемещение кроватей в борделе – надо таки глянуть в датасет, для этого, правда, нужно обладать фантазией и кругозором.
В эпоху трансформеров, llm, агентов, канальи стали забывать формулу shit in == shit out 💩. И этому есть и организационные причины, и инженерные, о чем и поговорим дальше.
👍8
Вместо подготовки к сессии ребята из вышки и других вузов в субботу (!) пришли на ML-тренировку Kaggle, которую ведёт самый солнечный и открытый DS которого я знаю — тим лид МТС Аналитики Саша Киреев.

Прошел год как мы с ВШЭ запустили эту активность, и тренировки вели , кроме Саши, еще 2 GM и 3 мастера , участники уже завоевывали и бронзу и серебро (!) в соревнованиях.

Так что велком — будем рады вас видеть , анонсы публикуем здесь https://t.iss.one/+RWc7IMQxR5djZmNi
10👍5
#кейсы

Часто в компаниях функции Data Science и управление данными разделены.
К чему это приводит? DS вынуждены либо обосновывать и “заказывать” поставки, либо смириться и работать с тем, что есть (а про это мы поговорили в посте с пандой).

По поводу заказывать – самая драматичная история у меня была когда я полгода связывал бухгалтерские полупроводки в реплике одной большой системы – ибо в одной крупной компании коллеги, которые отвечали за репликацию данных, решили что связочная таблица не “бизнес-значима” и вычеркнули ее из заявки на поставку 3000+ таблиц той системы (видимо сэкономив оч много денег 🤡), скромно об этом никому не сказав. Самое печальное в этой истории, что больше трех лет ушло чтобы донести канальям-манагерам зачем нужна связочная таблица, а потом еще два года, чтобы она попала в очередь на поставку.

Второй подход, часто встречающийся в российских компаниях – (ceo)vp-feature-engineering. Классическое “жираф большой, ему видней” на каких фичах DS-ам модели строить 🤡. Приводит к тем самым каунтам в широких витринах, часто еще в каком-нибудь гениальном разрезе – типа числа продаж ватных палочек в штуках помесячно в ЦФО.

Выход – стройте фичасторы, офферсторы и эмбеддингсторы, требуйте логировать все обо всем, проактивно просвещайте каналий-манагеров и коллег, делитесь на внутренних митапах наработками, агрегируйте потребности в данных источников и эскалируйте при любом сопротивлении.
12👍2
У вас был кейс, когда в обученную модель подавали фичи не в той последовательности и это аффектило результат? (понятно, что именованные фичи в каком порядке не подавай будет норм)
Anonymous Poll
62%
Да, осечка вышла
38%
Нет, всегда четко деплою модели
#кейсы #ML
Хотел рассказать вам о кейсе когда я очень долго смотрел в одну точку, а Senior, который перепутал последовательность фичей модели на инференсе (все мы бунтовали против пандаса и старались стать поближе к нампаю), думал в этот момент стоит или нет вызывать мне психиатричку.
Но поделившись этой историей с парой приятелей-ds выяснил, что и у них такое бывало.
итак, 58/42 в пользу людей против роботов ) что ж, придется несколько постов с ошибками чуть посложнее сделать )
Раз уж зашла речь об экономии. Экономить память -- хорошо, экономить на спичках -- плохо. Один молодой DS ставил модель в пром и искренне пытался экономить. Одна из фичей у него была -- размер баннера, и он для нее выбрал тип
np.uint8

Как думаете, что произошло с баннером высотой 400 пикселов? 🙈
Кстати
np.uint8(400)

может кинуть ворнинг, а может и нет, а вот
np.array(400).astype(np.uint8)

точно отработает.
PS: с мидлами такие оказии тоже бывают, а заметить такую ошибку со стороны непросто.
🙏5🫡4
#кейсы

Печально, когда среды разработки и прода различаются, в таком случае когда есть тест-среда, аналогичная проду, становится хотя бы можно поймать ошибку. Тестировал я как-то свою модель разметки транзакций по классам, обычный xgboost, запускаю в spark.

На 1 млрд размеченных транзакций 16 млн (1,6%) расхождений со средой разработки. Версии спарков вроде не отличаются, версии питонячьих библиотек нет, да и парсель вроде одинаковый. Имеет длиииинное название со сложной версией в конце вроде /opt/cloudera/parcels/………/spark_2.3_prod_a_v9.
В итоге достаточно оказалось сделать

ls -al

чтобы увидеть что spark_2.3_prod_a_v9 это симлинка, которая на одной среде ведет на spark_2.3_prod_a_v9_p02, а на второй на spark_2.3_prod_a_v9_p13. Очень хотелось кричать 😱

Указание спарку вместо симлинки хардового пути оказалось спасением.
Но, как выяснилось позже, весьма обманчивым – перезапустив модель на 15 млрд транзакций оказалось около полумиллиона расхождений!

В препроцессинге применялись регулярки, хранившиеся в словарях, а кто сказал что по ним можно итерироваться?! Последовательное применение регулярок если порядок не гарантируется – не гарантирует стабильный результат, и этому учат на первом уроке по python.
Чудес в ml не бывает.
Хотя вру, и об этом будет следующая история, которую прислал подписчик. Кстати, если знаете релевантные истории — велком! Авторство ваше конечно же укажу
4😱1
В четверг проводим вебинар перед запуском курса ML в бизнесе. В курсе разбираем с Виктором топ 7 задач по экономическому эффекту от ML для бизнеса
3