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
Разные области математики в представлении бота Kandinsky 2:

- Mathematical analysis
- Linear algebra
- Abstract algebra
- Topology
- Geometry
- Mathematical statistics and probability
- Number theory
- Equations of Mathematical Physics
- Category theory
- Foundations of Mathematics (4k).

P.S. Чтобы не получать в генерации обложки учебников, можно добавить модификатор стиля (4k) или переформулировать запрос
2❤‍🔥1🆒1
Forwarded from Борис опять
#работа
Посмотрел резюме, которые нам прислали через линкдин (не отсюда) на вакансию Data Engineer. И это фестиваль кринжа.

Мое любимое из разных резюме:
* Резюме на 12 страниц
* Парень, который вставил в резюме сканы шести своих бангладешских дипломов
* Ярко синий текст на белом фоне
* Прошлое место работы: клерк в банке
* Прошлое место работы: студент магистратуры
* Прошлое место работы: настраивал Майкрософт ворд и все такое
* Всратые пережатые сотней шакалов фотки
* Таблица на половину страницы, показывающая уровень знания четырёх языков в разрезе райтинг, листенинг, спикинг
* Простыня текста на половину первой и половину второй страницы
* Никакой верстки, просто ворд документ с текстом сплошняком сверху вниз. 3 страницы
* Резюме из конструкторов резюме с кучей разноцветных иконок
* Резюме файлом в формате .docx

Я и не предполагал, что обычное резюме из одной страницы, сверстанное в латехе, это такое большое преимущество. Среди всей пачки из 30+ резюме таких нашлось три штуки
👍2
#ml #metrics #brier

Как известно, оценка Бриера (Брайера?) для бинарного классификатора представляет собой по сути среднеквадратическую ошибку между реальными исходами и предсказанными вероятностями. В теории это число между 0 и 1, где 0 означает идеальную калибрацию (из всех событий, предсказанных с вероятностью 25%, реализовались точно 25%, и тд). Я на эту метрику в работе часто смотрю, т.к. откалиброванность модельки очень важна, особенно когда бизнес-решения принимаются на вероятностях. И вот сегодня узнал нечто новое. Задумался, а чего вообще можно ожидать от модели, идеально предсказывающей вероятности, в терминах оценки Бриера. Давайте для этого скрафтим реализации миллиона событий, следующие заранее известным вероятностям:

probs = np.random.uniform(size=1000_000)
realizations = np.random.uniform(size=len(probs))
realizations = (realizations < probs).astype(np.int8)

В теории, у нас теперь есть массив единичек и нулей realizations, порождённый "истинными" вероятностями probs. Если ситуацию перевернуть, рассмотреть probs как вероятности, предсказанные моделью машинного обучения, а realizations как то, что мы реально пронаблюдали в жизни, то подобная точность должна быть мечтой любого ML-щика!
1
↑ Какой же будет оценка Бриера для такой отличной модели? Что выдаст brier_score_loss(realizations, probs)?
Anonymous Quiz
0%
0
38%
0.166
25%
0.5
38%
1
А что, если реализации никак не связаны с вероятностями? realizations = (realizations < 0.5).astype(np.int8), какой будет оценка Бриера?
Anonymous Quiz
13%
1
63%
0.5
13%
0.33
13%
0
Ну и последнее. Что за оценку получит "антимодель", которая прогнозирует, что событие не случится, а оно обычно случается, и наоброт? realizations = (realizations > probs).astype(np.int8)
Anonymous Quiz
33%
1
22%
0.99
44%
0.5
0%
0
#astronomy #surdin

Достойный человек этот Сурдин. Профессионал, хороший лектор, действительно любит астрономию. Против войны. Я часто ловлю себя на мысли, какой бы это классный был руководитель Роскосмоса, вместо очередного путинского вора. С Сурдиным мы бы уже давно полетели на Энцелад и построили базы на Луне и Марсе. На его "Неземной подкаст" можно подписаться на бусти, от 200 р./мес. Я вот подписался, чтобы поддержать его просветительские выпуски. Там пока всего 188 человек. Кто со мной?
PS. Ого ) Спасибо тем, кто подписался, приятно.
1
#ml #applied #dyakonov #pzad

