Интересное что-то
553 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
#ml #statistics #bayesian #courses

Максим Кочуров на экономе МГУ этой осенью читал магистерский курс “Practical Bayes” (прикладные Байесовские методы). Рассказывал там про подходы к моделированию, аб тестирование, иерархичные модели, Гауссовские процессы, оценку consumer lifetime моделей. Теперь у курса есть обновляемая страничка с презентациями

https://ferrine.github.io/pages/practical-bayes/
Forwarded from Записки MLEшника (Egor)
Прочитал книжку Чистый Python

Выбор на нее пал из-за высоких оценок, и потому что коллеги устроили ее совместное чтение. На них я не пошел, но интерес возник 👀

Книга родилась из серии публикаций автора в твитере. Этакий сборник фишек и советов. Кстати, у него прикольный блог.

На мой взгляд, фраза "Тонкости программирования для профи" не подходит книге. Я ее интерпретирую так: если ты профи, то сейчас узнаешь тонкости программирования. А по факту тут скорее: прочтешь и узнаешь тонкости, которые знают профи.

Мне понравилось, что после каждой главы есть ключевые выводы, где прямо говорят - если А, то используй list, если B, то deque. Люблю когда прямо и по делу. Потом можно использовать как справочник.

В общем, если вы понимаете декораторы, итераторы, распаковку и использовали defaultdict, то я бы прошел мимо. А если нет, то вполне хорошая книга, чтобы познакомиться без глубокого погружения в детали.
Forwarded from Градиентное погружение (Максим Герасимов)
💻 Russian Texts Statistics (ruts)

👉 Библиотека разработанная для извлечения признаков из произвольного текста. Работает на русском, но ничего не мешает применить для другого языка.

В комплект входят:
• Базовые статистики (количество слогов, букв, пробелов и тд)
• Метрики удобочитаемости (уже писал о них)
• Метрики лексического разнообразия (Индекс Симпсона и тд)
• Морфологические статистики

Визуализации:
— Закон Ципфа
— Литературная дактилоскопия
— Дерево слов

Подойдет в качестве экстрактора для фича инжиниринга к обычному tf-idf или эмбеддингам.

github
#interview #courses

Нашёл в одном из комментариев что-то интересное для DS и MLE

https://github.com/Extremesarova/data_science_resources
Forwarded from Борис опять
# Минимальные знания Software Engineering для Data Scientist 1/3

## Git
Интерактивный туториал
Краткий курс по Git от Github
Git (или другая VCS) каждый день использует любой адекватный программист. Стоит инвестировать время не только в заучивание трех команд, а в понимание принципа работы. К счастью основы изучаются за пару вечеров, а большего и не надо. DS должно быть не сложно понять идею, ведь про графы и деревья вы наверное слышали. Только не используйте никаких GUI клиентов для Git по крайней мере пока учитесь! Например надо понимать разницу между git add и git commit, но GUI клиенты часто заменяют их одной кнопкой.

## Linux
The Linux command line for beginners
Если вы работаете из под Windows, то как можно быстрее бросайте это дело (если у вас уже Mac или Linux, то этот пункт можете пропустить). Считайте, что Python разработки под Windows не бывает. Не умея пользоваться линуксом вы беспомощны. Как слезть с иглы: поставьте себе Ubuntu и работайте только из под нее, а Windows оставьте для игр. Я бы не советовал пользоваться WSL, потому что это полумера, но и это подойдет как крайний вариант. Главное, чтобы вас не пугали фразы уровня “зайди на VPS по ssh по ключу, прокинь симлинк для этой штуки.” Иначе вы в большинстве команд будете тем парнем, которому надо постоянно помогать.

## Библиотеки и зависимости в Python
Python virtual environments: A Primer
Обязательное чтение про менеджмент библиотек и зависимостей в Python. Вы должны быть способны разрабатывать несколько DS проектов с конфликтующими зависимостями (один требует pytorch v1.12, второй v1.4) без использования Anaconda. Так не обязательно делать, но вы должны быть способны. Для вас не должно быть проблемой сделать так, чтобы проект запускался с одинаковыми версиями библиотек у вас, у вашего коллеги и на сервере.

## Практический Python
The Hitchiker’s Guide to Python
Чтение о практическом применении Python. Бесплатная, короткая и по делу написанная книга.

Особенное внимание:
Глава про структуру кода
Содержит очень важную информацию про модули и пакеты в Python (так же см. официальную документацию).
Для закрепления: взять любой свой проект и красиво разбить его на модули.
Глава про стиль кода
Стиль кода это недооцененная (особенно среди DS), но очень важная вещь. От умения писать код зависит, будут ваши коллеги плевать вам в чай или нет. Умение писать читабельный код сэкономит вам уйму времени даже если вы только прототипируете модели и вам никогда не придется поддерживать проекты. Решая Kaggle вы бы скорее хотели искать ошибки в коде или пробовать новые варианты решения?
Прочитали один раз - пишете код лучше, чем большинство DS. Бесплатное преимущество!
Для закрепления: написать любую программу максимально красиво. Достаточно даже задачи с Leetcode. Хороший критерий успеха: вы отложили код на две недели, вернулись и все еще понимаете, что в нем происходит.
Глава про тесты и гайд для pytest
Способность писать тесты отличает дилетанта от программиста. Знание о том, как писать тесты, навсегда меняет подход к написанию любого кода: просто понимаешь, какой код более вероятно содержит скрытые косяки. Минус: паранойя навсегда, потому узнаешь, что весь код без покрытия автотестами сломан. Это очень важно даже если вы только учить модели. Если ваш код невозможно затащить в прод, то вы беспомощны и возможно даже бесполезны.
Для закрепления: покрыть тестами свою программу. Бонусные очки, если вы покрываете тестами ML решение, потому что это довольно нетривиальная задача.

## Читаем код
Узнав про то, что такое модульный и читабельный код, изучаем его экземпляры в дикой природе. Просто читаем, вникаем что и откуда берется, задаем себе вопросы: “почему здесь так?”, “что это такое?”, “зачем это здесь?” Это симуляция ситуации, когда вам нужно работать с кодом коллеги. Только в реальной жизни код не будет хорошим.
Советую исходный код этой небольшой библиотеки для табличек: https://github.com/jazzband/tablib
Более продвинутый уровень, если в библиотеке выше уже все понятно: https://github.com/pallets/flask
#visualization

Или как делать презентации через Markdown
#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