Всем привет! Меня зовут Глеб
В этом канале я буду публиковать самое интересное, с чем встречаюсь на работе или учёбе.
Кто я? 🧑💻
Мне 20, учусь на Факультете экономических наук НИУ ВШЭ и уже год работаю аналитиком в крупном банке.
Мне безумно нравится анализ данных, и я создал этот канал, чтобы делиться опытом, обсуждать крутые темы и узнавать новое вместе с вами.
О чём я буду писать здесь? ✍️
Вот какие темы и хештеги вы здесь встретите:
#жизнь_аналитика
— Как совмещать работу и учебу
— Истории из офиса и не только
— Мысли о карьере и развитии
#софт_скиллы 🗣
Опыт коммуникации с командой и менеджерами, презентации результатов, критическая оценка задач
#аналитические_методы 🔎
Всевозможные аналитические приемы и методы, которыми я пользуюсь и хочу поделиться
#визуализация_данных 📊
Красивые и понятные способы визуализации (matplotlib, seaborn, plotly etc)
#образование 👨🎓
Мои отзывы о курсах, связанных с анализом данных
#карьера 🚀
Здесь я буду рассказывать, как войти в анализ данных и продолжать развиваться
#из_моей_практики 💡
Интересные закономерности и явления, которые я обнаружил в данных
А также технические теги: 🖥
#sql #python #ml #статистика
#offtop 🍿
Всё, что не вошло в другие рубрики
Почему вам может быть интересно?
Если вы начинающий аналитик, студент или просто интересуетесь данными — вам сюда.
Чем могу быть полезен?
Пишите мне в личку @glebgavrin с любым вопросом. Обещаю, что отвечу и постараюсь помочь!
Мои проекты и код: Github - здесь я выкладываю свои выполненные ДЗ с курсов, пет-проекты и т.п
Подписывайтесь — вместе будет интересно!❤️
В этом канале я буду публиковать самое интересное, с чем встречаюсь на работе или учёбе.
Кто я? 🧑💻
Мне 20, учусь на Факультете экономических наук НИУ ВШЭ и уже год работаю аналитиком в крупном банке.
Мне безумно нравится анализ данных, и я создал этот канал, чтобы делиться опытом, обсуждать крутые темы и узнавать новое вместе с вами.
О чём я буду писать здесь? ✍️
Вот какие темы и хештеги вы здесь встретите:
#жизнь_аналитика
— Как совмещать работу и учебу
— Истории из офиса и не только
— Мысли о карьере и развитии
#софт_скиллы 🗣
Опыт коммуникации с командой и менеджерами, презентации результатов, критическая оценка задач
#аналитические_методы 🔎
Всевозможные аналитические приемы и методы, которыми я пользуюсь и хочу поделиться
#визуализация_данных 📊
Красивые и понятные способы визуализации (matplotlib, seaborn, plotly etc)
#образование 👨🎓
Мои отзывы о курсах, связанных с анализом данных
#карьера 🚀
Здесь я буду рассказывать, как войти в анализ данных и продолжать развиваться
#из_моей_практики 💡
Интересные закономерности и явления, которые я обнаружил в данных
А также технические теги: 🖥
#sql #python #ml #статистика
#offtop 🍿
Всё, что не вошло в другие рубрики
Почему вам может быть интересно?
Если вы начинающий аналитик, студент или просто интересуетесь данными — вам сюда.
Чем могу быть полезен?
Пишите мне в личку @glebgavrin с любым вопросом. Обещаю, что отвечу и постараюсь помочь!
Мои проекты и код: Github - здесь я выкладываю свои выполненные ДЗ с курсов, пет-проекты и т.п
Подписывайтесь — вместе будет интересно!❤️
GitHub
GlebMage - Overview
HSE student, Sber CIB Quant Analyst. GlebMage has 11 repositories available. Follow their code on GitHub.
❤7🔥4💯1😭1👻1
Analyst’s Notebook📖 pinned «Всем привет! Меня зовут Глеб В этом канале я буду публиковать самое интересное, с чем встречаюсь на работе или учёбе. Кто я? 🧑💻 Мне 20, учусь на Факультете экономических наук НИУ ВШЭ и уже год работаю аналитиком в крупном банке. Мне безумно нравится анализ…»
Классный способ визуализации, который открыл для себя недавно
Сегодня хочу поделиться мощным способом визуализации, который отлично подходит для анализа распределения непрерывной переменной (например, зарплаты) в зависимости сразу от двух категориальных признаков.
В чём суть?🤔
Берём два категориальных признака (в моём примере — IT-специализация и грейд) и для каждой их комбинации строим boxplot. Это позволяет одним взглядом оценить комплексное влияние двух факторов на целевую переменную.
Какие инсайты можно найти? 💡
Вот что я обнаружил на примере датасета с зарплатами в IT:
• Чёткий рост зарплаты от middle к senior почти во всех специализациях
• В сфере Research and Advanced ML джуны получают неожиданно много — часто больше, чем миддлы в других направлениях. Вероятно, сказывается высокий порог входа и нехватка сильных кадров
• Аномально высокие зарплаты у некоторых джунов (например, 300к у AI Developer) — возможно, это ошибки в данных или уникальные кейсы
• Самый перспективный карьерный рост (по разрыву в зарплате между грейдами) — в ML Engineering, Management и Data Engineering
Как это построить? 🛠
Вот пример кода на Python с seaborn:
Ссылка на датасет
А как вы визуализируете подобные зависимости? 💬
Буду рад обсуждению в комментариях!
• Ставьте ❤️, если уже используете такой подход
• Ставьте 🔥, если раньше не видели, но теперь обязательно возьмёте на вооружение!
#визуализация_данных #python #аналитические_методы #из_моей_практики
Сегодня хочу поделиться мощным способом визуализации, который отлично подходит для анализа распределения непрерывной переменной (например, зарплаты) в зависимости сразу от двух категориальных признаков.
В чём суть?🤔
Берём два категориальных признака (в моём примере — IT-специализация и грейд) и для каждой их комбинации строим boxplot. Это позволяет одним взглядом оценить комплексное влияние двух факторов на целевую переменную.
Какие инсайты можно найти? 💡
Вот что я обнаружил на примере датасета с зарплатами в IT:
• Чёткий рост зарплаты от middle к senior почти во всех специализациях
• В сфере Research and Advanced ML джуны получают неожиданно много — часто больше, чем миддлы в других направлениях. Вероятно, сказывается высокий порог входа и нехватка сильных кадров
• Аномально высокие зарплаты у некоторых джунов (например, 300к у AI Developer) — возможно, это ошибки в данных или уникальные кейсы
• Самый перспективный карьерный рост (по разрыву в зарплате между грейдами) — в ML Engineering, Management и Data Engineering
Как это построить? 🛠
Вот пример кода на Python с seaborn:
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(10, 8))
sns.boxplot(x='experience_level', y='salary_in_usd', hue='job_category', data=df, palette='Set2')
plt.title('Зависимость зарплаты от грейда и сферы деятельности', fontsize=15)
plt.xlabel('Грейд')
plt.ylabel('Заработная плата, $ в год')
plt.legend(title='Сфера деятельности')
plt.tight_layout()
plt.show()
Ссылка на датасет
А как вы визуализируете подобные зависимости? 💬
Буду рад обсуждению в комментариях!
• Ставьте ❤️, если уже используете такой подход
• Ставьте 🔥, если раньше не видели, но теперь обязательно возьмёте на вооружение!
#визуализация_данных #python #аналитические_методы #из_моей_практики
🔥11❤3👏3😍1😈1
Продвинутый метод pandas, который обожают на собесах 💥
Расскажу про explode() — метод, который буквально «взрывает» датафрейм, превращая списки в ячейках в отдельные строки. Элегантная альтернатива циклам.
▫️ Как работает?
DataFrame.explode(column, ignore_index=False)
· ignore_index=False — сохраняет исходные индексы (появятся дубли)
· ignore_index=True — пересобирает индекс с нуля
▫️ Пример «взрыва»
Например, у нас есть датафрейм с пользователями и списками городов, в которых они побывали
Было:
Стало после df.explode('cities'):
🔥 3 потенциальных способа применения:
1. Анализ популярности городов
2. Поиск пользователей по городам
3. Создание парных комбинаций
💡 Личный опыт
Именно этот метод помог мне красиво решить задачу на собеседовании в❤️ !
• Ставьте ❤️, если уже использовали explode()
• Ставьте 🔥, если раньше не использовали, но теперь обязательно возьмёте на вооружение!
💎 Полезный метод?
Сохраните в закладки — пригодится на собеседовании!
#python
#аналитические_методы
#pandas
#вопросы_с_собеседований
Расскажу про explode() — метод, который буквально «взрывает» датафрейм, превращая списки в ячейках в отдельные строки. Элегантная альтернатива циклам.
▫️ Как работает?
DataFrame.explode(column, ignore_index=False)
· ignore_index=False — сохраняет исходные индексы (появятся дубли)
· ignore_index=True — пересобирает индекс с нуля
▫️ Пример «взрыва»
Например, у нас есть датафрейм с пользователями и списками городов, в которых они побывали
Было:
| user_id | cities |
|---------|-----------------|
| 1 | [Москва, Сочи] |
| 2 | [Казань] |
Стало после df.explode('cities'):
| user_id | cities |
|---------|---------|
| 1 | Москва |
| 1 | Сочи |
| 2 | Казань |
🔥 3 потенциальных способа применения:
1. Анализ популярности городов
cities_popularity = (df.explode('cities')
.groupby('cities')['user_id']
.count()
.sort_values(ascending=False))
2. Поиск пользователей по городам
target_cities = ['Москва', 'Лондон']
filtered_users = (df.explode('cities')
.query('cities in @target_cities')['user_id']
.unique())
3. Создание парных комбинаций
from itertools import combinations
tags_pairs = (df.explode('cities')
.groupby('user_id')['cities']
.apply(lambda x: list(combinations(x, 2)))
.explode()
.dropna())
💡 Личный опыт
Именно этот метод помог мне красиво решить задачу на собеседовании в
• Ставьте ❤️, если уже использовали explode()
• Ставьте 🔥, если раньше не использовали, но теперь обязательно возьмёте на вооружение!
💎 Полезный метод?
Сохраните в закладки — пригодится на собеседовании!
#python
#аналитические_методы
#pandas
#вопросы_с_собеседований
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15🆒3👏2
Инсайт из данных: почему опыт не всегда конвертируется в доход 👨🦳
Этим летом я проводил эконометрическое исследование, изучая влияние различных факторов на заработные платы в регионах России.
Для регрессионного анализа я выбрал данные по жителям Челябинска и Челябинской области.
В ходе EDA и построения регрессионных моделей мне удалось выявить, что зависимость заработной платы от возраста (и, как следствие, стажа) - квадратичная.
Позже я поискал похожие исследования и понял, что такая ситуация стандартна при моделировании зарплат, и многие эконометристы сталкиваются с ней.
Как можно заметить такую зависимость?
Я построил модель, где целевой переменной является логарифмированная зарплата, а среди регрессоров есть возраст и квадрат возраста. Пример кода для построения такой модели:
И ключевые моменты из получившейся таблички ANOVA:
Заметим, что коэффициент перед регрессором age^2 статистически значим и отрицателен.
Как мы помним из школьной алгебры, парабола с ветвями вниз задается уравнением y = -ax^2 + bx + c.
Можем сделать вывод, что с возрастом зарплата растет, потом достигает пика и начинает снижаться.
При этом мы можем определить возраст, после которого начинается снижение - это точка максимума параболы, то есть -b/2a.
В своем исследовании я так же построил 2 полиномиальные регрессии - отдельно для женщин и мужчин ( визуализации регрессий на графике).
И вот какие закономерности для мужчин и женщин удалось выявить:
- у женщин снижение зарплаты начинается позже - после ~50 лет
- зарплаты мужчин на всем возрастном интервале выше . Думаю, это связано с разницей в карьерных возможностях, вынужденных перерывах в занятости или неполной занятости из-за необходимости ухода за детьми.
- зависимость у обоих полов нелинейная
Почему возникает такая зависимость? 🤔
Почему зарплата в начале растет с возрастом ясно - молодые специалисты нарабатывают годы стажа и вместе с этим постепенно растет их зарплата.
Интереснее поразмышлять над причинами спада после ~ 45 лет.
Для себя я выявил такие причины:
- возрастная трудовая дискриминация: компании не хотят нанимать, а соответственно, и платить высокие зарплаты, возрастным специалистам, так как тут больше рисков (чаще болеют, менее мотивированы)
- переход с возрастом многих людей на менее трудозатратную работу из-за проблем со здоровьем / накопившейся усталости : например, работа консьержами
А как вы объясняете данную зависимость?
Пишите в комментариях💬
Ставьте ❤️, если знакомы с этой закономерностью,
🔥, если подчерпнули для себя что-то новое
И 🤩, если хотите больше подобных постов
Ссылка на мое исследование🔗
#исследование_зарплат #статистика #эконометрика #анализ_данных
Этим летом я проводил эконометрическое исследование, изучая влияние различных факторов на заработные платы в регионах России.
Для регрессионного анализа я выбрал данные по жителям Челябинска и Челябинской области.
В ходе EDA и построения регрессионных моделей мне удалось выявить, что зависимость заработной платы от возраста (и, как следствие, стажа) - квадратичная.
Позже я поискал похожие исследования и понял, что такая ситуация стандартна при моделировании зарплат, и многие эконометристы сталкиваются с ней.
Как можно заметить такую зависимость?
Я построил модель, где целевой переменной является логарифмированная зарплата, а среди регрессоров есть возраст и квадрат возраста. Пример кода для построения такой модели:
ols_10_logwage = smf.ols('log_wage ~ age + I(age**2) + educ + female + smoke', data=df).fit()
print(ols_10_logwage.summary())И ключевые моменты из получившейся таблички ANOVA:
OLS Regression Results
Ключевые коэффициенты:
age 0.0605 (p=0.109)
age^2 -0.0007 (p=0.077) ← значим на 10%
female -0.5787 (p=0.000) ← значим
educ 0.1646 (p=0.008) ← значим
Заметим, что коэффициент перед регрессором age^2 статистически значим и отрицателен.
Как мы помним из школьной алгебры, парабола с ветвями вниз задается уравнением y = -ax^2 + bx + c.
Можем сделать вывод, что с возрастом зарплата растет, потом достигает пика и начинает снижаться.
При этом мы можем определить возраст, после которого начинается снижение - это точка максимума параболы, то есть -b/2a.
В своем исследовании я так же построил 2 полиномиальные регрессии - отдельно для женщин и мужчин ( визуализации регрессий на графике).
И вот какие закономерности для мужчин и женщин удалось выявить:
- у женщин снижение зарплаты начинается позже - после ~50 лет
- зарплаты мужчин на всем возрастном интервале выше . Думаю, это связано с разницей в карьерных возможностях, вынужденных перерывах в занятости или неполной занятости из-за необходимости ухода за детьми.
- зависимость у обоих полов нелинейная
Почему возникает такая зависимость? 🤔
Почему зарплата в начале растет с возрастом ясно - молодые специалисты нарабатывают годы стажа и вместе с этим постепенно растет их зарплата.
Интереснее поразмышлять над причинами спада после ~ 45 лет.
Для себя я выявил такие причины:
- возрастная трудовая дискриминация: компании не хотят нанимать, а соответственно, и платить высокие зарплаты, возрастным специалистам, так как тут больше рисков (чаще болеют, менее мотивированы)
- переход с возрастом многих людей на менее трудозатратную работу из-за проблем со здоровьем / накопившейся усталости : например, работа консьержами
А как вы объясняете данную зависимость?
Пишите в комментариях💬
Ставьте ❤️, если знакомы с этой закономерностью,
🔥, если подчерпнули для себя что-то новое
И 🤩, если хотите больше подобных постов
Ссылка на мое исследование
#исследование_зарплат #статистика #эконометрика #анализ_данных
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🔥6🤩6👍1🤔1😈1
Как взаимодействие признаков спасло мою модель: разбор кейса 🛟
Продолжаем серию постов про эконометрическое исследование зарплат (первый пост), и на этот раз разберем перекрестные переменные (переменные взаимодействия) на конкретном примере.
Это произведение двух или более регрессоров, которое добавляем в модель. Они помогают найти скрытое влияние признаков на таргет.
В моем исследовании удачным оказалось взаимодействие пола (0-м/1-ж) и уровня образования (0-школа, 1-колледж, 2-универ).
Теперь разберем конкретно мой кейс
Сначала модель была такой:
Тест Рамсея показал, что модель неправильно специфицирована.
Добавил квадрат возраста — тест все еще показывал проблемы. Тогда добавил взаимодействие образования и пола.
Новая модель:
Результаты:
• Все регрессоры стали значимы на 10%
• Тест Рамсея: модель теперь верна
• R-squared adjusted вырос с 0.252 до 0.286
• Обнаружен значимый эффект взаимодействия
Как интерпретировать коэффициенты?
В модели с взаимодействием:
•
•
•
Что на практике?
Для мужчин (female=0):
Каждый уровень образования увеличивает зарплату на ~33.5% (коэф. 0.3352, p=0.000)
Для женщин (female=1):
Общий эффект: 0.3352 + (-0.2827) = 0.0525
Каждый уровень образования дает всего ~5.3% прибавки
Гендерный разрыв:
•
•
Что видно на графике?📈
Визуализация подтверждает: у мужчин — крутой рост зарплаты с образованием, у женщин — почти горизонтальная линия. Разница особенно очевидна при переходе к высшему образованию.
Главный инсайт:
Проблема не только в том, что женщины получают меньше. Они получают значительно меньшую отдачу за каждый уровень образования.
Ставьте ❤️, если использовали перекрестные переменные
🔥, если будете использовать
⚡️, если хотите больше постов про эконометрику
Ссылка на мое исследование🔗
#аналитические_методы #статистика #эконометрика #анализ_данных
Продолжаем серию постов про эконометрическое исследование зарплат (первый пост), и на этот раз разберем перекрестные переменные (переменные взаимодействия) на конкретном примере.
Это произведение двух или более регрессоров, которое добавляем в модель. Они помогают найти скрытое влияние признаков на таргет.
В моем исследовании удачным оказалось взаимодействие пола (0-м/1-ж) и уровня образования (0-школа, 1-колледж, 2-универ).
Теперь разберем конкретно мой кейс
Сначала модель была такой:
log_wage ~ age + educ + femaleТест Рамсея показал, что модель неправильно специфицирована.
Добавил квадрат возраста — тест все еще показывал проблемы. Тогда добавил взаимодействие образования и пола.
Новая модель:
log_wage ~ age + I(age**2) + educ + female + educ:femaleРезультаты:
• Все регрессоры стали значимы на 10%
• Тест Рамсея: модель теперь верна
• R-squared adjusted вырос с 0.252 до 0.286
• Обнаружен значимый эффект взаимодействия
Как интерпретировать коэффициенты?
В модели с взаимодействием:
•
educ: влияние образования для мужчин (female=0)•
female: разница в зарплате при нулевом образовании (educ=0)•
educ:female: дополнительное влияние образования для женщинЧто на практике?
Для мужчин (female=0):
Каждый уровень образования увеличивает зарплату на ~33.5% (коэф. 0.3352, p=0.000)
Для женщин (female=1):
Общий эффект: 0.3352 + (-0.2827) = 0.0525
Каждый уровень образования дает всего ~5.3% прибавки
Гендерный разрыв:
•
educ:female = -0.2827 (p=0.009) — отдача от образования для женщин значительно ниже•
female = -0.2775 (p=0.057) — на старте карьеры женщины уже получают меньшеЧто видно на графике?
Визуализация подтверждает: у мужчин — крутой рост зарплаты с образованием, у женщин — почти горизонтальная линия. Разница особенно очевидна при переходе к высшему образованию.
Главный инсайт:
Проблема не только в том, что женщины получают меньше. Они получают значительно меньшую отдачу за каждый уровень образования.
Ставьте ❤️, если использовали перекрестные переменные
🔥, если будете использовать
⚡️, если хотите больше постов про эконометрику
Ссылка на мое исследование
#аналитические_методы #статистика #эконометрика #анализ_данных
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥3🤩2❤1😈1
Этот метод pandas я использую каждый день. И вот почему 🟢🟡🔴
Решил продолжить серию постов про визуализацию данных (первый пост), и сегодня расскажу про красивый способ табличной визуализации
Речь пойдет про🎨
Подробно расскажу про 2 его модификации –
highlight_min/max⚡️
Позволяет выделить желаемым цветом минимум/максимум по столбцу/строке.
Это может быть полезно, например, для:
- поиска лучшей по метрике качества модели, когда мы обучаем много моделей и хотим понять, какая показала лучшее качество
- поиска аномалий во временных рядах (поиске минимума/максимума величины за период)
Пример с временным рядом (фото 1):
background_gradient🚩
Позволяет раскрасить столбцы/строки в палитру, где наименьшие значения будут, например, ярко красными, а наибольшие тёмно-зелёными.
Это может быть полезно, например, для:
- сравнения финансовых показателей компаний при составлении портфеля – визуализация позволяет провести комплексный анализ
- ранжирования моделей по значению метрики качества (удобно определить, например, какой класс моделей демонстрирует лучшее качество на этих данных)
Пример сравнения ML-моделей (фото 2):
Также
А вы используете данный инструмент? 🤔
❤️ Да, использую и кайфую
🔥 Нет, но теперь буду использовать!
Пишите в комментариях, какая тематика постов вам интересна?💬
#визуализация_данных #pandas #python
Решил продолжить серию постов про визуализацию данных (первый пост), и сегодня расскажу про красивый способ табличной визуализации
Речь пойдет про
df.style – метод, благодаря которому можно украшать датафреймы и выделять цветами самое важное Подробно расскажу про 2 его модификации –
highlight_min/max и background_gradient , а про другие можете прочитать в документации.highlight_min/max
Позволяет выделить желаемым цветом минимум/максимум по столбцу/строке.
Это может быть полезно, например, для:
- поиска лучшей по метрике качества модели, когда мы обучаем много моделей и хотим понять, какая показала лучшее качество
- поиска аномалий во временных рядах (поиске минимума/максимума величины за период)
Пример с временным рядом (фото 1):
import pandas as pd
import numpy as np
dates = pd.date_range('2024-03-01', periods=10, freq='D')
price_data = {
'Дата': dates,
'Цена акции, $': [152.3, 148.7, 155.2, 147.1, 159.8, 145.5, 162.3, 158.9, 144.8, 160.1]
}
df = pd.DataFrame(price_data)
print("Динамика цены акции с выделением экстремумов:")
display(df.style
.highlight_max(subset=['Цена акции, $'], color='lightgreen')
.highlight_min(subset=['Цена акции, $'], color='#ffcccc'))
background_gradient
Позволяет раскрасить столбцы/строки в палитру, где наименьшие значения будут, например, ярко красными, а наибольшие тёмно-зелёными.
Это может быть полезно, например, для:
- сравнения финансовых показателей компаний при составлении портфеля – визуализация позволяет провести комплексный анализ
- ранжирования моделей по значению метрики качества (удобно определить, например, какой класс моделей демонстрирует лучшее качество на этих данных)
Пример сравнения ML-моделей (фото 2):
from sklearn.metrics import mean_absolute_error, mean_squared_error, mean_absolute_percentage_error
import numpy as np
def calculate_metrics(y_true, y_pred, model_name):
mae = mean_absolute_error(y_true, y_pred)
mse = mean_squared_error(y_true, y_pred)
rmse = np.sqrt(mse)
mape = mean_absolute_percentage_error(y_true, y_pred) * 100
return {
'Модель': model_name,
'MAE': mae,
'MSE': mse,
'RMSE': rmse,
'MAPE': mape,
}
# Пример вычисления метрик для разных моделей
metrics_arima100 = calculate_metrics(y_true, y_pred_arima100, 'ARIMA(1,0,0)')
metrics_arima020 = calculate_metrics(y_true, y_pred_arima020, 'ARIMA(0,2,0)')
metrics_ets = calculate_metrics(y_true, y_pred_ets, 'ETS')
import pandas as pd
metrics_df = pd.DataFrame([metrics_arima100, metrics_arima020, metrics_ets])
metrics_df = metrics_df.set_index('Модель')
print("Метрики качества моделей:")
display(metrics_df.style
.background_gradient(subset=['MAE', 'MSE', 'RMSE', 'MAPE'], cmap='RdYlGn_r'))
Также
style можно использовать для покраски текста, форматирования чисел и других крутых визуализаций.А вы используете данный инструмент? 🤔
❤️ Да, использую и кайфую
🔥 Нет, но теперь буду использовать!
Пишите в комментариях, какая тематика постов вам интересна?
#визуализация_данных #pandas #python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9⚡3👍3❤1😈1
Штраф за сложность: разбираем Ridge и Lasso на пальцах ⚖️
Сегодня я решил разобрать регуляризацию в контексте линейной регрессии. Если ваша модель идеально предсказывает данные, на которых выучилась, и проваливается на новых — этот пост для вас. Сегодня разбираем, как два вида регуляризации — Ridge и Lasso — помогают бороться с этой проблемой
Зачем нужна регуляризация? 🤔
Во первых, регуляризация снижает переобучение модели - излишнюю подгонку под обучающую выборку и неспособность хорошо работать на новых данных (пост про переобучение обязательно когда-нибудь напишу). Эмпирически доказано, что к переобучению ведут большие веса и большое количество признаков. Так вот, регуляризация помогает снизить или даже занулить (чаще всего в случае применения Lasso) веса.
Во вторых, регуляризация может помочь в отборе признаков . Это касается L1-регуляризации (Lasso регрессии). Менее важные предикторы исключаются путём обнуления их коэффициентов.
Чем отличаются Ridge и Lasso от обычной линейной регрессии? 🧩
Они подразумевают наличие дополнительного штрафа в функции потерь (фото). В случае Lasso, это L1-норма весов (то есть коэффициент регуляризации лямбда, умноженный на сумму модулей весов). В случае Ridge, это L2-норма весов (то есть коэффициент регуляризации лямбда, умноженный на сумму квадратов весов). С помощью этого штрафа как раз и уменьшается подгонка под обучающие данные и, как следствие, переобучение.
Когда использовать Ridge, а когда – Lasso? ⚔️
Ridge отлично подходит, когда мы предполагаем, что все регрессоры в модели важны и хоть немного влияют на таргет и при этом хотим снизить переобучение. Ridge только уменьшает коэффициенты перед признаками, оставляя все регрессоры в модели.
Lasso пригодится, если мы предполагаем, что в модели есть избыточные регрессоры, которые не оказывают значимого влияния на таргет и только зашумляют модель. Lasso автоматически отбирает значимые признаки , упрощая модель и снижая вероятность переобучиться.
Кейсы из моей практики, когда пригодились Ridge и Lasso 💼
Ridge🏔: В рамках одного из дз по ML я работал с данными о поездках на такси в Нью-Йорке. Таргетом была продолжительность поездок. Действительно информативных признаков было около 15 – это были признаки на основе координат и признаки на основе времени начала/конца поездки. Понять, что эти признаки скорее всего будут информативными, мне помог EDA, который я провел до моделирования. Благодаря Ridge регуляризации модель не переобучилась под какие-то очень информативные признаки и при этом не зануляла никакие веса, как могло бы получиться с Lasso, и качество получилось хорошим.
Lasso🪢: Однажды, перед тем, как обучать бустинговую модель, я отобрал признаки с помощью Lasso-регрессии. Lasso занулил веса перед неинформативными признаками, и я не использовал такие признаки в бустинге. Качество получилось отличным. Для эксперимента я проверил, каким бы было качество без предварительного отбора признаков, и оно оказалось хуже.
💎 Резюмируем
Боитесь переобучения и хотите сделать модель стабильнее — ваш выбор Ridge.
Нужно упростить модель и отобрать самые важные признаки — смело применяйте Lasso.
Регуляризация — это инструмент для создания более надежных и интерпретируемых моделей.
А вы уже используете Ridge или Lasso в своих проектах?
Делитесь опытом в комментариях!💬
Также в процессе подготовки этого поста я нашёл классную статью на Хабре. В ней более подробно описана математическая поднаготная Ridge и Lasso регрессий. Если интересно лучше углубиться – советую прочитать!
Еще есть статья на geeksforgeeks, она более простая для восприятия.
Ставьте
🔥, если хотите больше постов про линейные модели
и ❤️, если пост был для вас полезен
#ml #анализ_данных #регрессия
Сегодня я решил разобрать регуляризацию в контексте линейной регрессии. Если ваша модель идеально предсказывает данные, на которых выучилась, и проваливается на новых — этот пост для вас. Сегодня разбираем, как два вида регуляризации — Ridge и Lasso — помогают бороться с этой проблемой
Зачем нужна регуляризация? 🤔
Во первых, регуляризация снижает переобучение модели - излишнюю подгонку под обучающую выборку и неспособность хорошо работать на новых данных (пост про переобучение обязательно когда-нибудь напишу). Эмпирически доказано, что к переобучению ведут большие веса и большое количество признаков. Так вот, регуляризация помогает снизить или даже занулить (чаще всего в случае применения Lasso) веса.
Во вторых, регуляризация может помочь в отборе признаков . Это касается L1-регуляризации (Lasso регрессии). Менее важные предикторы исключаются путём обнуления их коэффициентов.
Чем отличаются Ridge и Lasso от обычной линейной регрессии? 🧩
Они подразумевают наличие дополнительного штрафа в функции потерь (фото). В случае Lasso, это L1-норма весов (то есть коэффициент регуляризации лямбда, умноженный на сумму модулей весов). В случае Ridge, это L2-норма весов (то есть коэффициент регуляризации лямбда, умноженный на сумму квадратов весов). С помощью этого штрафа как раз и уменьшается подгонка под обучающие данные и, как следствие, переобучение.
Когда использовать Ridge, а когда – Lasso? ⚔️
Ridge отлично подходит, когда мы предполагаем, что все регрессоры в модели важны и хоть немного влияют на таргет и при этом хотим снизить переобучение. Ridge только уменьшает коэффициенты перед признаками, оставляя все регрессоры в модели.
Lasso пригодится, если мы предполагаем, что в модели есть избыточные регрессоры, которые не оказывают значимого влияния на таргет и только зашумляют модель. Lasso автоматически отбирает значимые признаки , упрощая модель и снижая вероятность переобучиться.
Кейсы из моей практики, когда пригодились Ridge и Lasso 💼
Ridge🏔: В рамках одного из дз по ML я работал с данными о поездках на такси в Нью-Йорке. Таргетом была продолжительность поездок. Действительно информативных признаков было около 15 – это были признаки на основе координат и признаки на основе времени начала/конца поездки. Понять, что эти признаки скорее всего будут информативными, мне помог EDA, который я провел до моделирования. Благодаря Ridge регуляризации модель не переобучилась под какие-то очень информативные признаки и при этом не зануляла никакие веса, как могло бы получиться с Lasso, и качество получилось хорошим.
Lasso🪢: Однажды, перед тем, как обучать бустинговую модель, я отобрал признаки с помощью Lasso-регрессии. Lasso занулил веса перед неинформативными признаками, и я не использовал такие признаки в бустинге. Качество получилось отличным. Для эксперимента я проверил, каким бы было качество без предварительного отбора признаков, и оно оказалось хуже.
💎 Резюмируем
Боитесь переобучения и хотите сделать модель стабильнее — ваш выбор Ridge.
Нужно упростить модель и отобрать самые важные признаки — смело применяйте Lasso.
Регуляризация — это инструмент для создания более надежных и интерпретируемых моделей.
А вы уже используете Ridge или Lasso в своих проектах?
Делитесь опытом в комментариях!
Также в процессе подготовки этого поста я нашёл классную статью на Хабре. В ней более подробно описана математическая поднаготная Ridge и Lasso регрессий. Если интересно лучше углубиться – советую прочитать!
Еще есть статья на geeksforgeeks, она более простая для восприятия.
Ставьте
🔥, если хотите больше постов про линейные модели
и ❤️, если пост был для вас полезен
#ml #анализ_данных #регрессия
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥6😍3⚡1👍1😈1👨💻1
Цифры, из-за которых хочется бросить всё и уехать в Штаты 😮
Недавно я решил сделать последнее ДЗ курса по ML, которое когда-то отложил до лучших времён 🙃🤫
Там было предложено поработать с данными по зарплатам IT-специалистов (ссылка на датасет). Выше можете найти пост про элегантный способ визуализации данных, разобранный на примере данного датасета.
В ходе feature engineering у меня появилась идея рассматривать не отдельные страны, а объединить их в макрорегионы: Северная Америка, Латинская Америка, Западная Европа, Восточная Европа, Азия, Африка и Океания🌎
Я визуализировал среднюю зарплату по макрорегионам и очень удивился, увидев такую картину (фото 1).
Средняя зарплата в Северной Америке почти в 2 раза выше, чем в Океании, которая находится на 2 месте.
Затем я обучал бустинги и при анализе важности признаков заметил, что для CatBoost флаг работы в Северной Америке с большим отрывом является важнейшим признаком , влияющим на зарплату, (фото 2), что подтверждает устойчивость наблюдаемого явления.
Меня смутили такие результаты и я решил проверить, что данные в разных макрорегионах сбалансированы по грейдам (джуниор/миддл/сеньор/лид), а также зарплаты внутри одних и тех же грейдов подчиняются той же закономерности. Оказалось, что закономерность сохраняется и внутри грейдов, но в большинстве грейдов отрыв Северной Америки не такой радикальный.
При этом присутствует сильный дисбаланс грейдов по макро регионам. В Северной Америке ~74% представителей выборки – сеньоры. В остальном мире доля сеньоров ~30%. Поэтому значительная часть разрыва, продемонстрированного на фото 1, объясняется смещённой структурой IT-сообщества в Северной Америке в сторону старших грейдов. Однако тот факт, что закономерность сохраняется и внутри грейдов, окончательно подтверждает ее устойчивость.
Для себя я выделил 3 главные причины данного явления:
• Концентрация капитала💲 . В Северной Америке сфокусирована основная доля мирового венчурного капитала, а также базируются крупнейшие технологические компании (FAANG и др.). Такая среда порождает высочайшую конкуренцию за грамотных специалистов и приводит к бусту зарплат.
• Культура акций (equity)📈 . В Северной Америке, особенно в США, принято оплачивать часть дохода специалистов акциями компании. Это не просто бонус, а существенная часть компенсационного пакета, которая серьёзно влияет на общий доход и мотивацию.
• Высокая мобильность специалистов🦘 . Частая смена работы за бОльшие деньги — это норма. Компании вынуждены постоянно поднимать зарплаты, чтобы удержать лучших, что в итоге "раздувает" вилки оплаты на рынке.
А какие причины данного явления можете выделить вы?
Пишите в комментариях💬
Ставьте
🤩 если готовы прямо сейчас бросить всё и ехать в Северную Америку работать
🐳 если хотите больше постов про EDA и поиск инсайтов в данных
👨💻 если хотите больше постов про IT-рынок труда
#из_моей_практики #рынок_труда #исследование_зарплат
Недавно я решил сделать последнее ДЗ курса по ML, которое когда-то отложил до лучших времён 🙃🤫
Там было предложено поработать с данными по зарплатам IT-специалистов (ссылка на датасет). Выше можете найти пост про элегантный способ визуализации данных, разобранный на примере данного датасета.
В ходе feature engineering у меня появилась идея рассматривать не отдельные страны, а объединить их в макрорегионы: Северная Америка, Латинская Америка, Западная Европа, Восточная Европа, Азия, Африка и Океания
Я визуализировал среднюю зарплату по макрорегионам и очень удивился, увидев такую картину (фото 1).
Средняя зарплата в Северной Америке почти в 2 раза выше, чем в Океании, которая находится на 2 месте.
Затем я обучал бустинги и при анализе важности признаков заметил, что для CatBoost флаг работы в Северной Америке с большим отрывом является важнейшим признаком , влияющим на зарплату, (фото 2), что подтверждает устойчивость наблюдаемого явления.
Меня смутили такие результаты и я решил проверить, что данные в разных макрорегионах сбалансированы по грейдам (джуниор/миддл/сеньор/лид), а также зарплаты внутри одних и тех же грейдов подчиняются той же закономерности. Оказалось, что закономерность сохраняется и внутри грейдов, но в большинстве грейдов отрыв Северной Америки не такой радикальный.
При этом присутствует сильный дисбаланс грейдов по макро регионам. В Северной Америке ~74% представителей выборки – сеньоры. В остальном мире доля сеньоров ~30%. Поэтому значительная часть разрыва, продемонстрированного на фото 1, объясняется смещённой структурой IT-сообщества в Северной Америке в сторону старших грейдов. Однако тот факт, что закономерность сохраняется и внутри грейдов, окончательно подтверждает ее устойчивость.
Для себя я выделил 3 главные причины данного явления:
• Концентрация капитала
• Культура акций (equity)
• Высокая мобильность специалистов
А какие причины данного явления можете выделить вы?
Пишите в комментариях
Ставьте
🤩 если готовы прямо сейчас бросить всё и ехать в Северную Америку работать
🐳 если хотите больше постов про EDA и поиск инсайтов в данных
👨💻 если хотите больше постов про IT-рынок труда
#из_моей_практики #рынок_труда #исследование_зарплат
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👨💻8🐳7🔥4❤1👏1😈1
Мышление как суперсила: мой путь развития 🧠💥
В этой серии постов я хочу поговорить про аналитическое мышление — навык, который считаю самым ценным для специалистов, работающих с данными, да и не только. Эти посты будут полезны как практикующим аналитикам, так и школьникам, студентам и их родителям.
На мой взгляд, ум человека можно разделить на 3 составляющие:
• знания
• кругозор
• мышление
Многие хорошо понимают, как набраться знаний в конкретной области или расширить кругозор. Это можно сделать в любом возрасте.
Куда интереснее разобрать, как развивать мышление. Ведь это в целом сложнее, так еще и с годами усложняется.
Всю свою сознательную жизнь я так или иначе занимался активностями, которые направлены на развитие мышления. В начале пути родители направляли меня, а позже я сам оценил, насколько это важно и понял, что мне нравится осознавать, что я мыслю яснее и понимаю, как совершенствоваться в этом.
В школьные годы процесс развития моего мышления был связан не только с решением математических/логических задач в школе, но и с:
1. Шахматами♟
Свой путь в этой игре я начал еще в 5 лет, потом в 8 перестал ими заниматься, а в 14 вернулся. Именно шахматам я в большей мере благодарен наличию у меня любви к анализу и прогнозированию наперед.
В дальнейшем это помогло мне как в изучении наук о данных, так и в работе. Например, опыт в просчитывании ходов наперед помогает в планировании работы над проектами, помогает чувствовать, что может пойти не так и на какие этапы стоит заложить больше времени.
2. Просмотром разборов футбольных матчей⚽️
Каждую неделю я смотрел по несколько разборов матчей из топовых лиг на YouTube, где ведущий разбирал планы команд на матч, структуру игры, перемещения игроков.
Это помогало мне не только лучше играть в футбол, но и развивало навык системного мышления, понимание, как использовать свои сильные и слабые стороны. Эти навыки пригождаются мне постоянно.
Например, при построении дашбордов я стараюсь оценивать продукт со всех сторон и строить визуализации, которые выстраиваются в общую картину и помогают сделать полезные для бизнеса выводы.
Все эти активности заложили во мне фундамент, который помог подготовиться к поступлению в Университет, войти в сферу аналитики и в целом расти как личность.
В следующем посте — главные инструменты развития аналитического мышления. 🔧
Разберем всё: от наук и логики до игр и рабочих задач.
А задумывались ли вы над тем, что сильнее всего повлияло на развитие вашего мышления? 🤔Пишите в комментариях!💬
Ставьте
❤️, если согласны, что активности из детства являются ключевым фактором в развитии мышления,
🔥, если использовали похожие практики для развития аналитического мышления
и 👀, если ждёте продолжения серии
#жизнь_аналитика
#софт_скиллы
#образование
#аналитическое_мышление
В этой серии постов я хочу поговорить про аналитическое мышление — навык, который считаю самым ценным для специалистов, работающих с данными, да и не только. Эти посты будут полезны как практикующим аналитикам, так и школьникам, студентам и их родителям.
На мой взгляд, ум человека можно разделить на 3 составляющие:
• знания
• кругозор
• мышление
Многие хорошо понимают, как набраться знаний в конкретной области или расширить кругозор. Это можно сделать в любом возрасте.
Куда интереснее разобрать, как развивать мышление. Ведь это в целом сложнее, так еще и с годами усложняется.
Всю свою сознательную жизнь я так или иначе занимался активностями, которые направлены на развитие мышления. В начале пути родители направляли меня, а позже я сам оценил, насколько это важно и понял, что мне нравится осознавать, что я мыслю яснее и понимаю, как совершенствоваться в этом.
В школьные годы процесс развития моего мышления был связан не только с решением математических/логических задач в школе, но и с:
1. Шахматами
Свой путь в этой игре я начал еще в 5 лет, потом в 8 перестал ими заниматься, а в 14 вернулся. Именно шахматам я в большей мере благодарен наличию у меня любви к анализу и прогнозированию наперед.
В дальнейшем это помогло мне как в изучении наук о данных, так и в работе. Например, опыт в просчитывании ходов наперед помогает в планировании работы над проектами, помогает чувствовать, что может пойти не так и на какие этапы стоит заложить больше времени.
2. Просмотром разборов футбольных матчей
Каждую неделю я смотрел по несколько разборов матчей из топовых лиг на YouTube, где ведущий разбирал планы команд на матч, структуру игры, перемещения игроков.
Это помогало мне не только лучше играть в футбол, но и развивало навык системного мышления, понимание, как использовать свои сильные и слабые стороны. Эти навыки пригождаются мне постоянно.
Например, при построении дашбордов я стараюсь оценивать продукт со всех сторон и строить визуализации, которые выстраиваются в общую картину и помогают сделать полезные для бизнеса выводы.
Все эти активности заложили во мне фундамент, который помог подготовиться к поступлению в Университет, войти в сферу аналитики и в целом расти как личность.
В следующем посте — главные инструменты развития аналитического мышления. 🔧
Разберем всё: от наук и логики до игр и рабочих задач.
А задумывались ли вы над тем, что сильнее всего повлияло на развитие вашего мышления? 🤔Пишите в комментариях!
Ставьте
❤️, если согласны, что активности из детства являются ключевым фактором в развитии мышления,
🔥, если использовали похожие практики для развития аналитического мышления
и 👀, если ждёте продолжения серии
#жизнь_аналитика
#софт_скиллы
#образование
#аналитическое_мышление
Please open Telegram to view this post
VIEW IN TELEGRAM
👀5❤4🔥3👏1
Pandas: полная roadmap для начинающих 🐼
Сегодня решил собрать для вас подборку полезных материалов по pandas - библиотеке для работы с табличными данными
В интернете множество материалов по этой библиотеке, но новичку может быть трудно разобраться во всем этом ворохе, поэтому постарался собрать все максимально нужное🔝
Для начала обсудим темы, которые нужно изучить для старта.
В дальнейшем можете проверять свой прогресс по этому списку🔼 :
Базовые операции:
• Чтение/загрузка файлов (.xlsx, .csv)
• Выбор нужных столбцов
• Методы информации о датафрейме (.columns, .info(), .isnull().sum())
Анализ данных:
• Анализ столбцов (.unique(), .nunique(), .describe())
• Быстрая визуализация (.hist())
• Фильтрация данных (&, |)
• Сортировка (sort_values())
Продвинутые методы:
• Методы .loc и .iloc
• Merge для соединений таблиц
• Поиск дубликатов (.duplicated())
• Группировка (.groupby() + .agg())
Теперь о ресурсах, с помощью которых это всё можно изучить 📚:
1. Есть отличный туториал на YouTube, где все методы разбираются на примере работы с реальными данными. Если выберете его для изучения, рекомендую параллельно с просмотром самостоятельно выполнять те же действия у себя в Jupyter. Так материал усвоится в разы лучше, чем если просто посмотреть + у вас останется ноутбук, к которому сможете возвращаться, если подзабудете что-то. Он на английском языке. Если для вас лучше на русском, смотрите варианты ниже.📺
2. Супер плейлист, разбитый по темам. Так же, как и в первом случае, рекомендую параллельно самостоятельно выполнять код. Плейлист очень удобен для точечного изучения тем📌
3. Видео на русском языке🇷🇺
4. Статья-шпаргалка на Хабре, где разбирается большинство нужных для начала методов. 📰
Рекомендую не пытаться изучить всё сразу. Правильнее всего будет изучить базовые методы, а потом, по мере надобности, гуглить и читать материалы.
💡 Формула поиска: «pandas + [что сделать] + [с чем]»
Например, вы встретились с задачей, где нужно заменить конкретные значения столбца, соответствующие условию, конкретными числами.
Заходите в поисковик и набираете: «pandas замена значений в столбце по условию». Сразу же видите статью на geeksforgeeks, где подробно разбирается, как сделать это, так еще и тремя разными способами!🤩
Если хотите сразу потренироваться, рекомендую вот это ДЗ с майнора ФКН ВШЭ. Оно делается недолго, но будет очень полезно для отработки теории!⚡️
Так же рекомендую сохранить ноутбук-шпаргалку - это сэкономит часы в будущем! 🕰
Пишите в комментариях, какую подборку материалов хотели бы увидеть в следующий раз?💬
Ставьте ❤️, если было полезно, 🔥, если будете изучать pandas по этому плану
и 👀, если ждёте новые подборки!
Сегодня решил собрать для вас подборку полезных материалов по pandas - библиотеке для работы с табличными данными
В интернете множество материалов по этой библиотеке, но новичку может быть трудно разобраться во всем этом ворохе, поэтому постарался собрать все максимально нужное
Для начала обсудим темы, которые нужно изучить для старта.
В дальнейшем можете проверять свой прогресс по этому списку
Базовые операции:
• Чтение/загрузка файлов (.xlsx, .csv)
• Выбор нужных столбцов
• Методы информации о датафрейме (.columns, .info(), .isnull().sum())
Анализ данных:
• Анализ столбцов (.unique(), .nunique(), .describe())
• Быстрая визуализация (.hist())
• Фильтрация данных (&, |)
• Сортировка (sort_values())
Продвинутые методы:
• Методы .loc и .iloc
• Merge для соединений таблиц
• Поиск дубликатов (.duplicated())
• Группировка (.groupby() + .agg())
Теперь о ресурсах, с помощью которых это всё можно изучить 📚:
1. Есть отличный туториал на YouTube, где все методы разбираются на примере работы с реальными данными. Если выберете его для изучения, рекомендую параллельно с просмотром самостоятельно выполнять те же действия у себя в Jupyter. Так материал усвоится в разы лучше, чем если просто посмотреть + у вас останется ноутбук, к которому сможете возвращаться, если подзабудете что-то. Он на английском языке. Если для вас лучше на русском, смотрите варианты ниже.
2. Супер плейлист, разбитый по темам. Так же, как и в первом случае, рекомендую параллельно самостоятельно выполнять код. Плейлист очень удобен для точечного изучения тем
3. Видео на русском языке
4. Статья-шпаргалка на Хабре, где разбирается большинство нужных для начала методов. 📰
Рекомендую не пытаться изучить всё сразу. Правильнее всего будет изучить базовые методы, а потом, по мере надобности, гуглить и читать материалы.
Например, вы встретились с задачей, где нужно заменить конкретные значения столбца, соответствующие условию, конкретными числами.
Заходите в поисковик и набираете: «pandas замена значений в столбце по условию». Сразу же видите статью на geeksforgeeks, где подробно разбирается, как сделать это, так еще и тремя разными способами!
Если хотите сразу потренироваться, рекомендую вот это ДЗ с майнора ФКН ВШЭ. Оно делается недолго, но будет очень полезно для отработки теории!⚡️
Так же рекомендую сохранить ноутбук-шпаргалку - это сэкономит часы в будущем! 🕰
Пишите в комментариях, какую подборку материалов хотели бы увидеть в следующий раз?
Ставьте ❤️, если было полезно, 🔥, если будете изучать pandas по этому плану
и 👀, если ждёте новые подборки!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👀3👍2🍓2🔥1
100 подписчиков! 🎉
Огромное спасибо каждому, кто читает мой канал! Обещаю много интересных постов и чаще выпускать новый контент🚀
Ваша поддержка очень важна!❤️
Огромное спасибо каждому, кто читает мой канал! Обещаю много интересных постов и чаще выпускать новый контент
Ваша поддержка очень важна!❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤4