Интересное что-то
552 subscribers
2.78K photos
253 videos
140 files
4.58K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
#algo #courses
Курс по алгоритмам на ФИВТ
#finance #economics

Хорошие материалы скорее для подготовки к консалтингу. Однако есть интересные материалы по финансам, экономике, управлению + кому интересно, есть кейсы

https://onedrive.live.com/?authkey=%21AJR5ejTqM0lYWLI&id=DDA731513E7B378C%216867&cid=DDA731513E7B378C
В этой книге содержатся простые и эффективные способы разделять само решение и его последствия, формировать стратегии для принятия более взвешенных и объективных решений с учетом прошлого и целей в будущем. Стратегии, описанные в книге, применимы и в бизнесе, и в личной жизни.
Энни Дьюк, профессиональный игрок в покер и бизнес-консультант. Окончила Колумбийский университет (Нью-Йорк, США) со степенями в области английского языка и психологии.
В 2000 году заняла 10-е место в Мировой серии покера и стала второй женщиной, занявшей такое высокое место в истории турнира. В 2004 году получила золотой браслет Мировой серии покера, заняв первое место в турнире Омаха Хай-Лоу. Преподавала в Академии Мировой серии покера, где обучала игре в покер также и знаменитостей, включая Мэтта Дэймона, Бена Аффлека, который затем выиграл 2004 California State Poker Championship. В 2010 году выиграла NBC National Heads-Up Poker Championship и стала первой и единственной женщиной-победителем в этом турнире. Соучредитель и представитель организации Epic Poker League. Соучредитель некоммерческой организации Ante Up for Africa.

1. Удачный результат не всегда означает удачное решение. Принимать решения, основываясь на одном удачном результате, неосмотрительно и опасно.

2. Любое решение — это ставка на будущее, поэтому само по себе оно не может быть верным или ошибочным. Если что-то пошло не так, это не признак нашей ошибки, это значит, что произошло событие, повлиявшее на результат.

3. Наши ставки зависят от наших убеждений. Чем вернее убеждения, тем вернее ставки. Результаты наших решений должны помогать нам менять убеждения.

4. Мы не любим менять свои убеждения. Если новая информация противоречит нашим убеждениям, мы часто ее отвергаем, уменьшая свои шансы принять качественное решение.

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

6. Мы можем учиться, изучая результаты других людей, но нам мешает предвзятость. Нам не стоит думать, что человек получил плохой результат из-за отсутствия навыков, а хороший — потому что ему повезло.

7. Мыслить ставками — значит принимать решения непредвзято, используя всю доступную информацию и свои навыки, и понимать, что на результат могут повлиять неподконтрольные нам события.

8. Мышление ставками можно развить. Для этого надо:

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

9. Научившись мыслить ставками, мы используем каждое наше решение, чтобы чему-то научиться. Негативные результаты перестают быть «плохими», превратившись в поле для исследований.

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

Thinking in Bets | Annie Duke | Talks at Google https://www.youtube.com/watch?v=uYNsSeYjkp4

Cаммари следующих книг будем выкладывать в группе VK https://vk.com/mesiconsultingclub и канале Telegram https://t.iss.one/mesiconsultingclub - читайте, где вам удобнее #mesiconsultingclubbooks
Кстати, пару лет назад записывал лекцию о том, как можно получить дифференцируемое расстояние Левенштейна (собственно, нужно просто обучить нейронку в metric learning сетинге).

