Aspiring Data Science – Telegram
Aspiring Data Science
386 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
#probabilities #outcomes #synthetic #calibration #decisionmaking #python

Зная вероятности событий, сгенерировать по ним возможные бинарные исходы тривиально. Проще всего сравнить вероятность со случайным числом из интервала [0;1], если число оказалось меньше исходной вероятности, записываем в исход 1, иначе 0.

Внезапно возникла обратная задача: мы знаем исходы (они взяты из реального процесса), но интересно, какие ground truth вероятности могли бы привести к таким исходам? Для чего это может понадобиться: я тестирую систему принятия решений по ML модели, и хочется понять границы возможностей такой связки для конкретной задачи. Допустим, нам удалось построить "идеальную" в вероятностном плане модель, т.е. прекрасно откалиброванную (раз она сказала в какие-то моменты, что вероятность положительного исхода 60%, то примерно в 60% случаев такой исход и случился) - чего тогда можно ожидать от неё в плане онлайн метрик? Понятно, что получить такую модель сложно, часто и невозможно, но нам же хочется знать, каких результатов вообще возможно достичь?

И вот тут оказалось сложнее, чем кажется. Попробуйте поставит текст на паузу и предложить решение )

На удивление, ИИ в лице Чат ГПТ оказался совершенно бессилен, и пришлось думать. (Если сможете получить от него ответ, напишите.)

@njit()
def generate_probs_from_outcomes(
outcomes: np.ndarray, chunk_size: int = 20, scale: float = 0.1, nbins: int = 10, bins_std: float = 0.1, flip_percent: float = 0.6
) -> np.ndarray:
"""Can we generate hypothetical ground truth probs knowing the outcomes in advance?
Our model probs will (hopefully) be calibrated. So, we need synthetic probs to be calibrated, too. With some degree of fitness.
We also need to cover broad range of probs.
So, how to achieve this?

0) if flip_percent is specified, for a random portion of data zeroes and ones are flipped. this will lower ROC AUC.
1) we can work with small random chunks/subsets of data
2) for every chunk, its real freq is computed.
3) for every observation, 'exact' prob is drawn from some distribution (uniform or, say, gaussian) with center in real freq.
then, if bins_std is specified, constant bin noise is applied to all observations of the chunk.

final result is clipped to [0,1]
"""
n = len(outcomes)
indices = np.arange(n)
np.random.shuffle(indices)

probs = np.empty(n, dtype=np.float32)
bin_offsets = (np.random.random(size=nbins) - 0.5) * bins_std

if flip_percent:
# flip some bits to worsen our so far perfect predictive power
flip_size = int(n * flip_percent)
if flip_size:
outcomes = outcomes.copy()
flip_indices = np.random.choice(indices, size=flip_size)
outcomes[flip_indices] = 1 - outcomes[flip_indices]

l = 0 # left border
for idx in range(n // chunk_size): # traverse randomly selected chunks/subsets of original data
r = (idx + 1) * chunk_size # right border
freq = outcomes[l:r].mean() # find real event occuring frequency in current chunk of observation

# add pregenerated offset for particular bin
bin_idx = int(freq * nbins)
freq = freq + bin_offsets[bin_idx]

# add small symmetric random noise. it must be higher when freq approaches [0;1] borders.
probs[l:r] = freq + (np.random.random(size=chunk_size) - 0.5) * scale * np.abs(freq - 0.5)

l = r

return np.clip(probs, 0.0, 1.0)
#trading #books

Со многими рекомендациями согласен, кроме Карвера/Винса/Кауфман (хотя The Leverage Space Trading Model не читал, кажется любопытной). Элерса надо бы прочесть.

И надо будет найти Permutation and Randomization Tests for Trading System Development, Statistically Sound Indicators For Financial Market Prediction, The Universal Tactics of Successful Trend Trading, Cybernetic Trading Strategies.

"I love money and I have no shame" понравилось ))

