Aspiring Data Science
327 subscribers
390 photos
10 videos
6 files
1.46K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
Forwarded from Записки дата-шрушера (Ppilif) (Ppilif Uliankin [GMT+1])
Про собеседования по алгоритмам #собесы

Когда ты устраиваешься в ML или в аналитику, много где надо пройти секцию c кодом. Чаще всего на этих секциях встречаются довольно простые алгоритмические задачки.

На таких собесах хороший интервьюер пытается понять, как именно кандидат рассуждает и пишет код. Задача — это просто повод поговорить (плохой интервьюер заставляет вертеть красно-чёрные деревья, чтобы потешить своё чсв).

При подготовке к таким секциям люди задрачивают leetcode, но забывают про разговор. В итоге это приводит к тому, что на собесах возникают ступоры и кандидат уходит в себя. Он сидит и думает молча. Так делать нельзя, надо начинать рассуждать вслух.

Я бы готовился, в первую очередь, к разговору и учился бы на литкодных задачках рассуждать.

1. Читаешь условие. Проговариваешь свой алгоритм голосом. Оцениваешь голосом его сложность по памяти и времени. Если слишком большая, думаешь где ты в алгоритме делаешь лишние действия. Обычно, на секциях для аналитиков, все должно делаться за O(n).

Тут можно сформулировать самую грубую версию, оценить её сложность, а дальше в рассуждених улучшить её.

2. Если со сложностью все ок — проговариваешь голосом какие могут быть краевые случаи и как их надо обработать. Записываешь их.

3. Пишешь код в блокноте. Без автоподсказок и интерпретатора. Не запускаешь его до последнего.

4. Смотришь на получившийся код, выписываешь пару тестов для проверки — краевые и обычные, проговариваешь голосом, как тесты проходят сквозь код. Если нашел баг, правишь.

5. Запускаешь код. Если работает норм — комитишь на литкод. Если падает, смотришь тест, ищешь ошибку, правишь и больше не допускаешь.

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

Решать задачи с литкода — это, конечно, хорошо. Что делать если не шаришь во всех этих О(n)? Я бы в таком случае прочитал грокаем алгоритмы. Читается за выходные и открывает кучу чакр.

Ну а дальше можно пойти на литкод либо пальнуть яндексовые видосы про алгоритмы с Густокашиным. К ним прилагаются контесты, которые можно порешать. Не забывайте делать это по схеме, которую я вкинул выше. В любом собеседовании — главное разговор, а не задача.
Forwarded from NOdata Миша
Посмотрел, что умеет Notion и написал об этом на vc

Если статья окажется для вас интересной, то не забудьте поставить ей лайк 👍

https://vc.ru/future/599192-notion-ai-iskusstvennyy-intellekt-uzhe-i-v-zametkah

#статьи
Forwarded from Вастрик.Пынь
🤖 ChatGPT. Когда уже нейросети наконец-то заменят кожаных ублюдков?

Много меня просили написать свои мысли по поводу ChatGPT. Написал пока три.

1. ChatGPT заменит людей, но только тех, которые не осилят сам ChatGPT. А для остальных он станет просто ежедневным компаньоном (уже стал)

2. «Большие дядьки» обосрутся и побегут скорее запрещать и ограничивать нейросети. А у простых людей прокачается новый скилл: детектор, что перед тобой нейросеть

3. Да, поисковики умрут, но не потому что ChatGPT их заменит

Развернул тут: https://vas3k.blog/notes/chatgpt/
#numpy #stats #percentile

А Вы задумывались, что вообще-то для вычисления перцентилей/квантилей есть КУЧА методов? По дефолту идёт линейный, но в доках в общем случае для неизвестного распределения рекомендуется median_unbiased.

Облом состоит в том, что numba параметр method не поддерживает.
#entropy #antropy #stats #informationtheory

Ботанам, которые любят считать энтропию, пригодится!

https://raphaelvallat.com/antropy/build/html/index.html
#stats #r2

Удивительное рядом. При разных наклонах линии регрессии коэффициент детерминации для по сути одного и того же ряда варьируется от 0 до 0.9! Кто знал, что так бывает, ставьте необычный эмодзи )

https://stats.stackexchange.com/questions/519784/linear-regression-r-squared-vs-slope
Forwarded from Artem Ryblov’s Data Science Weekly (Artem Ryblov)
Python & ML tasks
Задачи по Python и машинному обучению

Today I want to share with you a telegram channel which will help you retain your knowledge of python and maybe learn something new.

Every day a question is posted and you can answer it using the quiz under the question.
If your answer is wrong, you can find out the correct one and read the explanation.

#armknowledgesharing #armtelegram #python
Forwarded from New Yorko Times (Yury Kashnitsky)
Книга про ML собеседования
#ml #books #career #interview

Дочитал драфт книги Chip Huyen про ML интервью https://huyenchip.com/ml-interviews-book

Чип https://twitter.com/chipro - незаурядная личность: популярная вьетнамская писательница, выпускница Стэнфорда, поработала в NVIDIA, Netflix и паре стартапов, сейчас свой тащит и преподает ML system design. Я делал обзор на ее книгу Designing Machine Learning Systems» тут https://t.me/new_yorko_times/43

Книга про интервью рассматривает виды работы в области ML (research, applied science, ML engineering), мл сисдиз и MLOps (это по сути краткая выжимка упомянутой выше книги). Далее обсуждаются типы интервью, поведенческие тоже, что говорить и что нет. Далее - что делать с оффером, как переговариваться, как устроена компенсация оплаты в бигтехе. Рассматриваются ресурсы для подготовки (одсовцы найдут целых две пасхалки в части 4.2 про блоги и 4.3.1 про курсы) и наконец, добрая половина книги - это список вопросов к собесам по математике, CS и ML.
#stats #informationtheory #sklearn #bollocks

