Code.Offer.Repeat
47 subscribers
10 photos
2 files
6 links
Пишу про ML/Data Science собеседования и не только
Автор: Дмитрий Булгаков (Middle Data Scientist @ MTS Web Services)
@dm1trybu
Download Telegram
#MLbasics
#python

Задача на кодинг? 💻

Бывает на собеседованиях в секции решения задач дают совсем не алгос, а что-то МЛное. Это может быть любой базовый алгоритм из классического ML, а может и класс для self-attention.

Как закодить ЛИНЕЙНУЮ РЕГРЕССИЮ

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

Чтобы подобрать оптимальные веса - нам нужна функция потерь. Обычно используется MSE, так как она гладкая и выпуклая -> производная определена во всех точках -> удобно оптимизировать!

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

В дело вступает численный метод оптимизации - градиентный спуск. Он позволяет найти точку минимума (желательно глобального) итеративно, используя не весь датасет в вычслениях, а определенную его часть на каждой итерации, спускаясь в направлении антиградиента (направление наискорейшего убывания функции).

Показал реализацию модели Линейной регрессии и ее оптимизацию градиентным спуском в ноутбуке с комментариями и формулами.

Будет полезно разобраться в коде для собесов в classic ML и даже в DL, так как часто спрашивают, как устроен Adam (модификация градиентного спуска).

Пиши в комментариях, что бы еще добавил в такую реализацию
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥95👍5
#leetcode
#guide


5 типичных ошибок при решении задач с LeetCode


🧠 LeetCode — это не про знание языка программирования. Это тренировка мышления, но почти все совершают одинаковые ошибки, из-за которых прогресс стопорится. Разберём их.

1. Решать задачи "вслепую" без анализа
Написали код, он прошёл тесты — и сразу дальше.
Ошибка: не разобрали, почему решение работает и как его улучшить.
Разбор после каждой задачи: оценка сложности, поиск альтернатив и "что было бы, если...".

2. Фармить количество задач
Многие решают 10 задач в день, чтобы "набить статистику".
Это даёт только иллюзию прогресса.
Лучше 1-2 задачи в день, но с полным пониманием алгоритма (DFS/BFS, two pointers, dynamic programming и т.д.).

3. Игнорировать категории задач
Решать всё подряд - значит не учиться системно.
Работайте по темам: сначала массивы → строки → хеш-таблицы → рекурсия → графы.
С каждой темой учимся узнавать знакомые паттерны.

4. Не объяснять свои решения "вслух"
На собеседовании важен не код, а ход мыслей.
Привыкайте комментировать процесс: "я начинаю с O(n²) решения, а теперь попробую оптимизировать…".

5. Сразу лезть в сложные задачи
Перескакивать с Easy на Hard - путь к выгоранию.
Делайте постепенно: 10 Easy → 5 Medium → 1 Hard.
Фокус на стабильности, а не сложности.

💡 LeetCode - не про количество, а про осознанность.
5👍3🔥3
#MLbasics
#metrics
#python

Пишем метрики ручками Часть 1

Для лучшего понимания любой темы самый эффективный способ - воспроизвести ее самостоятельно, нарисовать/закодить и так далее.

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

1. Root Mean Squared Error (RMSE)

📏 Измеряет насколько сильно в среднем предсказания отличаются от реальных значений, при этом большие ошибки наказываются сильнее.

💡 Особенно подходит, если важно штрафовать крупные промахи, например, при прогнозе цен или спроса.

2. Mean Absolute Error (MAE)

📏 Измеряет среднее отклонение предсказаний от реальных значений, в тех же единицах, что и исходные данные.

💡 Удобно, когда все ошибки одинаково важны — не нужно наказывать большие ошибки сильнее, чем маленькие.

3. Mean Absolute Percentage Error (MAPE)

📏 Измеряет средний процент ошибки относительно истинного значения.

⚠️ Плохо работает, если реальные значения близки к нулю (деление на маленькие числа → огромные проценты). Также она несимметрично оценивает перепрогноз и недопрогноз -> можно посмотреть на SMAPE.

💡 Полезно, когда важно понимать ошибку в процентах, например, «на сколько процентов промахнулся прогноз продаж».

4. Mean Squared Logarithmic Error (MSLE)

📏 Измеряет насколько близки логарифмы предсказаний и реальных значений.

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

5. R^2(коэффициент детерминации)

📏 Измеряет насколько хорошо модель объясняет изменчивость данных. Грубо говоря, насколько лучше модель, чем просто “среднее значение”.

💡 Хороша, когда хочешь оценить долю объяснённой моделью дисперсии — то есть, насколько хорошо модель “понимает” зависимость между X и Y.

6. Adjusted R^2 (скорректированный коэффициент детерминации)

📏 Измеряет то же, что и R², но с поправкой на количество признаков (фич).

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

🧭 Главное — не просто подставлять метрику, а понимать, что именно она показывает и в каких единицах измеряет ошибку. Это позволит выбирать правильную метрику под конкретную задачу, а не просто смотреть на все и теряться.


*Картинка взята с сайта loginom.ru
👍43🔥3