https://www.youtube.com/watch?v=ftFptCxm5ZU
Forwarded from Записки Ппилифа (Ppilif)
https://habr.com/ru/companies/X5Tech/articles/768008/

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

А на самом деле нет. Вся эконометрика — это про АБ-тестирование. Все “современные” методы вроде DnD и CUPED это ребрендинг линейной регрессии. Я довольно давно топлю за то, что про линейную регрессию надо рассказывать именно с точки зрения АБ-тестов, а не каких-нибудь экономических моделей. В прошлом семестре даже лекцию про это собрал.

Ребята из X5 тоже понимают, что линейная регрессия это про АБ и раскатили у себя целый пайплайн для тестов. В статейке подробное описание, а бонусом в комментах срач с Валерой Бабушкиным (я не участвовал).

Статья очень хороша.
🔥1
#db #duckdb #columnar #featurestore

Что интересно, запросы слать в duckdb можно через psycopg, и используется PostgreSQL диалект. Ингест из файлов, судя по презенташке, очень быстрый. Поддерживает сжатие. Колоночная СУБД. Может читать в сессии питона напрямую из фреймов пандас и массивов нампай. Кандидат на featurestore?

https://www.youtube.com/watch?v=q_SKaOeRiOI
#визуализация
Странно, что я ещё не упоминал здесь такой интересный ресурс. Можно использовать для освежения в памяти тем по ML. Полно интересных рисунков по каждой теме. Есть три блока: ML, ML-Engineering, проективная геометрия, по DL совсем чуть-чуть и ресурс не обновляется с начала года.
https://illustrated-machine-learning.github.io/
👍1
#games #returntomoria #fantasy #tolkien

Не удержался, купил игрушку ) Надо же поддержать разработчиков. Теперь буду днём трейдить, а ночью отстраивать Морию!

https://www.youtube.com/watch?v=75nbOL7GOPE
❤‍🔥3
Forwarded from Записки Ппилифа (Ppilif)
Про speech2text и скорость смены чудес

Никогда раньше особо не работал со звуком. Максимум — дёргал ручку яндексового speech2text, чтобы вытащить из видосов текст и прогнать его через свои языковые модели.

Появилась задачка — прогнать много гигов записей сапорта через speech2text. Стал искать какую-нибудь SOTA в опенсорсе и узнал про whisper от OpenAI.

Запустил на тестовой пачке аудио мелкую модель, она выдала какой-то странный текст о том, кто первый пойдёт в ванную. Прослушал аудиозапись, там недозвон и нет ничего кроме гудков. Я не понял прикола и стал искать баг в коде, мб что-то закешировалось при загрузке. А потом кааааак понял.

Прослушал запись ещё раз и услышал еле заметные голоса на заднем фоне, которые поймал микрофон сапорта. Люди о чём-то разговаривали. Моё ухо не поймало, зато DL-модель прекрасно поймала этот разговор и транскрибировала его. Ещё и в качестве бонуса на лету перевела его с локального языка на английский.

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

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

Как впрочем и многие другие модели, выложенные в опенсорс. Мы вообще пока не осознаём, что будущее наступило и как-то слишком дежурно рассуждаем про новые технологии вроде DALLE и ChatGPT. Артур Кларк говорил, что

Любая достаточно развитая технология неотличима от магии.

Хочется поправить великого и воткнуть в середину цитаты лишнее слово:

Любая достаточно развитая технология поначалу неотличима от магии.

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

И такая фигня происходит абсолютно со всеми сферами нашей жизни. Папа записывал мне фильмы на VHS-касcеты. В старшей школе я покупал кино на дисках, в вузе качал с торентов и перекидывал на флешку. Сегодня у ноутбуков нет разъема для дисков. Уже и флэшка - древность. Повсюду облака. За 30 лет несколько технологий для передачи информации сменили друг-друга.

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