На 16:48 про генерацию некоррелирующих признаков MAD из двух видов средних подумалось провести мини-исследование: нагенерить много случайных 1d массивов с разным распределением, возможно, взять какие-то реальные датасеты, для них всех рассчитать все возможные комбинации таких средних и MAD, посмотреть, какие наиболее некоррелированы (в линейном смысле и смысле взаимной информации) с остальными того же датасета. Возможно, даже потестировать предсказательную силу таких фичей (если составить искусственные зависимости) по сравнению со случайной подвыборкой. Не знаю, можно ли тут ожидать вообще какого-то стабильного обобщения, но если такое вдруг обнаружится, это позволит в реальной работе быстро проверять экзотические "киллер фичи", до которых в конкретном проекте и руки бы не дошли.. Хм, тогда уже и комбинации математических операций полезные исследовать на 18:40.

https://www.youtube.com/watch?v=kOaMvRo2YPI
Серый АВ - что делать дальше?

Недавно АВ важной для меня фичи покрасился в серый. Эмоционально я прям расстроился. Если у вас тоже такое бывает, то помните о 4 важных вещах:

1. Проверьте ваш MDE и процедуру тестирования
Убедитесь, что нет багов, и вы можете детектить достаточно маленькие эффекты (MDE - minimum detectable effect). Часто разумный эффект на крупной метрике задетектить статистически невозможно - переходите к прокси. Например, от общей конверсии к конверсии определенного шага воронки

2. Около 70% АВ тестов серые, и это нормально
В тестах мы проверяем гипотезы. И какими бы гениальными вы ни были, 2 из 3 ваших невероятных идей ничего не принесут в бизнес-метриках - это неприятно, но факт. Поэтому лучше учиться быстро проверять много гипотез, а не делать ставку на одну крупную

3. Серый АВ дает знание о том, чего делать дальше НЕ нужно
Знать, что точно не работает - прекрасно. Поэтому обычно из пула гипотез (про персональные рекомендации, способы оплаты и тп) тестируют самую сильную. И если она не работает - возможно, вам нужно копать в другую сторону

4. А что еще хорошего приносит ваша фича?
Может быть, технической стабильности - теперь не нужно дежурить по ночам? Или лучше RPS? Или прозрачность для бизнеса? В денежных метриках это не измерить, но такие вещи тоже очень важны


В общем, если ваш АВ вдруг стал серым, вспомните про эти 4 пункта,
выдохните, и продолжайте тестировать новые гипотезы 😉
#ml #classificaion #probabilistic #brierscore

Возвращаясь к недавнему посту про оценку Бриера, суммаризирую:

1) Бриер=0 достигается не просто когда вероятности идеально откалиброваны. Для "нулевых" примеров предсказанные вероятности должны быть строго равны нулю, для "единичных" - единице.
2) в реальной задаче Бриер даже очень хорошей модели никогда не достигнет 0
3) более того, в каждой задаче своё распределение таргета, соответственно, минимально и максимально достижимые Бриер скоры РАЗНЫЕ. Например, для упоминавшегося выше равномерного распределения, Бриер идеальной модели стремится к 0.166, нерелевантной модели к 0.333, "антимодели" к 0.5
4) вещи становятся страннее, когда меняется распределение таргета. для "ненормального" и уж точно не равномерного таргета с картинки в комментах Бриер идеальной модели 0.221, Бриер перемешанных примеров 0.238, Бриер DummyClassifier (всегда предсказывает фактическую частоту класса 1) 0.230.

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

Вывод: в каждом случае оценивайте границы оценок Бриера, хотя бы косвенными методами, прежде чем принимать решение о качестве модели.
👍21
#ml #python #earlystoppping

У нас недавно было обсуждение ранней остановки для sklearn-овских моделей, напрямую ES не поддерживающих. Я не смог нагуглить никакого готового решения, что кажется крайне странным для мирового DS сообщества. Кто попробует написать такую универсальную ES-обёртку? Если эстиматор поддерживает parial_fit, надо юзать его, если нет, пересоздавать с разными niters/nestimators. для validation set желательно передавать не только fraction:float, но и shuffle:bool. И хорошо бы сделать сравнение vanilla/ES-powered на паре задач. Ведь по сути отстутствие ES, как мне кажется, убивает применимость многих классов моделей в реальной работе. Я не помню, чтобы я где-то использовал SVM или леса в чистом виде из-за боязни оверфита. Для GradientBoostingClassifier ES соизволили сделать, но без shuffle, т.е., с временными рядами такой ES будет неприменим.