Aspiring Data Science – Telegram
Aspiring Data Science
385 subscribers
465 photos
12 videos
12 files
2.15K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
#music #sistersofmercy #gothic #darkwave

мрак тлен я прошептала в трубку
а ты переспросил марк твен
да да марк твен конечно милый
том сойер гекельберри финн

https://www.youtube.com/watch?v=sZs0VDI-CxM
1
🎉 Результаты конкурса «Лучший частный инвестор — 2023»

Мероприятие проводилось с 5 октября по 21 декабря. Участники должны были достичь максимальной доходности, используя инструменты фондового и срочного рынков Московской биржи.

В карточках показываем факты о прошедшем ЛЧИ и его итоги. Доходности, стартовые суммы и сделки каждого участника размещены по ссылке.

Поздравляем победителей!

Пресс-релиз на сайте Московской биржи
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥1
#programming #perfection #decisionmaking

Бывает, хочешь закодить всё грамотно, сразу с учётом будущего роста функциональности, продумываешь архитектуру, варианты использования решения, но проект затягивается, накапливается усталость, теряется интерес. В таких случаях, как обнаружил по своему опыту, лучше отложить попытки улучшательства на будущее и вывести в бой хотя бы минимально рабочую версию, которая уже будет решать бизнес-задачу лучше, чем решалось до неё.

Так у меня было с ансамблированием в самописной системе mlops: я добавил простые ансамбли, стал добавлять стэкинг, там возникли сложности с оверфитом, я увидел, что процесс затягивается, ну и зарелизил хотя бы простые ансамбли. И вот уже полгода пользуюсь, и это приносит пользу. А иначе бы застрял неизвестно насколько.

Так и сейчас с отборщиком признаков, Диогеном. Модуль wrappers потребовал решать задачу одномерной целочисленной оптимизации, я сначала потестил распространённые пакеты типа optuna/skopt/hyperopt, потом написал свой модуль с реализациями гауссова процесса и прям совсем своей идеей, квантильной регрессией+эвристиками. И вот уже 2 месяца я туплю с этим модулем. Работает он по виду хорошо, но до тестирования и уж тем более до реального внедрения никак не доведу.

И вот смотрю я на свои задачи по этому модулю: то мне статические графики не нравятся в matplotlib и я хочу пределать в живые plotly, то мне не нравится, что оптимизатор не поддерживает категориальные входы и вообще множественные входы, и я хочу переделать структуры данных. То я придрался, что сортировки там неоптимальны, хотя по итогам профилирования они ни на что не влияют. А так как в планах создание своего полноценного оптимизатора гиперпараметров, однобокость текущей версии вносит когнитивынй диссонанс и не позволяет продвигаться работе - думаю над оптимальным способом унификации и прочими философскими вещами, в то время как у меня есть прямо сейчас реальные ML проекты, которым очень нужен хороший feature selector.

Ну и вот сегодня додумался, это же как раз тот случай, когда надо выводить в бой уже написанное решение, и не тупить над бесконечными улучшениями ) Завидую я, в общем, программистам, которые с лёгким сердцем особо не думая могут херак, херак, и в production. Так что не затягивайте проекты, релизьте вовремя.
👍1
Теперь понятно, почему вакансии у HR закрываются с трудом.
2
#astronomy #starship #musk

"Маск подтвердил, что готов уничтожить ещё несколько ракет, если это ускорит ввод Starship в эксплуатацию. «Всегда лучше пожертвовать оборудованием, чем временем. Время, так сказать, — единственная настоящая валюта», — добавил бизнесмен.

В ходе третьего испытательного полёта SpaceX намеревается произвести запуск двигателей Starship и успешно вернуть корабль с орбиты. Компания также хочет провести первые испытания технологии перекачки топлива, проверить люк полезной нагрузки и механизм развёртывания спутников Starlink. Полёт запланирован на февраль — сейчас ожидается разрешение Федерального управления гражданской авиации США (FAA)."

https://3dnews.ru/1098726/ilon-mask-raskril-prichinu-vzriva-vtorogo-starship-on-okazalsya-slishkom-lyogkim
Минутка английского. Как читается слово indictment (обвинение)?
Anonymous Quiz
34%
Индайтмент
0%
Индэйтмент
42%
Индиктмент
24%
Индикмент
#featureselection #vorontsov

Понравилась эвристика маятника для жадного алгоритма Add-Del. Надо будет реализовать в Диогене.

Также очень интересен полный перебор DFS+отсечение методом ветвей и границ. Они тоже выигрывают от начального упорядочивания факторов по силе связи с таргетом.

