Forwarded from Записки дата-шрушера (Ppilif) (Ppilif Uliankin [GMT+1])
Про собеседования по алгоритмам #собесы
Когда ты устраиваешься в ML или в аналитику, много где надо пройти секцию c кодом. Чаще всего на этих секциях встречаются довольно простые алгоритмические задачки.
На таких собесах хороший интервьюер пытается понять, как именно кандидат рассуждает и пишет код. Задача — это просто повод поговорить (плохой интервьюер заставляет вертеть красно-чёрные деревья, чтобы потешить своё чсв).
При подготовке к таким секциям люди задрачивают leetcode, но забывают про разговор. В итоге это приводит к тому, что на собесах возникают ступоры и кандидат уходит в себя. Он сидит и думает молча. Так делать нельзя, надо начинать рассуждать вслух.
Я бы готовился, в первую очередь, к разговору и учился бы на литкодных задачках рассуждать.
1. Читаешь условие. Проговариваешь свой алгоритм голосом. Оцениваешь голосом его сложность по памяти и времени. Если слишком большая, думаешь где ты в алгоритме делаешь лишние действия. Обычно, на секциях для аналитиков, все должно делаться за O(n).
Тут можно сформулировать самую грубую версию, оценить её сложность, а дальше в рассуждених улучшить её.
2. Если со сложностью все ок — проговариваешь голосом какие могут быть краевые случаи и как их надо обработать. Записываешь их.
3. Пишешь код в блокноте. Без автоподсказок и интерпретатора. Не запускаешь его до последнего.
4. Смотришь на получившийся код, выписываешь пару тестов для проверки — краевые и обычные, проговариваешь голосом, как тесты проходят сквозь код. Если нашел баг, правишь.
5. Запускаешь код. Если работает норм — комитишь на литкод. Если падает, смотришь тест, ищешь ошибку, правишь и больше не допускаешь.
Если ты на собесе будешь разговаривать с интервьюером по этой схеме, он будет счастлив. Говорю как интервьюер, которому доводилось проводить секции на код.
Решать задачи с литкода — это, конечно, хорошо. Что делать если не шаришь во всех этих О(n)? Я бы в таком случае прочитал грокаем алгоритмы. Читается за выходные и открывает кучу чакр.
Ну а дальше можно пойти на литкод либо пальнуть яндексовые видосы про алгоритмы с Густокашиным. К ним прилагаются контесты, которые можно порешать. Не забывайте делать это по схеме, которую я вкинул выше. В любом собеседовании — главное разговор, а не задача.
Когда ты устраиваешься в ML или в аналитику, много где надо пройти секцию c кодом. Чаще всего на этих секциях встречаются довольно простые алгоритмические задачки.
На таких собесах хороший интервьюер пытается понять, как именно кандидат рассуждает и пишет код. Задача — это просто повод поговорить (плохой интервьюер заставляет вертеть красно-чёрные деревья, чтобы потешить своё чсв).
При подготовке к таким секциям люди задрачивают leetcode, но забывают про разговор. В итоге это приводит к тому, что на собесах возникают ступоры и кандидат уходит в себя. Он сидит и думает молча. Так делать нельзя, надо начинать рассуждать вслух.
Я бы готовился, в первую очередь, к разговору и учился бы на литкодных задачках рассуждать.
1. Читаешь условие. Проговариваешь свой алгоритм голосом. Оцениваешь голосом его сложность по памяти и времени. Если слишком большая, думаешь где ты в алгоритме делаешь лишние действия. Обычно, на секциях для аналитиков, все должно делаться за O(n).
Тут можно сформулировать самую грубую версию, оценить её сложность, а дальше в рассуждених улучшить её.
2. Если со сложностью все ок — проговариваешь голосом какие могут быть краевые случаи и как их надо обработать. Записываешь их.
3. Пишешь код в блокноте. Без автоподсказок и интерпретатора. Не запускаешь его до последнего.
4. Смотришь на получившийся код, выписываешь пару тестов для проверки — краевые и обычные, проговариваешь голосом, как тесты проходят сквозь код. Если нашел баг, правишь.
5. Запускаешь код. Если работает норм — комитишь на литкод. Если падает, смотришь тест, ищешь ошибку, правишь и больше не допускаешь.
Если ты на собесе будешь разговаривать с интервьюером по этой схеме, он будет счастлив. Говорю как интервьюер, которому доводилось проводить секции на код.
Решать задачи с литкода — это, конечно, хорошо. Что делать если не шаришь во всех этих О(n)? Я бы в таком случае прочитал грокаем алгоритмы. Читается за выходные и открывает кучу чакр.
Ну а дальше можно пойти на литкод либо пальнуть яндексовые видосы про алгоритмы с Густокашиным. К ним прилагаются контесты, которые можно порешать. Не забывайте делать это по схеме, которую я вкинул выше. В любом собеседовании — главное разговор, а не задача.
https://www.youtube.com/watch?v=iKW-WQO1d1A
#ml #timeseries #nixtla
Хочу потестить эту Никстлу, кто-нить уже пробовал?
#ml #timeseries #nixtla
Хочу потестить эту Никстлу, кто-нить уже пробовал?
YouTube
NixtlaVerse, bridging the gap between statistics and deep learning for time series | PyData NYC 2022
Time-series modeling – analysis, and prediction of trends and seasonalities for data collected over time – is a rapidly growing category of software applications.
Businesses, ranging from finance to healthcare analytics, collect time-series data daily to…
Businesses, ranging from finance to healthcare analytics, collect time-series data daily to…
Forwarded from NOdata Миша
Посмотрел, что умеет Notion и написал об этом на vc
Если статья окажется для вас интересной, то не забудьте поставить ей лайк 👍
https://vc.ru/future/599192-notion-ai-iskusstvennyy-intellekt-uzhe-i-v-zametkah
#статьи
Если статья окажется для вас интересной, то не забудьте поставить ей лайк 👍
https://vc.ru/future/599192-notion-ai-iskusstvennyy-intellekt-uzhe-i-v-zametkah
#статьи
vc.ru
Notion AI. Искусственный интеллект уже и в заметках — Будущее на vc.ru
Сегодня, когда я зашел Notion, то увидел это
Forwarded from Вастрик.Пынь
🤖 ChatGPT. Когда уже нейросети наконец-то заменят кожаных ублюдков?
Много меня просили написать свои мысли по поводу ChatGPT. Написал пока три.
1. ChatGPT заменит людей, но только тех, которые не осилят сам ChatGPT. А для остальных он станет просто ежедневным компаньоном (уже стал)
2. «Большие дядьки» обосрутся и побегут скорее запрещать и ограничивать нейросети. А у простых людей прокачается новый скилл: детектор, что перед тобой нейросеть
3. Да, поисковики умрут, но не потому что ChatGPT их заменит
Развернул тут: https://vas3k.blog/notes/chatgpt/
Много меня просили написать свои мысли по поводу ChatGPT. Написал пока три.
1. ChatGPT заменит людей, но только тех, которые не осилят сам ChatGPT. А для остальных он станет просто ежедневным компаньоном (уже стал)
2. «Большие дядьки» обосрутся и побегут скорее запрещать и ограничивать нейросети. А у простых людей прокачается новый скилл: детектор, что перед тобой нейросеть
3. Да, поисковики умрут, но не потому что ChatGPT их заменит
Развернул тут: https://vas3k.blog/notes/chatgpt/
#numpy #stats #percentile
А Вы задумывались, что вообще-то для вычисления перцентилей/квантилей есть КУЧА методов? По дефолту идёт линейный, но в доках в общем случае для неизвестного распределения рекомендуется median_unbiased.
Облом состоит в том, что numba параметр method не поддерживает.
А Вы задумывались, что вообще-то для вычисления перцентилей/квантилей есть КУЧА методов? По дефолту идёт линейный, но в доках в общем случае для неизвестного распределения рекомендуется median_unbiased.
Облом состоит в том, что numba параметр method не поддерживает.
https://www.johndcook.com/blog/2009/06/23/tukey-median-ninther/
#stats #tukey #ninther
Как эффективно вычислять медиану: взгляд из 1978.
#stats #tukey #ninther
Как эффективно вычислять медиану: взгляд из 1978.
John D. Cook | Applied Mathematics Consulting
John Tukey's median of medians | ninther
Yesterday I got an email from Jestin Abraham asking a question about Tukey's "median of medians" paper from 1978. (The full title is "The Ninther, a Technique for Low-Effort Robust (Resistant) Location in Large Samples.") Jestin thought I might be familiar…
#entropy #antropy #stats #informationtheory
Ботанам, которые любят считать энтропию, пригодится!
https://raphaelvallat.com/antropy/build/html/index.html
Ботанам, которые любят считать энтропию, пригодится!
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
Удивительное рядом. При разных наклонах линии регрессии коэффициент детерминации для по сути одного и того же ряда варьируется от 0 до 0.9! Кто знал, что так бывает, ставьте необычный эмодзи )
https://stats.stackexchange.com/questions/519784/linear-regression-r-squared-vs-slope
Кто пользовался средним Тьюки? https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%B5_%D0%A2%D1%8C%D1%8E%D0%BA%D0%B8
Anonymous Poll
0%
Приходилось пользоваться, было полезно
10%
Приходилось пользоваться, ничего не дало
10%
Знаю про эту концепцию, но не использовали на практике
0%
Знал[а] про заборы Тьюки, но не про среднее
80%
Кто такой Тьюки?
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
Задачи по 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.
#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
Я сильно верил во взаимную информацию, потому что сам много лет назад делал её расчёты, и у меня были прекрасные результаты. Но как же это понятие изгадили в sklearn... У меня просто глаза на лоб полезли от этой "реализации". Позапускайте несколько раз:
mutual_info_regression(
np.arange(10).reshape(-1, 1),
(np.arange(10) * 2).ravel(),
)
reported a bug
GitHub
Proposal to change default value of n_neighbors in mutual_info_regression · Issue #25580 · scikit-learn/scikit-learn
Describe the bug Hi, recently I figured out that for short sequences default value of 3 is way too unstable and gives poor results. Don't know the reasons why 3 was used, my testing shows t...
#ml #sklearn #quasitolerance #bollocks
Sklearn продолжает отжигать. В новой версии они удалили датасет Бостон из-за какой-то надуманной херни. А ведь на него завязана уже было куча примеров в сторонних либах. BorutaShap вообще при импорте сломался.
"
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, потому что там нет данных мужиков и геев? А все ли цвета радуги есть в ирисах Фишера, может, лучше их тоже удалить во избежание?
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, потому что там нет данных мужиков и геев? А все ли цвета радуги есть в ирисах Фишера, может, лучше их тоже удалить во избежание?
#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, не знаю, исправлено ли это уже.
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
Мы уже рассказывали, что на всех проектах используем утилиту pre-commit с линтерами. Но её можно настроить на другие полезные штуки. Нашли репозиторий с различными pre-commit хуками.
Нам показались интересными:
– проверка на добавление больших файлов в репозиторий. Бывает полезно, чтобы случайно что-то большое и лишнее не закомитить
– проверить, что исполняемые файлы содержат шебанг
– проверить корректность json-, toml-, xml-файлов
– проверить, что у файлов с тестами корректные названия. Это особенно важно, когда тесты автоматически прогоняются в CI/CD-пайплайнах
– проверить, что нигде случайно не комитятся секреты. Это частая проблема, когда в репозиториях находят какие-нибудь переменные окружения SECRET_KEY
Список не ограничивается перечисленным, загляните в репозиторий, может обнаружите что-то интересное для себя.
#skills
Telegram
DevFM
Pre-commit — must have утилита любого проекта
Бывает смотришь на код и сразу видно, что код плохой. Признаков может быть множество:
— разные куски кода по-разному отформатированы
— импорты в файлах никак не структурированы
— используются вперемешку синтаксис…
Бывает смотришь на код и сразу видно, что код плохой. Признаков может быть множество:
— разные куски кода по-разному отформатированы
— импорты в файлах никак не структурированы
— используются вперемешку синтаксис…
#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() самостоятельно.
О недостатке 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])