Моменты такого прорезния, как моё вчерашние офигивание от транскрибации, из-за этого становятся особенно ценными.
🔥1
#politics #versions

В двойника пуйла я не очень верил, уж слишком большим талантом он должен быть, но разница в поведении действительно была слишком сильной (то 15 метровые столы, карантин перед встречами для всех, то странные "выходы в народ"; часы не на той руке; странные профессии из прошлого, которых вроде не т в официальной биографиии). У меня 3 версии, объясняющие такую разницу, в порядке убывания вероятности: 1) умственные отклонения индивида (типа раздвоения личности) 2) намеренная провокация/троллинг 3) ну и остаётся невероятно талантливый двойник. Профессор часто давал политические прогнозы и часто ошибался, но в то же время он и связанный с ним источник не раз давали и уникальную информацию, которая впоследствии подтверждалась. Из крупных: атака на Украину в 2023-м (за 3 месяца), военная мобилизация сентября 2023-го, (за полгода), отдача Карабаха Турции и Азербайджану (за неделю до события, после визита Эрдогана). Так что к его прогнозам я отношусь скептически, но с уважением. Если мы в течение месяца увидим плавное назначение нового премьер-министра (предположительно героя сельского хозяйства), это будет ещё одно свидетельство в пользу версии Соловья. В любом случае, мы скоро узнаем правду. Ведь действительно, смерть Жирика скрывали, помните, как ЛДПР отпёрдывались, мол, рукопожатие крепкое, работает с документами, немного просто приболел? А потом раз, и оказалось, что всё-таки умер.

https://www.youtube.com/watch?v=eW_KlByc5Yc
🤡3🤮1🤣1
#ads #office #honesty #showcasing #microsoft

"Word lets you build nicely formatted documents. Excel lets you analyze data using powerful spreadsheets, formulas, and graphs. PowerPoint lets you thrill and amaze your management with presentations containing annoying animations and irritating sound effects. Access can build a database for tracking bug reports that are never cleared, and Outlook lets you schedule the thirteen weekly progress meetings where you must explain why you aren't getting any work done."
#poetry #staubkind #9lives

In a different existence, long ago,
I was a somber count, my heart aglow,
No tenderness within, my soul was tough,
A man whose wrath, you dared not huff.

In another lifetime, I was a pauper, poor,
A thousand loves I knew, yet hearts, no more,
I lay flowers on my grave, for deaths I've known,
A lingering dream, in silence, softly sown.

In some distant realm, I was an astral knight,
Gazing proudly upon our celestial height,
In an alternate reality, a gigolo's role I'd play,
But true love eludes me in this earthly day.

оригинал:

In einem andren Leben
War ich ein schwarzer Graf
Ich kannte kein Erbarmen
Ein Mann, den man nicht reizen darf

In einem andren Leben
War ich ein Bettelmann
Ich kannte Tausend Lieber
Von den ich nie ein Herz gewann

Ich lege Blumen auf mein Grab
An all den Toden die ich starb
Blieb nur ein Traum, der nie vergeht

In einem andren Leben
War ich ein Astronaut
Auf unser Paradies
Hab ich voll Stolz herab geschaut

In einem andren Leben
War ich ein Gigolo
Doch fand ich wahre Liebe
In diesem Leben nirgendwo

https://www.youtube.com/watch?v=8E06CNwzgGc
#книга
Simon J.D. Prince "Understanding Deep Learning"
Незаслуженно малоизвестная книга. Но это самое лучшее, что в последние годы писалось по глубокому обучению. Материал очень современный (GPT3, диффузионные модели, графовые сети есть). Повествование с основ и до этических проблем, очень широкий охват. Текст и рисунки авторские. Достаточно подробная библиография. Ну разве что примеров кода нет (книга теоретическая). Настоятельно рекомендую!
https://udlbook.github.io/udlbook/
#geology #astronomy