Про BFS/МГУА крайне интересно. Вот кто из вас до этого видоса знал про философский принцип неокончательных решений Габора? Я помню, в 2000-х прям этот МГУА и Ивахненко были на слуху. Я тогда не очень понимал, что это вообще, но термин запомнился. Похоже, у Мастерса этот подход называется Forward Selection Preserving Subsets.

В разделе про генетик Константин Вячеславович вообще классно пошутил ) Что-то я вдруг подумал, генетические алгоритмы включают только "положительные" операции: скрещивание, мутация. Но ведь в живой природе популяция регулярно просеивается хищниками, конкурентами, природными катастрофами, в результате которых выживают особи пропорционально их приспособленности. Нет ли смысла в операторе "смерти", который случайным образом берёт микрогруппу особей и убивает 1-2 с наименьшей приспособленностью (ну типа, погнались за стаей зебр львы, 2 самых слабых поймали)?

Кто мне подскажет, математики кайфуют от вставки рукописных букв из неведомых алфавитов, да? ) Чем зло#бучее завитушки птичьего языка, тем страшнее выглядят формулы для непосвящённых, а работа в целом считается профессиональнее? )

https://www.youtube.com/watch?v=n4qKbFd25Sk
🤩1
#ui #gmail #google

В очередной раз заметил, как же по-конченому сделана работа с письмами в веб-интерфейсе gmail. По умолчанию у них включается conversation view, который не просто показывает всю цепочку переписки с адресатом (что было бы удобно), но и за каким-то лешим при ответе цитирует вообще всю историю переписки с данным адресатом. Причём удалить цитирование невозможно. И эти полотна текста реально туда-сюда отсылаются. Найти, где эта херня отключается - задача не из простых. Что это, тупость, безразличие, или саботаж разработчиков?
#ai #handwriting #ocr

"Команде специалистов Университета искусственного интеллекта имени Мухаммеда бен Заида в ОАЭ, как сообщает Bloomberg, уже удалось создать профильную нейросеть и опробовать её в деле. Эту разработку авторам даже удалось запатентовать в юрисдикции США. Пока использование данной нейросети сторонними клиентами не подразумевается, и авторы разработки уже выражают опасения по поводу способности недобросовестных пользователей применять её во вред обществу.

Прежде чем этот инструмент начнёт распространяться, по мнению разработчиков, необходимо создать защитные механизмы, предотвращающие его некорректное с этической точки зрения применение. «Это всё равно что создать антивирус для вируса», — пояснили представители университета. Подобные соображения не мешают создателям нейросети планировать её коммерческое применение в течение ближайших месяцев, они уже ищут партнёров для реализации сопутствующего потенциала данной технологии. Помимо прочего, такая система могла бы распознавать рукописный текст — например, для обработки записей в историях болезни пациентов. На генерируемых нейросетью рукописях можно было бы обучать другие подобные системы. Пока нейросеть способна распознавать и генерировать рукописный текст на английском и французском языках, но в перспективе разработчики хотели бы добавить к ним и арабский."

https://3dnews.ru/1098802/iskusstvenniy-intellekt-skoro-smoget-pravdopodobno-imitirovat-pocherk-cheloveka
3
#featureselection #hpo #hpt #global #optimization #mbho

Недавно я начал тестирование библиотек глобальной оптимизации для одномерной задачи отбора признаков.
Сформировал датасет, проверил самые известные в ds тусовке optuna, skopt, hyperopt (см. по тэгу #featureselection).
Ну и, наконец, представляю своей алгоритм. Назван он Model-based heuristic optimization (MBHO), и по сути похож на байесовскую оптимизацию гауссовым процессом.

Только гауссов процесс я заменил на более универсальный бустинг (опционально с квантилями), а поиск кандидатов ведётся вместо Expected Improvement, Probability of improvement, Upper Confidence Bound такими достаточно простыми эвристиками:

1) на каждом шаге с опр. вероятностью выбирается режим, exploration или exploitation
2) в exploration мы рекомендуем проверить самые неисследованные точки - лежащие дальше всего от уже проверенных, + имеющие самую высокую неопределённость в случае использования квантилей
3) в exploitation режиме мы строим для всей области поиска прогноз, и исследуем точку с самым высоким прогнозом. если такая уже проверена, дополнительно учитываем расстояния от уже проверенных точек и неопределённости.
4) есть ещё несколько мелких опций

Почему гауссов процесс меня не устроил? Да он тупо зачастую плохо приближает данные, и качество решения, как следствие, отвратительное (пример будет в комментах). + долго работает.
Какие есть ещё фишки:

1) закодил 4 метода определения "затравочных" кандидатов, Random, Equidistant, Fibonacci, ReversedFibonacci. В какой-то мере это аналоги soblo/lhe и прочего из skopt.
2) есть возможность строить визуализацию поиска. видно, какие точки уже проверены, как к ним фиттится модель и какие даёт прогнозы, как рассчиталась перспективность каждого кандидата в зависимости от настроек, и какой кандидат в итоге выбран.

К результатам. В бенче я в основном смотрел на процент случаев, когда оптимизатор нашёл истинный максимум.
Для 20 итераций лидером была - optuna/tpe с 69%, для 50 - hyperopt/atpe с 81%. skopt этих показателей не смог превысить.

Показатели моего MBHO: 20 итераций - 70%, 50 итераций - 100%. По времени медленнее оптуны, но быстрее hyperopt/skopt. То есть моё решение победило 3 известные либы оптимизации в одномерном случае.

Да, можно возразить, что я заточил алгоритм под свои конкретные задачи, или вообще старался выставить оппонентов в невыгодном свете, но
1) старался возможности конкурентов исследовать по-полной
2) у них же тоже было тестирование на профильных задачах, им никто не мешал тоже тестироваться на одномерном случае
3) у моего алгоритма достаточно много параметров, и он как раз-таки остаётся недоисследованным. все вычисления я провёл навскидку с просто "разумными" значениями, наверняка можно натюнить лучшее время работы и точность.

Ну и моя основная мотивация, зачем я всё это начинал: в предварительном тестировании встроенные важности признаков бустингов себя хорошо показали, FS по таким важностям разумно делать только с RFECV, но в sklearn RFECV делает полный перебор (да и не работает с категориями), а на практике у меня десятки тысяч признаков и большие датасеты.
Получается, благодаря новому MBHO оптимизатору я смогу просчитывать лишь небольшой % от признаков и при этом находить глобально оптимальные сочетания.

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

Реализация MBHO заняла ~700 строк кода, поддерживается максимизация и минимизация (в отличие от hyperopt, где надо извращаться с негацией функции). Правда, нет асинхронности и многопоточности.
🔥5
Forwarded from asisakov
Готовил для вас материал по PSI и VIF. И нашел интересную статью с валидацией ML моделей. Решил немного ее пересказать и добавить свое видение.

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

А почему нам недостаточно простой оценки на отложенных выборках?

1. Распределение данных может кардинально измениться от того,что было на тренировке (например, статистически значимо изменилась доля целевых случаев)
2. Оценкой общих метрик работы модели невозможно оценить изменение отдельных входных признаков, их релевантность модели. Также сложно хочется видеть результаты на корнер-кейсах.
3. Есть вероятность попадания в финальный список фичей признака, не соответствующего логике бизнеса.

Что же нам важно оценивать на валидации?

1. В принципе скор модели и его стабильность. Он не должен быть ниже (выше) определенного порога, и при этом должен быть стабильным нна разных выборках (TRAIN, OUT-OF-SAMPLE, OUT-OF-TIME)
2. Стабильность признаков. Здесь как раз и применяется критерий PSI для поиска таких моментов, чтобы у нас вдруг фичи на трейне и OOT не отличались своим распределением. Иначе модель училась на одних входах, а предсказывает на других.
3. Калибровка вероятностей на выходе моделей. Буквально можно сформулировать как: mean(y') ~ mean(y). Нужно для понимания того, что модель в среднем формирует те же вероятности наступления целевых событий
4. В статье еще написано про Концентрацию. Это очень близко к пункту с калибровкой, поэтому я бы этот пункт переформулировал это как некоторый баланс по попаданию в бакеты по вероятностям.
Ещё можно добавить посегментный анализ предиктов модели, но это не обязательно для валидации, хотя очень важно для аналитики.

Там внутри есть классная табличка по тестам.

Это были количественные тесты. Существуют ещё качественные, которые связаны с разработкой именно модели. Тут условно валидатору надо попробовать опровергнуть дизайн модели и вообще ее обучение и выбор признаков, но при этом предложить лучший подход на тех же данных. Если это удаётся, то модель возвращают в разработку. Если нет, то считайте модель прошла валидацию (очевидно, что это не гарантирует наилучший результат). Помимо этого конечно же должна быть качественная документация и воспроизводимость обучения модели.

Интересно описан подход с Model Performance Predictor, однако я особо эти штуки не делал, хотя по логике это примерно как дополнительно обучить модель GARCH, чтобы оценить волатильность метрик в будущем.

В заключение есть хорошая табличка с типами тестов, применимых для валидации.

В целом, статья неплохая

#ml