Я сильно верил во взаимную информацию, потому что сам много лет назад делал её расчёты, и у меня были прекрасные результаты. Но как же это понятие изгадили в sklearn... У меня просто глаза на лоб полезли от этой "реализации". Позапускайте несколько раз:

mutual_info_regression(
np.arange(10).reshape(-1, 1),
(np.arange(10) * 2).ravel(),
)
reported a bug
#ml #sklearn #quasitolerance #bollocks

Sklearn продолжает отжигать. В новой версии они удалили датасет Бостон из-за какой-то надуманной херни. А ведь на него завязана уже было куча примеров в сторонних либах. BorutaShap вообще при импорте сломался.

"load_boston has been removed from scikit-learn since version 1.2.

The Boston housing prices dataset has an ethical problem: as
investigated in [1], the authors of this dataset engineered a non-invertible variable "B" assuming that racial self-segregation had a
positive impact on house prices [2]. Furthermore the goal of the
research that led to the creation of this dataset was to study the
impact of air quality but it did not give adequate demonstration of the validity of this assumption.

The scikit-learn maintainers therefore strongly discourage the use of this dataset unless the purpose of the code is to study and educate about ethical issues in data science and machine learning."

Что на очереди? BreastCancer, потому что там нет данных мужиков и геев? А все ли цвета радуги есть в ирисах Фишера, может, лучше их тоже удалить во избежание?
#cpu #arm #hpc #ml #graviton

Всё ещё считаешь на Интелях, в лучшем случае, на АМД? Оказывается, ARM-процессор Graviton уже рвёт старичков на куски в compute-intensive задаах, в т.ч. ML.

https://community.arm.com/arm-community-blogs/b/infrastructure-solutions-blog/posts/xgboost-lightgbm-aws-graviton3
#AWS #EC2

https://www.nakivo.com/blog/the-definitive-guide-to-aws-ec2-instance-types/

А вообще, вот путеводитель по типам инстансов в Amazon AWS. Тут можно получить машинки с 24Tb RAM. 448 vCPUs, десятками TB SSD/NVME/HDD. Для ML интересны ускорители Inferentia, Trainium (аналог гугловских TPU) для Deep Learning, DL1 (Gaudi), F1 (FPGA). Ни одну из этих диковинок я ещё не пробовал, кто знает, отпишитесь, как они? Работал лишь на серверах p4d с ускорителями А100 (см пикчу). Кстати, а где H100, почему их ещё нет?

PS. В гугл клауд, помнится, есть сервера с ещё большим числом vCPU. Хотелось бы сравнить этот новый Trainium с TPUv3. НА годовалом DL проекте у меня TPU выходил в полтора раза дешевле, чем сервер на A100. Но tensorflow тогда имел проблемы с огромными динамическими графами, и пришлось всё же обучаться на A100, не знаю, исправлено ли это уже.
Forwarded from DevFM
Классные pre-commit хуки

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

Нам показались интересными:
– проверка на добавление больших файлов в репозиторий. Бывает полезно, чтобы случайно что-то большое и лишнее не закомитить
– проверить, что исполняемые файлы содержат шебанг
– проверить корректность json-, toml-, xml-файлов
– проверить, что у файлов с тестами корректные названия. Это особенно важно, когда тесты автоматически прогоняются в CI/CD-пайплайнах
– проверить, что нигде случайно не комитятся секреты. Это частая проблема, когда в репозиториях находят какие-нибудь переменные окружения SECRET_KEY

Список не ограничивается перечисленным, загляните в репозиторий, может обнаружите что-то интересное для себя.
#skills
#sklearn #ml #timeseries #cv #retrainfrequency

О недостатке sklearn-овской реализации TimeSeriesSplit. Важной частью работы дата сайентиста является обучение моделек на данных, имеющих временное измерение. В них нельзя применить простое Kfold разбиение на группы, т.к. обучение "на будущем" в реальном использовании невозможно, а в кросс-валидацию внесёт оптимистичное смещение (bias, data leak). Поэтому почти всегда с такими данными используется вариация TimeSeriesSplit, в базовой версии имеющей сигнатуру (n_splits=5, *, max_train_size=None, test_size=None, gap=0). Минимальный размер трейна тут всегда равен размеру теста (что логично), максимальный может регулироваться параметром. gap позволяет делать разрывы между фолдами, чтобы нивелировать влияние корреляции между концом трейна и началом теста (и совсем избежать пресловутого смещения). В целом мощная функция, правда, есть недочёт. На больших данных каждый fit идёт очень долго и стоит дорого, а predict быстр и дёшев. А предсказания мы делаем всего лишь на текущий test, хотя могли бы делать на все оставшиеся данные. Для чего последнее могло бы понадобиться? А чтобы посмотреть, как долго держится предсказательная сила модели, и сделать вывод о требуемой частоте переобучения. Например, пройти по такому "длинному предикту" скользящим окном в неделю, месяц, полгода, и в рамках окна уже считать нужные метрики (точность, полноту, RMSE, к примеру). Этого можно добиться, субклассировав TimeSeriesSplit и расширяя её test_index, либо написав свою cross_validate и вызывая метод split() самостоятельно.
Как для задач DS в экосистеме Питона извлечь кубический корень для нормализации признака с выбросами, который к тому же может принимать негативные значения?
Anonymous Quiz
33%
df[var]**(1/3)
11%
Предыдущее не сработает, только np.pow(df[var],1/3)
11%
Предыдущее не сработает, только np.cbrt(df[var],1/3)
44%
Предыдущее не сработает, только np.cbrt(df[var])