Зачем это нужно: часто есть мисматч между метрикой и лоссом. Например, в задаче машинного перевода мы обычно используем cross-entropy loss, а измеряем BLEU. Почему бы сразу не учить с помощью BLEU? Не понятно, как прокинуть градиенты :(

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

Блогпост от huggingface про Reinforcement Learning from Human Feedback
Forwarded from DevFM
Индексы в PostgreSQL

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

У нас уже был заход про EXPLAIN. Теперь перейдем к более серьезным вещам, которые нужны при работе с реляционными базами, в частности, PostgreSQL — индексы.

Первая статья из цикла знакомит с особенностями применения индексов в PostgreSQL. Эти знания помогут лучше понимать и обосновывать, для чего и когда использовать индексы.

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

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

На этой статье можно не останавливаться. Далее в цикле нас знакомят с нюансами использования конкретных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.

Многие практически значимые детали, приведенные в статьях часто спрашиваются на собеседовании разработчиков уровня middle.
#skills
Forwarded from DevFM
ООП на простых примерах

В 40-минутном видео аккуратно объясняют три кита объектно-ориентированного программирования. Примеры даны на TypeScript, но понятны любому разработчику. Автор аккуратно иллюстрирует необходимость ООП, рассказывает про инкапсуляцию, наследование и полиморфизм. Покрыты даже относительно сложные вещи вроде параметрического и ad-hoc полиморфизма.

На трёх китах ООП автор не заканчивает. Вторая половина ролика повествует о композиции и агрегации на примере автомобиля с двигателем и колёсами, об абстрактных классах и интерфейсах, и даже немного о дженериках. Завершает изложение реализация паттернов Dependency Injection и Singleton. При этом Singleton во многих случаях является антипаттерном и мы не рекомендуем его применять.

Обратите внимание, как автор умело использует IDE для автогенерации сеттеров и геттеров. Не забывайте, что IDE — ваш добрый друг, который много чего умеет.

Про нюансы getattr и setattr в питоне мы делали отдельные посты.

#sudo #youtube #procode
Forwarded from Борис опять
# Минимальные знания Software Engineering для Data Scientist 2/3

## Память в Python
Читаем как Python работает с памятью, чтобы никогда больше не потеть на вопросе про GIL. По части DS позволяет лучше утилизировать железо, не делать глупостей вроде лишних копирований гигантских массивов и лучше интуитивно понимать работу кода.
Статья раз
Статья два

## HTTP
HTTP это то, на чем держится веб: когда вы открываете сайты, скачиваете датасеты, пользуетесь API. Инференс и деплой ML моделей почти всегда связан с HTTP.
Изучаем теорию:
Статья попроще
Статья подлиннее
Проходим туториал: Python’s Requests Library Guide

## Sklearn Pipelines
Sklearn Pipelines User Guide
С одной стороны без Sklearn в ML практически никуда и Pipeline это большая его киллер-фича, которая экономит уйму времени, позволяет избежать ошибок и упрощает перенос кода в продакшн. Но более важно то, что парадигма пайплайнов, то есть обработки данных через серию последовательных шагов, повсеместно встречается в ML экосистеме. Пайплайны в Sklearn это отличное введение. Познакомившись с ними будет гораздо проще осваивать популярные ML инструменты.
Для закрепления: берем ML задачу, которую решали (хоть Титаник на Kaggle) и переписываем с использованием Pipeline.

## SQL
https://sqlbolt.com/ - Проходим туториал вплоть до 12 урока.
Без SQL никуда. Чаще всего данные для моделей появляются когда мы заклинаем базы данных языком SQL.
Нас интересует все, касается запросов к существующим таблицам. Для минимального пути можно опустить все что касается вставок и создания таблиц.
Если вы хотите стать настоящим самураем SQL и быть круче большинства аналитиков, то надо взобраться на эту гору: www.sql-ex.ru

## Docker
Официальный туториал по Docker
Docker становится таким же необходимым, как Git. Позволяет паковать любой код в контейнеры, которые ведут себя как виртуальные машины, но делают это быстро. На практике это означает, что можно очень быстро разворачивать и сворачивать целые экосистемы прямо на своем ноуте. Хочешь базу данных: пара консольных команд и получаешь контейнер с базой данных. Хочешь Spark: пара команд и у тебя есть Spark. Хочешь, чтобы все это работало в продакшне так, как работает на твоем ноутбуке: легко, главное выполни на сервере ту же самую пару команд.
Для закрепления: берем любую свою программу (бонус очки: берем ML задачу из пункта про Pipeline) и делаем так, чтобы она запускалась в контейнере. Еще лучше если у вас два контейнера и один обращается к другому. Например в одном контейнере PostgreSQL с парой табличек, а в другом код, который делает запросы к базе данных.
Forwarded from Борис опять
С этими знаниями уже можно собрать рабочую схему деплоя табличной ML модели.
0. Поднимаем контейнер с базой данных.
1. На размеченных данных из бд обучаем Sklearn Pipeline, сохраняем с помощью pickle. Можно записать ее в БД, загрузить на облачное хранилище или просто сохранить на диск.
2. В контейнере для инференса периодически запускаем batch job: загрузили модель, достали из БД неразмеченные данные, сделали для них инференс, сохранили предсказания в БД.
3. Если batch job не подходит, то в контейнере для инференса запускаем API (flask, apiflask или fastapi). Принимает на вход POST запрос с json фичами примера, загружает модель, делает предикт, сохраняет пример и предсказание в БД (для дальнейшей доразметки и дообучения), возвращает предикт в виде JSON. Про API в данном гайде нет, но тоже очень полезно знать. Изучается за вечер, достаточно пройти один туториал.
Forwarded from Борис опять
# Минимальные знания Software Engineering для Data Scientist 3/3

## Map Reduce
Туториал
Чтение
Общая парадигма того, как быстро обрабатывать данные, которые не влезают в оперативную память или даже диск сервера. Не вся Биг Дата это Map Reduce. Но позволит понять основные идеи.

## Распределенные вычисления
Выбрать одно: Spark Quickstart, Dask Quickstart
Apache Spark, Dask и аналоги это инструменты, которые реализуют Map Reduce и другие парадигмы. Они делают чтобы было быстро несмотря на то, что очень много. Очень часто встречаются в требованиях на вакансии DS, MLE и не только. Apache Spark более популярный, Dask - проще и приятнее. Для ознакомления выбирайте любой.
Для закрепления: переписываем из пункта Sklearn Pipelines так, чтобы feature engineering выполнялся с помощью Spark или Dask.

## MLOps - MLFlow
Однажды люди поняли, что при создании ML проектов можно не просто творить как получится, а использовать накопленные человечеством 40+ лет знаний о разработке софта. И придумали MLOps. Это о том, как менеджерить данные, модели, эксперименты и код экспериментов. Главные компоненты MLOps: структурирование проектов, трекинг экспериментов, версионирование данных и моделей, деплой моделей. Деплой моделей мы опустим, чтобы сэкономить в голове место, потому что для минимума он не критичен. Проще всего не осваивать все по-отдельности, а разобраться в самой популярной платформе, которая их объединяет: MLFlow.

Читаем для познания основных идей:
- Версионирование данных и моделей
- Трекинг экспериментов (сразу с MLFlow примером)
Проходим туториал по MLFlow
Для закрепления: добавляем MLFlow в свой ML проект.
- Метрики эксперимента должны отправляться при обучении в MLFlow.
- После обучения модель должна сохраняться в MLFlow Model Registry.
В тему последней рекламы платных курсов по питону. Перед тем, как брать курсы, посмотрите на тонны бесплатного материала. Сможете понять, надо ли вам оно

Если нужно, я подобрал годные бесплатные материалы (курсы, книги, лекции) по питону, SQL, git, тестам, докеру и другим нужным начинающему разработчику темам