#MLbasics
#python
Задача на кодинг?💻
Бывает на собеседованиях в секции решения задач дают совсем не алгос, а что-то МЛное. Это может быть любой базовый алгоритм из классического ML, а может и класс для self-attention.
Как закодить ЛИНЕЙНУЮ РЕГРЕССИЮ
Начнем с подходов к задаче. Линейная регрессия - это метод моделирования зависимости, в котором мы подбираем веса к нашим признакам, чтобы приблизить функцию распределения нашей целевой величины.
Чтобы подобрать оптимальные веса - нам нужна функция потерь. Обычно используется MSE, так как она гладкая и выпуклая -> производная определена во всех точках -> удобно оптимизировать!
Для поиска весов можно привести аналитическое (точное) решение - оно будет в виде уравнения, где нужно найти обратную матрицу (конечно же по всему датасету). Такое нам не подходит, так как это долгая и вычислеительно затратная операция на больших данных.
В дело вступает численный метод оптимизации - градиентный спуск. Он позволяет найти точку минимума (желательно глобального) итеративно, используя не весь датасет в вычслениях, а определенную его часть на каждой итерации, спускаясь в направлении антиградиента (направление наискорейшего убывания функции).
Показал реализацию модели Линейной регрессии и ее оптимизацию градиентным спуском в ноутбуке с комментариями и формулами.
Будет полезно разобраться в коде для собесов в classic ML и даже в DL, так как часто спрашивают, как устроен Adam (модификация градиентного спуска).
Пиши в комментариях, что бы еще добавил в такую реализацию❔
#python
Задача на кодинг?
Бывает на собеседованиях в секции решения задач дают совсем не алгос, а что-то МЛное. Это может быть любой базовый алгоритм из классического ML, а может и класс для self-attention.
Как закодить ЛИНЕЙНУЮ РЕГРЕССИЮ
Начнем с подходов к задаче. Линейная регрессия - это метод моделирования зависимости, в котором мы подбираем веса к нашим признакам, чтобы приблизить функцию распределения нашей целевой величины.
Чтобы подобрать оптимальные веса - нам нужна функция потерь. Обычно используется MSE, так как она гладкая и выпуклая -> производная определена во всех точках -> удобно оптимизировать!
Для поиска весов можно привести аналитическое (точное) решение - оно будет в виде уравнения, где нужно найти обратную матрицу (конечно же по всему датасету). Такое нам не подходит, так как это долгая и вычислеительно затратная операция на больших данных.
В дело вступает численный метод оптимизации - градиентный спуск. Он позволяет найти точку минимума (желательно глобального) итеративно, используя не весь датасет в вычслениях, а определенную его часть на каждой итерации, спускаясь в направлении антиградиента (направление наискорейшего убывания функции).
Показал реализацию модели Линейной регрессии и ее оптимизацию градиентным спуском в ноутбуке с комментариями и формулами.
Будет полезно разобраться в коде для собесов в classic ML и даже в DL, так как часто спрашивают, как устроен Adam (модификация градиентного спуска).
Пиши в комментариях, что бы еще добавил в такую реализацию
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9✍5👍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 - не про количество, а про осознанность.
#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
#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
👍4✍3🔥3