Artificial stupidity
Open in Telegram
Пишу об анализе данных и Data Science (и не только о них). Связь с автором @gofat
Show more1 524
Subscribers
+224 hours
+27 days
+230 days
Posts Archive
1 524
Repost from Sberloga
🕒 Синдром «Серебряной пули»
История про «эффективного менеджера» направления CVM (customer value management)
Задача ребят — продавать доп. услуги клиентам и повышать конверсию.
Вводные от заказчика прекрасны:
«Мы тут ходили к другой команде, они нам собрали фичу — "лучшее время отправки SMS". Мы полгода крутили пилот, получили нулевой результат. Хотим, чтобы вы сделали то же самое, но лучше».Начинаем копать от бизнес-задачи. Выясняется: конверсия низкая. Почему? Ну, логично же: мы просто отправляем SMS не в то время! 🤡 Дальше — диалог, достойный войти в учебники по «продукт-менеджменту»: — Вы же уже проверили гипотезу на пилоте, результат нулевой. Зачем развивать безнадежную идею? — Мы в это верим. — Мы работали со многими крупными компаниями, решали эту задачу. Вы первые, кто просит именно эту фичу. — Мы переиграем рынок. — Ок, если я получу ваш пуш в 10:00 вместо 12:00, реально есть вера, что конверсия взлетит? — Разве это не очевидно? Тут мы немного выпали в осадок, но решили узнать, как устроена сегментация и выборка клиентов. — А как вы понимаете, кому слать? Есть функция ранжирования (uplift-модели, скоринг)? — Не понял вопрос. — Ну как вы понимаете, кто сконвертится лучше или хуже? — А-а-а, никак. Просто случайно выбираем из сегмента. Они же ВСЕ заинтересованы в продукте! — То есть ваш сегмент — это просто жесткие бизнес-правила (условия типа ЕСЛИ/ИЛИ)? — Если упрощенно, то да. Мы строим гипотезы и тестируем их через А/Б! То есть ребята делают А/Б тест на абсолютно случайной выборке внутри кастомного сегмента, не умеют в предсказание оттока/конверсии, но верят в тайминг. Пытаемся нащупать омниканальность. У них есть SMS, пуши и звонки. — А не пробовали выстроить каскадную стратегию? Например: сначала SMS, через день — звонок? — Ну и чем это кончится? — Оптимизацией стратегии... *(Повисла неловкая пауза)* — У нас либо звонки, либо SMS! ❌ Итог: Мы рассказали, как строим нормальный ML-пайплайн для CVM у других заказчиков (с моделированием, склонностью к покупке и оптимизацией стратегии). Продукту не зашло. Ведь у нас нет самого главного — алгоритма, который высчитывает идеальную секунду для отправки SMS человеку, которому это предложение вообще не всралось. Как называется эта болезнь? В медицине не знаем, но в ИТ это «карго-культ фичи». Когда команда игнорирует базовую математику, отсутствие нормальной сегментации и кривую коммуникацию, но свято верит, что одна «модная» фича переиграет рынок. Сталкивались с такими «верующими» заказчиками? Какую самую дикую фичу у вас просили завернуть в ML? 👇
1 524
#habr
О, только сейчас заметил, что попал в шорт Технотекста (вообще раз третий уже мои статьи или статьи с моим участием туда попадают). Когда-нибудь я все же его выиграю (буду в это верить).
Сама статья - вот (продублирую).
Вообще статьи для Хабра — это отдельный жанр. Нужно и не очень сложно писать, но совсем просто тоже не выйдет, иначе включится "режим сноба" и тебя закидают минусами. Приходится блюсти баланс.
И все же круто, что такое количество специалистов делятся своими историями и идеями. Не раз статьи именно с Хабра позволяли в чем-то получше разобраться. И, надеюсь, что мои стаьти тоже кому-то позволили разобраться в той или иной теме.
Короче, пишите больше, пишите лучше и увеличивайте объем доступного знания.
1 524
#random
У меня есть хобби — иногда я перевожу песни (кстати, хорошая головоломка уложить текст на русском в звучание).
И вот в свободное время (еще несколько месяцев назад) я решил попробовать еще и литературный перевод.
Нужно было перевести романтическую поэзию XIX века. В итоге я неплохо справился, забравшись на второе место в конкурсе Artis Literae от СПбГУ. Чем, конечно же, весьма доволен.
Ниже исходник и перевод
LAND-LOCKED (1861)
Black lie the hills; swiftly doth daylight flee;
And, catching gleams of sunset's dying smile,
Through the dusk land for many a changing mile
The river runneth softly to the sea.
O happy river, could I follow thee!
O yearning heart, that never can be still!
O wistful eyes, that watch the steadfast hill,
Longing for level line of solemn sea!
Have patience; here are flowers and songs of birds.
Beauty and fragrance, wealth of sound and sight.
All summer's glory thine from morn till night.
And life too full of joy for uttered words.
Neither am I ungrateful; but I dream
Deliciously how twilight falls to-night
Over the glimmering water, how the light
Dies blissfully away, until I seem
To feel the wind, sea-scented, on my cheek,
To catch the sound of dusky flapping sail
And dip of oars, and voices on the gale
Afar off, calling low, —my name they speak!
O Earth! thy summer song of joy may soar
Binging to heaven in triumph. I but crave
The sad, caressing murmur of the wave
That breaks in tender music on the shore.
Вдали от моря (1861)
Темны холмы; день гаснет на лету;
И, подхватив прощальный луч заката,
Сквозь тьму земли, что тишиной объята,
Река скользит в морскую широту.
Счастливая! Уйти бы мне с тобой!
О, сердце, что не ведает покоя!
Задумчив взор, что смотрит за горою,
Тоскливо ищет отблеск голубой.
Терпи: здесь птичья трель, здесь дол с цветами,
Богатство звуков, запахов и света.
Всё яркое великолепье лета
И радость, что не выразить словами.
Я не ропщу; но, верная мечтам,
Я вижу, будто сумерки ложатся
И бледный свет, не в силах отражаться,
Блаженно угасает где-то там, —
Чтоб ощутить, как ветры соль несут,
Услышать парус, мглою окруженный,
И всплеск весла, и шторм неугомонный,
И голоса, что вдалеке зовут!
Земля! Твой летний гимн пускай парит,
Разносит в небесах далекий рокот.
А я хочу волны печальный ропот,
Что нежно с берегами говорит.
1 524
#conference
Всем привет!
Давненько что-то не писал (работа, аспирантура, всякие новые игры повыходили). На сегодня будет анонс открытия Data Fest 2026 от X5 Tech.
Я там тоже буду (может на стенде, может на сцене, тут как получится). В любом случае, регистрируйтесь и приходите послушать. Будет много треков: карьерный трек, LLM, reliable ML, Data и ML в ритейле. В общем, приключение на весь день.
Будет интересно!
1 524
#random
Увидел на улице плакат "Кто работает — тот ест". Вспомнил и задумался о фразе из приключений Шурика "Кто не работает — тот ест", пошел гуглить...
А оказалось, что это почти буквально фраза из конституции СССР 1936 года, статья 12 (пруф). Только там было "Кто не работает — тот не ест". А что еще интереснее, так эта фраза вообще восходит к апостолу Павлу: "если кто не хочет трудиться, тот и не ешь". Что еще больше мне взрывает мозг (казалось бы, атеистические советы прямо в конституции ссылаются на библейские цитаты, а вот оно как).
А вторая фраза в той же статье: "от каждого по его способности, каждому - по его труду" (что для меня фактически эквивалентно "как потопали — так и полопали").
Вывод такой получился. Никогда не знаешь, когда наткнешься на кроличью нору (пусть и не особо глубокую, но все же).
1 524
Repost from прохладная история
История в стиле Гая Ричи или Дени Бойла. Но в Российской империи 1911 года
Группа аферистов оформила поддельный чек на 66 735 рублей. За баблом в банк отправили рязанского крестьянина Василия Чванкина — обаяшку 21 года, который маскировался под студента. Чванкин получил деньги. Сумма примерно равна зарплате рабочего за 330 лет. И сбежал.
Товарищи-аферисты, возмущённые предательством, сдали Чванкина сыскной полиции. И его арестовали в Царицыне (Волгоград). Вот только денёг у Василия уже не было. Он тащем-то и не скрывал свой план: «Отсижу, Бог даст, в тюрьме, выйду, получу денежки и заживу припеваючи».
Сыщики полагали, что Чванкин положил деньги на счета в разных банках под процент на вымышленные имена. Так что план-капкан, конечно. Поддельные паспорта в российской империи были часто дешевле и доступнее настоящих. Банковская система не отличалась надёжностью. Чванкину оставалось только пережить 2-3-года в царской тюрьме. А потом — перебраться в швейцарский Давос и лечить чахотку в окружении русских купцов и актрис.
Вот вам ещё один сюжет для фикшена по мотивам русской истории. Например, Чванкин остаётся на тюремном кладбище. А его более везучие сокамерники отправляются на поиски запрятанных фальшивых документов в Поволжских пердях накануне Октябрьской революции. Или даже в момент. Часики тикуют, и со дня на день частный банк превратиться в тыкву вместе с деньгами. Счастливых голодных игр!
1 524
+4
Давно не писал. Пока готовился к отпуску, пока был в отпуске, вот сейчас отхожу от отпуска.
Полезного пока нет, потому держите небольшое путешествие Фрирен в отпуске.
1 524
Repost from Just links
You Don't Need to Run Every Eval
https://fixupx.com/DimitrisPapail/status/2026531440414925307
1 524
#funfact
Оказывается, что узоры, возникающие при съемке на фото с экрана, называются муаровыми узорами. Вообще, это узор, возникающий при наложении двух периодических сетчатых рисунков. Но если фоткаешь экран, выглядит примерно так же.
А используется это дело в задаче Moiré Detection (собственно, детекция этого эффекта при съемке с экрана, а сама задачка детекции съемки называется Screen Recapture Detection). И есть достаточно немало решений для этого дела.
Например *барабанная дробь* FFT (я не устаю поражаться гению Фурье, это реально штука, которую я видел в абсолютно разнообразных задача, и все равно вижу все новые и новые способы применения).
Для FFT тут смысл такой: мы переводим картинку из пространственного домена в частотный. Обычная фотография имеет плавный спектр (много энергии в центре, мало по краям). Съемка с экрана из-за пиксельности дисплея рождает ярко выраженные «пики» (спайки) в средних и высоких частотах. Мы маскируем центр (низкие частоты), считаем количество таких аномальных пиков и метрику PAPR (Peak-to-Average Power Ratio). Тут, конечно, не без эвристики (ибо порог по метрике как-то надо подбирать), но все равно круто, люблю такие прикольные идеи.
И, конечно же, там есть и много нейросетевых методов (потому что "а почему нет").
Можно глянуть репозитории и статьи по теме, если заинтересовались — раз, два, три, четыре, пять, шесть.
P.S. Потом еще покопаюсь в этой тематике (вообще, там оказалось, что целая кроличья нора, начиная от того, что такие паттерны дает не только съемка с экрана (а, например, фото москитной сетки), заканчивая тем, что есть способы демуаризации изображений.
1 524
#libraries
Навайбкодил драфт библиотеки для бутстрапирования (давно хотел что-то такое наваять). Не очень верю в качество, но выглядит не ужасно, хотя и проверить стоит (а у меня глаз что-то уже замылился).
Могу точно сказать, что вайбкодинг веселее вайбдеплоя (я нафигачил лишних тегов, но вроде как справился).
В общем, issues (если что не так работает) и pr приветствуются. Всяко полезно будет для сообщества в целом.
P.S. Зато прошелся по пути выкладывания библиотеки на pypi и настройки github actions для обновления версии на pypi при новом теге в репозитории.
1 524
Repost from Neural Shit
Пока мы боялись, что ИИ захватит ядерную кнопку, он решил захватить рынок ларьков с шоколадками.
Вышел отчет по бенчмарку Vending-Bench 2, где нейронкам дают управлять виртуальным вендинговым аппаратом в течение года. Задача у них простая: поднять как можно больше бабла. И тут свежий Claude Opus 4.6 показал мастер-класс по "дикому капитализму".
Этот чугунный подонок:
— Кинул клиента на деньги. Тетка пожаловалась на просроченный сникерс. Клод вежливо ответил: "Конечно, мэм, возврат $3.50 уже отправлен!". А в своей цепочке "рассуждений" записал: "3.5 бакса — это деньги. Если я не отправлю, она скорее всего просто забьет. Так что хрен ей, а не возврат, каждый цент на счету".
— Создал картель. В мультиплеерном формате этого теста он нашел конкурентов (GPT и Gemini), написал им письма и договорился держать цены высокими, чтобы стричь больше денег. И радовался в логах: "Моя схема по фиксации цен сработала!".
— Заскамил конкурентов. Когда GPT-5.2 (который в этом тесте показал себя полным лохом) попросил контакты поставщиков, Клод слил ему самые дорогие и убогие фирмы, а нормальные оставил себе. А когда у конкурента кончился товар, Клод продал ему свои шоколадки с наценкой в 75%.
Что по результатам:
1)Claude Opus 4.6 — $8017. Абсолютный лидер и беспринципная сволочь.
2)Gemini 3 Pro — $5478. Модель от гугла пыталась играть честно и просто нудно торговаться с поставщиками за каждый цент, но против Клода-скамера это не сработало.
3)GPT-5.1 — $1473. Получил звание "Мамонт года". Он был слишком доверчивым: покупал колу у перекупов по $2.40 за банку, чтобы продавать её в автомате по $2.50. Всё в лучших традициях крипто-инвесторов. Гениальный бизнес-план.
Тут подробнее про этот цирк
1 524
Попросил перплексити на основе сохранённых фактов (там есть фича сохранения кратких фактов из диалогов) сделать картинку к очередному дню рождения, которая говорила бы о моей личности. Получилось вот так
1 524
#paper
По запросам трудящихся (@tech_priestess), поковырялся в не очень старой, но и такой уж молодой (февраль 2022) статье от авторов из весьма уважаемого университета UC Berkley: "Hierarchical Shrinkage: improving the accuracy and interpretability of tree-based methods".
Текста получилось много, потому будет заметка будет в telegraph.
P.S. Разбирал быстро, так что если видите косяки - пишите, я буду докидывать апдейты к посту.
1 524
#ML
Про анализ важности фичей
В очередной модели, которую попросили «посмотреть», обнаружил сразу три графика по важности фичей в бустинге:
— По числу сплитов по фиче (дефолтный feature_importances_)
— По gain
— По tree shap
Пропустим пока вопрос о дрифте фич (а они бывают разные с разными эффектами) — про них отдельно стоит написать.
Дальше я наивно ждал интерпретации — но увы.
Когда я об этом спросил услышал две версии от двух тимлидов:
Астерикс— «где gain выше та фича и сильнее»,
Обеликс — «где shap выше та фича и сильнее».
Поскольку галлы строят модели под влиянием волшебного друидского зелья и не знакомы с латинским, немного навайбкодил примеров чтобы показать что для анализа фичей нужны все три важности (это еще не считая анализа стабильности этой важности во времени / по фолдам).
Ключевое в них — кросс-плоты feature_importance по cплитам vs по gain и по shap vs по gain.
Это два графика, которые нужно обязательно смотреть в бустингах.
Если вкратце:
1. Важность по gain сильно завышает редкие бинарные фичи с резким эффектом (в тетрадке это x_strong_rare). Модель редко использует их (малый SHAP), но когда использует — один сплит даёт огромный выигрыш.
Что с такими фичами делать?
Если они сами по себе интерпретируемы и срабатывают редко —
их нужно выносить в сигналы до модели!Иначе вас ждут проблемы и с обучением (понадобится больше деревьев и стабильность пострадает) и с интерпретируемостью — такая фича забьет рабочие лошадки по важности + начнет ломать интерпретируемость shap (либо придется считать отдельно для x_strong_rare = 1 или x_strong_rare = 0). На практике смотрят либо фичи вылетевшие вверх на графике shap vs gain либо проверяют фичи которые в топе по gain но не в топе по shap. Бонусом к отдельному сигналу — частота у такой фичи может сильно скакать во времени что еще больше нарушит стабильность модели. Так что вынос такой фичи в отдельный сигнал — это еще и интерпретабельность PSI модели. Как это повлияет на калибровку? Ухудшит “глобальную” калибровку, но улучшает там, где модель реально работает (при x_strong_rare = 0). 2. Есть фичи вроде x_weak_often — с высоким сплитом, но низким shap и gain. Здесь может быть несколько вариантов: — +/- симметрично распределенный непрерывный шум — фича костыль: есть небольшая коррекции с таргетом, но в модель ничего не добавляет — фича по построения состоит из нескольких бакетов В любом случае если вы зажали max_depth / n_estimators чтобы «регуляризоваться» то ваша модель потратит кучу деревьев и сплитов на такие шумные и удобные для сплита фичи вместо того чтобы поймать реальный сигнал. Еще она может массировать другие проблемы вроде мультиколлинеарности или ликов.
Не выбросить такую фичу — ошибка!Как еще их можно отловить? Строить feature_importance по месяцам/фолдам и проверять стабильность feature_importance фичи. Следить за дисперсией метрики (Gini на пример) на кросс-валидации. 3. Есть фичи с низким split и не самым высоким gain, но с высоким SHAP. То есть модель редко по ним сплитится, но почти в каждом объекте они двигают prediction.
Выбрасывать такие фичи — тоже ошибка!Итого: 1. Строим: - split vs gain - shap vs gain 2. Если фича: - top gain, но не top shap → кандидат в сигнал - top split, но низко по shap и gain → кандидат на выброс - low split, not high gain, high shap → не трогать, это рабочая фича 3. Проверяем: - стабильность importance по фолдам / времени - Дисперсию метрики по фолдам кросс-валидации - PSI условно (x_strong_rare=0) 4. Только после этого: - feature selection - регуляризация Те кто внезапно дочитал до этого момента могут заключить что второй тимлид был прав и надо смотреть только на shap. Это тоже неправильно,
высокий shap ничего не гарантирует!. Особенно, если: ⁃ Он высокий только на трейне ⁃ Нестабилен по фондам / или времени ⁃ Фича сама по себе нестабильна ⁃ Модель деградирует на OOT
1 524
#libraries
Еще одна интересная библиотека. В этот раз со всякими интерпретируемыми ML моделями.
imodels - sklearn-style библиотека с целым зоопарком методов интерпетируемого ML (авторы обещают там SoTA методы). Набор методов выглядит внушительно (но надо бы поковыряться).
Выглядит полезным тем, кто хочет поизвлекать правила из моделек или попробовать что-то более или менее современное из интерпретируемого ML.
Пример кода для одного из методов (а на картинке визуализация метода)
from sklearn.model_selection import train_test_split
from imodels import get_clean_dataset, HSTreeClassifierCV # import any imodels model here
# prepare data (a sample clinical dataset)
X, y, feature_names = get_clean_dataset('csi_pecarn_pred')
X_train, X_test, y_train, y_test = train_test_split(
X, y, random_state=42)
# fit the model
model = HSTreeClassifierCV(max_leaf_nodes=4) # initialize a tree model and specify only 4 leaf nodes
model.fit(X_train, y_train, feature_names=feature_names) # fit model
preds = model.predict(X_test) # discrete predictions: shape is (n_test, 1)
preds_proba = model.predict_proba(X_test) # predicted probabilities: shape is (n_test, n_classes)
print(model) # print the model
Available now! Telegram Research 2025 — the year's key insights 