"В недавнем прошлом учёные уже проводили расчёты, которые могли бы подсказать происхождение двух гигантских аномалий на стыке ядра Земли и нижних слоёв её мантии. Ещё в 80-х годах прошлого столетия геофизики с удивлением выяснили, что в глубинах нашей планеты находятся два гигантских континента протяжённостью несколько тысяч километров каждый. На это указали сейсмические волны, которые в этих загадочных областях перемещались иначе, чем в окружающей мантии. Эти «объекты» назвали крупными областями с низкой скоростью сдвига (LLSVP, Large low-shear-velocity provinces) и стали разрабатывать гипотезы об их образовании.

Параллельно шло изучение Луны, благо к тому времени «Аполлоны» доставили на Землю образцы с её поверхности. Выяснилось, что Луна и земные мантийные породы имеют одинаковое происхождение и состав, что заставило задуматься об ударном появлении Луны. Расчёты показали, что Луна могла образоваться около 4,5 млрд лет назад при падении на Землю планеты размером с Марс. Поиски других остатков этой гипотетической планеты, которой дали имя Тейя, не увенчались успехом. Их не было в околоземном пространстве и в главном поясе астероидов.

Учёные предположили, что остатки Тейи погрузились в недра тогда ещё расплавленной Земли. Новое и более подробное моделирование, проведённое под руководством учёных из Калтеха, показало, что области LLSVP с большой вероятностью — это действительно остатки Тейи. Они сохранили свою монолитную структуры благодаря тому, что нижний мантийный слой Земли не был достаточно горячим, чтобы произошло смешивание, и остатки успели кристаллизоваться. Благодаря этому мы сегодня можем увидеть их в процессе сейсмических исследований.

Появление в недрах Земли таких гигантских инородных вкраплений очевидным образом повлияло на все последующие геологические процессы на нашей планете. Учёным ещё предстоит оценить это влияние на раннюю эволюцию Земли."

https://youtu.be/k4dQW_fUgik
👍1
#aws

Облачный провайдер Amazon Web Services (AWS) объявил о запуске новой модели потребления EC2 Capacity Blocks for ML, предназначенной для предприятий, желающих зарезервировать доступ к ускорителям вычислений для обработки кратковременных рабочих нагрузок ИИ.

Решение Amazon EC2 Capacity Blocks for ML позволяет клиентам зарезервировать доступ к «сотням» ускорителей NVIDIA H100 в кластерах EC2 UltraClusters, которые предназначены для высокопроизводительных рабочих нагрузок машинного обучения. Клиенты просто указывают желаемый размер кластера, дату начала и окончания доступа. Таким образом повышается предсказуемость доступности ИИ-ресурсов и в то же время нет необходимости оплачивать доступ к мощностям, когда они не используются. AWS тоже в выигрыше, поскольку такой подход позволяет более полно использовать имеющиеся ресурсы.

https://servernews.ru/1095352
#scipy #global #optimization #diogenes

Продолжаю работать над отборщиком признаков Диоген.

Столкнулcя с плохой работой методов глобальной оптимизации.

Кто работал с численной оптимизацией в сайпай, подскажите, что не так делаю. Пока кажется, что глобальная оптимизация из scipy не способна найти экстремум даже относительно простой гладкой функции 1 переменного. Хотелось бы что-то для поиска экстремума функции с очень высокой стоимостью оценки, в идеале когда можно задать бюджет поиска.

Попробую, наверное, запилить универсальный модуль с 3 опциями: гауссов процесс, бустинг с квантильной регрессей, и случайный поиск. Для первых двух будет какой-то начальный эквидистантный сэмплинг, чтоб было на чём учиться. Ну и плюс варианты выбора следующего кандидата, конечно же: expected improvement, ucb, etc.

Просто очень странно, что такого пакета ещё нет готовенького.

https://github.com/scipy/scipy/issues/19467
🥴1
#math #fun

Учитель алгебры очень расстроился, когда нашёл свою жену с двумя неизвестными.
❤‍🔥2