Цифры, из-за которых хочется бросить всё и уехать в Штаты 😮
Недавно я решил сделать последнее ДЗ курса по 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
Красивая визуализация: множественные линии в Plotly 📈🔝
Продолжаю рассказывать про красивые способы визуализации. Сегодня разберем комбинацию линейных графиков, которую удобно построить с помощью plotly.
Мне такой график помог визуализировать динамику количества поездок по часам в сутках в разбивке по дням недели. По нему удобно сравнивать динамику показателя в зависимости от категориального признака (в моём случае – день недели).
Синтаксис + пример построения графика:
💡 Какие инсайты выявил график:
• Воскресенье : минимум поездок днем + пик в ночные часы
Объяснение: люди возвращаются с вечерних мероприятий
• Рабочие дни : утренний/вечерний пик спроса
Объяснение: классические "часы пик" по дороге на работу и домой
• Общая динамика : ночной спад → утренний рост → вечерний пик
Объяснение: универсальный паттерн городской мобильности
Как нетрудно заметить, казалось бы, простой график дал нам возможность выудить несколько важных инсайтов из данных.
Мне кажется, что построить подобный график с помощью matplotlib/seaborn было бы сложнее. Именно в таких случаях мне нравится использовать plotly.
А вы используете plotly в повседневных задачах? Какие библиотеки визуализации предпочитаете? Пишите в комментариях💬
Ссылка на выполненное мной ДЗ, где я строил данный график🔗
Ссылка на документацию plotly🔗
Ставьте:
❤️ — если было полезно
🔥 — если хотите видеть больше постов про визуализацию данных
⚡️ — если интересно почитать конкретно про plotly
#визуализация_данных #python #аналитические_методы #из_моей_практики
Продолжаю рассказывать про красивые способы визуализации. Сегодня разберем комбинацию линейных графиков, которую удобно построить с помощью plotly.
Мне такой график помог визуализировать динамику количества поездок по часам в сутках в разбивке по дням недели. По нему удобно сравнивать динамику показателя в зависимости от категориального признака (в моём случае – день недели).
Синтаксис + пример построения графика:
import plotly.graph_objects as go
# Подготовка данных
trip_day_count_dt = (df.groupby('pickup_datetime')['id']
.count()
.reset_index(name='trip_count')
.sort_values(by='pickup_datetime'))
trip_day_count_dt['hour'] = trip_day_count_dt.pickup_datetime.dt.hour
trip_day_count_dt['dayofweek'] = trip_day_count_dt['pickup_datetime'].dt.day_name()
hour_day_trip_count = (trip_day_count_dt
.groupby(['hour', 'dayofweek'])['trip_count']
.sum()
.reset_index(name='trips'))
# Построение графика
fig = go.Figure()
for day in hour_day_trip_count['dayofweek'].unique():
day_data = hour_day_trip_count[hour_day_trip_count["dayofweek"] == day]
fig.add_trace(
go.Scatter(
x=day_data["hour"],
y=day_data["trips"],
name=str(day)
)
)
fig.update_layout(
title="Динамика поездок по часам суток",
xaxis_title="Час суток",
yaxis_title="Количество поездок",
width=1400,
height=600
)
fig.show()
💡 Какие инсайты выявил график:
• Воскресенье : минимум поездок днем + пик в ночные часы
Объяснение: люди возвращаются с вечерних мероприятий
• Рабочие дни : утренний/вечерний пик спроса
Объяснение: классические "часы пик" по дороге на работу и домой
• Общая динамика : ночной спад → утренний рост → вечерний пик
Объяснение: универсальный паттерн городской мобильности
Как нетрудно заметить, казалось бы, простой график дал нам возможность выудить несколько важных инсайтов из данных.
Мне кажется, что построить подобный график с помощью matplotlib/seaborn было бы сложнее. Именно в таких случаях мне нравится использовать plotly.
А вы используете plotly в повседневных задачах? Какие библиотеки визуализации предпочитаете? Пишите в комментариях
Ссылка на выполненное мной ДЗ, где я строил данный график
Ссылка на документацию plotly
Ставьте:
❤️ — если было полезно
🔥 — если хотите видеть больше постов про визуализацию данных
⚡️ — если интересно почитать конкретно про plotly
#визуализация_данных #python #аналитические_методы #из_моей_практики
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥4⚡1🥰1😍1😈1
Мультиколлинеарность: как найти и обезвредить ⚠️🔧
Начинаю серию постов о проблемах в данных, которые исследует эконометрика.
В этой серии разберем такие проблемы и борьбу с ними:
• Выбросы в данных
• Гетероскедастичность
• Ненормальные распределения остатков и тд
А сегодня поговорим про мультиколлинеарность - сильную коррелированность регрессоров между собой, то есть линейную связь между ними, мешающую строить эффективные оценки.
Несмещенными и состоятельными оценки при этом остаются
Нарушение эффективности влечёт за собой сильную чувствительность оценок к выборке: оценки становятся неустойчивыми к малейшим изменениям в выборке, а доверительные интервалы слишком расширяются, что затрудняет интерпретацию.
Почему нужно бороться с мультиколлинеарностью?💊
При сильной мультиколлинеарности регрессионная модель может не обучиться, выдав ошибку вырожденной матрицы или численной нестабильности.
Важный нюанс: Ансамблевые методы (бустинг, случайный лес) более устойчивы к мультиколлинеарности, чем линейные модели, благодаря встроенному отбору признаков.
Однако даже в ансамблях мультиколлинеарность может:
• Снижать интерпретируемость feature importance
• Делать модель менее стабильной при небольших изменениях данных
• Увеличивать время обучения без прироста качества
Поэтому анализ корреляций полезен при работе с любыми моделями.
Как распознать данную особенность в данных? 🕵️♂️
Столкнуться с мультиколлинеарностью можно при анализе практически любых табличных данных, будь то финансовые показатели или, например, признаки поддержанных автомобилей.
Мультиколлинеарность можно заметить, посмотрев на матрицу корреляций. Если в ней встречаются высокие значения (как правило, высокими корреляциями считают корреляции >0.8), значит, в данных скорее всего присутствует мультиколлинеарность.
Также можно рассчитать Variance inflation factor (VIF) - подробнее про него можно прочитать здесь.
Если кратко, то чем больше его значение, тем выше степень мультиколлинеарности. VIF > 5 указывает на умеренную, VIF > 10 — на серьезную мультиколлинеарность.
На практике, обычно смотрят на VIF и уже в зависимости от его значения решают, нужно ли бороться с мультиколлинеарностью, или же она незначительна.
Что делать, если обнаружили мультиколлинеарность? 🤔
Есть несколько способов борьбы с мультиколлинеарностью. Рассмотрим основные из них:
• Удаление одного из скоррелированных признаков
Удаляем признаки с высоким VIF по одному, пока все показатели не придут в норму
• Смена функциональной формы
Создаём новые признаки на основе старых: например, заменяем рост и вес на индекс массы тела. Убирает мультиколлинеарность, сохраняя смысл.
• Ортогонализация факторов
Преобразуем признаки так, чтобы они стали статистически независимыми. Например, с помощью метода главных компонент (PCA). Полностью решает проблему, но усложняет интерпретацию коэффициентов.
• Ridge/Lasso регрессия
Добавляют штраф за большие коэффициенты, "усредняя" вклад коррелированных признаков. Ridge уменьшает все коэффициенты, Lasso — обнуляет менее важные.
Я чаще всего пробую удаление скоррелированных признаков или Lasso регрессию, но другие методы тоже хороши и эффективны.
Полезные материалы 📚
В процессе подготовки этого поста я наткнулся на классную статью на Хабре 📰
Если хотите детальнее углубиться в проблему мультиколлинеарности и лучше понять теорию, которая за ней стоит, рекомендую данную лекцию📺
А сталкивались ли Вы с мультиколлинеарностью в своих задачах или исследованиях? Пишите в комментарии💬
Ставьте 🔥, если интересна серия постов про проблемы, которые изучает эконометрика,
❤️, если пост был полезен,
и ⚡️, если уже использовали упомянутые методы для борьбы с мультиколлинеарностью
Начинаю серию постов о проблемах в данных, которые исследует эконометрика.
В этой серии разберем такие проблемы и борьбу с ними:
• Выбросы в данных
• Гетероскедастичность
• Ненормальные распределения остатков и тд
А сегодня поговорим про мультиколлинеарность - сильную коррелированность регрессоров между собой, то есть линейную связь между ними, мешающую строить эффективные оценки.
Несмещенными и состоятельными оценки при этом остаются
Нарушение эффективности влечёт за собой сильную чувствительность оценок к выборке: оценки становятся неустойчивыми к малейшим изменениям в выборке, а доверительные интервалы слишком расширяются, что затрудняет интерпретацию.
Почему нужно бороться с мультиколлинеарностью?
При сильной мультиколлинеарности регрессионная модель может не обучиться, выдав ошибку вырожденной матрицы или численной нестабильности.
Важный нюанс: Ансамблевые методы (бустинг, случайный лес) более устойчивы к мультиколлинеарности, чем линейные модели, благодаря встроенному отбору признаков.
Однако даже в ансамблях мультиколлинеарность может:
• Снижать интерпретируемость feature importance
• Делать модель менее стабильной при небольших изменениях данных
• Увеличивать время обучения без прироста качества
Поэтому анализ корреляций полезен при работе с любыми моделями.
Как распознать данную особенность в данных? 🕵️♂️
Столкнуться с мультиколлинеарностью можно при анализе практически любых табличных данных, будь то финансовые показатели или, например, признаки поддержанных автомобилей.
Мультиколлинеарность можно заметить, посмотрев на матрицу корреляций. Если в ней встречаются высокие значения (как правило, высокими корреляциями считают корреляции >0.8), значит, в данных скорее всего присутствует мультиколлинеарность.
Также можно рассчитать Variance inflation factor (VIF) - подробнее про него можно прочитать здесь.
Если кратко, то чем больше его значение, тем выше степень мультиколлинеарности. VIF > 5 указывает на умеренную, VIF > 10 — на серьезную мультиколлинеарность.
На практике, обычно смотрят на VIF и уже в зависимости от его значения решают, нужно ли бороться с мультиколлинеарностью, или же она незначительна.
Что делать, если обнаружили мультиколлинеарность? 🤔
Есть несколько способов борьбы с мультиколлинеарностью. Рассмотрим основные из них:
• Удаление одного из скоррелированных признаков
Удаляем признаки с высоким VIF по одному, пока все показатели не придут в норму
• Смена функциональной формы
Создаём новые признаки на основе старых: например, заменяем рост и вес на индекс массы тела. Убирает мультиколлинеарность, сохраняя смысл.
• Ортогонализация факторов
Преобразуем признаки так, чтобы они стали статистически независимыми. Например, с помощью метода главных компонент (PCA). Полностью решает проблему, но усложняет интерпретацию коэффициентов.
• Ridge/Lasso регрессия
Добавляют штраф за большие коэффициенты, "усредняя" вклад коррелированных признаков. Ridge уменьшает все коэффициенты, Lasso — обнуляет менее важные.
Я чаще всего пробую удаление скоррелированных признаков или Lasso регрессию, но другие методы тоже хороши и эффективны.
Полезные материалы 📚
В процессе подготовки этого поста я наткнулся на классную статью на Хабре 📰
Если хотите детальнее углубиться в проблему мультиколлинеарности и лучше понять теорию, которая за ней стоит, рекомендую данную лекцию
А сталкивались ли Вы с мультиколлинеарностью в своих задачах или исследованиях? Пишите в комментарии
Ставьте 🔥, если интересна серия постов про проблемы, которые изучает эконометрика,
❤️, если пост был полезен,
и ⚡️, если уже использовали упомянутые методы для борьбы с мультиколлинеарностью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥4⚡3😱1💋1😈1🎄1
Логарифмирование в анализе данных: зачем нужно и как применять ♾
Сегодня поговорим про приём, который часто помогает в анализе экономических показателей (доходов, заработных плат и т.д.) – логарифмирование. 🔍
Так повелось, что показатели, выраженные в деньгах, зачастую имеют логнормальное распределение📈 . Это значит, что если ввести новую переменную – натуральный логарифм (подойдёт любой логарифм, но принято брать натуральный) от исследуемого показателя, то его распределение станет близко к нормальному. Так происходит потому, что денежные показатели обычно имеют тяжелый правый хвост, а логарифм сглаживает разрывы между значениями. ⚖️
Зачем вообще нужно логарифмирование? 🤔
Вот несколько причин, почему при работе с денежными показателями может понадобиться логарифмирование:
⚡️ Борьба с асимметрией
Как уже упомянул выше, данные имеют скошенное распределение, которое неудобно анализировать и моделировать, так как нарушаются предпосылки многих статистических моделей (нормальное распределение ошибок, постоянная дисперсия). Происходит это из-за того, что в денежных показателях почти всегда найдутся далекие выбросы. Крупнейшие компании, миллиардеры и т.п.
📐 Необходимость относительной, а не абсолютной интерпретации
После логарифмирования интерпретация коэффициентов в линейных моделях меняется.
В лог-линейной модели (log(Y) = a + b*X) интерпретация будет такой: при увеличении X на 1 единицу, Y изменяется в среднем на (e^b - 1) * 100%.
В лог-лог модели (log(Y) = a + b*log(X)) интерпретация такая: при увеличении X на 1%, Y изменяется в среднем на b%.
Таким приёмом удобно измерять эластичность – чувствительность к изменениям. Например, если в нашей модели Y – выручка с продаж, а X – рекламный бюджет, и в лог-лог модели коэффициент перед X оказался равен 0.4, то можно сказать, что увеличение рекламного бюджета на 1% увеличивает выручку на 0.4%.💲
🎨 Улучшение качества визуализации
На одном графике сложно показать и маленькие компании, и гигантов индустрии. Логарифмическая шкала помогает увидеть относительные изменения всех наблюдений выборки одновременно.
Как правильно подходить к логарифмированию?👍
Важно отметить, что перед логарифмированием нужно проверить минимальные значения в выборке:
🔹 Если есть нули или небольшие отрицательные значения (по модулю меньше 1), хорошо подойдет ln(1 + x). В numpy для этого есть специальная функция np.log1p().
🔹 Если минимальное значение в выборке < -1, то лучше использовать преобразование: asinh(x) = ln(x + √(x² + 1))
🔹 Если все значения в выборке > 0, то идеальный вариант – просто ln(x).
Кейсы, когда мне помогло логарифмирование🔥
Я не раз прибегал к логарифмированию в рабочих и учебных проектах. Расскажу про 2 случая, когда этот приём помог.
🚕 Первый случай связан с моделированием продолжительности поездок на такси. Распределение имело тяжелейший правый хвост (Фото 1). После логарифмирования распределение стало нормальным (Фото 2) и получилось построить хорошие линейные модели. Продолжительность поездок выражена не в деньгах, но здесь все вышесказанное было уместно.
🛍 Второй случай связан с построением визуализации. В учебном проекте нужно было построить scatterplot, где по оси X была вероятность покупки товара на маркетплейсе, а по оси Y – потенциальный доход с этой продажи. Точки были раскрашены: зеленый – постоянные клиенты (покупки чаще 1 раза в месяц, суммарно более 5 покупок), красный – остальные.
Сначала я построил визуализацию без логарифмирования дохода (Фото 3). Визуализацию было сложно интерпретировать из-за нагромождения точек. После логарифмирования потенциального дохода график стал намного лучше визуально восприниматься (Фото 4). Мы всё так же можем оценить интересные взаимосвязи, но теперь график понятен.
А вы использовали логарифмирование переменных в своих проектах? Делитесь опытом в комментариях💬
Ставьте:
🔥 если пост был полезен
❤️ если хотите больше постов про преобразования данных
🤩 если хотите больше постов про работу с ненормальными распределениями
#аналитические_методы #из_моей_практики #статистика #ml #эконометрика
Сегодня поговорим про приём, который часто помогает в анализе экономических показателей (доходов, заработных плат и т.д.) – логарифмирование. 🔍
Так повелось, что показатели, выраженные в деньгах, зачастую имеют логнормальное распределение
Зачем вообще нужно логарифмирование? 🤔
Вот несколько причин, почему при работе с денежными показателями может понадобиться логарифмирование:
⚡️ Борьба с асимметрией
Как уже упомянул выше, данные имеют скошенное распределение, которое неудобно анализировать и моделировать, так как нарушаются предпосылки многих статистических моделей (нормальное распределение ошибок, постоянная дисперсия). Происходит это из-за того, что в денежных показателях почти всегда найдутся далекие выбросы. Крупнейшие компании, миллиардеры и т.п.
📐 Необходимость относительной, а не абсолютной интерпретации
После логарифмирования интерпретация коэффициентов в линейных моделях меняется.
В лог-линейной модели (log(Y) = a + b*X) интерпретация будет такой: при увеличении X на 1 единицу, Y изменяется в среднем на (e^b - 1) * 100%.
В лог-лог модели (log(Y) = a + b*log(X)) интерпретация такая: при увеличении X на 1%, Y изменяется в среднем на b%.
Таким приёмом удобно измерять эластичность – чувствительность к изменениям. Например, если в нашей модели Y – выручка с продаж, а X – рекламный бюджет, и в лог-лог модели коэффициент перед X оказался равен 0.4, то можно сказать, что увеличение рекламного бюджета на 1% увеличивает выручку на 0.4%.
На одном графике сложно показать и маленькие компании, и гигантов индустрии. Логарифмическая шкала помогает увидеть относительные изменения всех наблюдений выборки одновременно.
Как правильно подходить к логарифмированию?
Важно отметить, что перед логарифмированием нужно проверить минимальные значения в выборке:
🔹 Если есть нули или небольшие отрицательные значения (по модулю меньше 1), хорошо подойдет ln(1 + x). В numpy для этого есть специальная функция np.log1p().
🔹 Если минимальное значение в выборке < -1, то лучше использовать преобразование: asinh(x) = ln(x + √(x² + 1))
🔹 Если все значения в выборке > 0, то идеальный вариант – просто ln(x).
Кейсы, когда мне помогло логарифмирование
Я не раз прибегал к логарифмированию в рабочих и учебных проектах. Расскажу про 2 случая, когда этот приём помог.
🚕 Первый случай связан с моделированием продолжительности поездок на такси. Распределение имело тяжелейший правый хвост (Фото 1). После логарифмирования распределение стало нормальным (Фото 2) и получилось построить хорошие линейные модели. Продолжительность поездок выражена не в деньгах, но здесь все вышесказанное было уместно.
🛍 Второй случай связан с построением визуализации. В учебном проекте нужно было построить scatterplot, где по оси X была вероятность покупки товара на маркетплейсе, а по оси Y – потенциальный доход с этой продажи. Точки были раскрашены: зеленый – постоянные клиенты (покупки чаще 1 раза в месяц, суммарно более 5 покупок), красный – остальные.
Сначала я построил визуализацию без логарифмирования дохода (Фото 3). Визуализацию было сложно интерпретировать из-за нагромождения точек. После логарифмирования потенциального дохода график стал намного лучше визуально восприниматься (Фото 4). Мы всё так же можем оценить интересные взаимосвязи, но теперь график понятен.
А вы использовали логарифмирование переменных в своих проектах? Делитесь опытом в комментариях
Ставьте:
🔥 если пост был полезен
❤️ если хотите больше постов про преобразования данных
🤩 если хотите больше постов про работу с ненормальными распределениями
#аналитические_методы #из_моей_практики #статистика #ml #эконометрика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8☃4❤3🤩3💯1😈1🦄1
Невидимые враги анализа: разбираем выбросы👻 🗑
Сегодня продолжим серию постов о проблемах в данных, с которыми сталкиваются аналитики, и поговорим про выбросы.
Что такое выбросы? 🔍
Выбросы — это аномальные наблюдения, которые по своим значениям сильно отличаются от остальной выборки.
Простой пример из реальной жизни: если мы анализируем расходы на путешествия, где средний чек составляет 50,000 рублей, а одно путешествие стоит 500,000 рублей — это явный выброс. Такие наблюдения выделяются не только по цене, но и по другим признакам: длительности, категории отеля, сезону.
На что влияют выбросы и почему их следует исследовать отдельно? ⚠️
Выбросы могут серьёзно искажать наше представление о данных:
• Для описательного анализа: среднее значение смещается, дисперсия увеличивается, что мешает корректно оценивать выборку и делать выводы о генеральной совокупности
• Для построения моделей: в эконометрических и ML-моделях выбросы часто приводят к смещённым и несостоятельным оценкам
• Особенно чувствительны линейные модели — один мощный выброс может буквально «потянуть» за собой всю линию регрессии, сильно исказив результат
• Ансамблевые методы (бустинг, бэггинг) справляются лучше благодаря своей структуре, но и они не идеальны
Как найти выбросы? 🕵️♂️
Обычно выбросы ищут в контексте непрерывных признаков, используя два подхода вместе: визуализацию и статистические методы.
• Boxplot — график, который наглядно показывает распределение и выбросы. Чаще всего за выбросы принимают наблюдения, выходящие за пределы интерквартильного размаха (IQR)
• Статистические критерии: если выбросы занимают <10% данных, с ними можно работать, но всё зависит от конкретной задачи
Фото: пример boxplot с выбросами
Пока готовил пост, наткнулся на хорошую статью про боксплоты📰
Практический пример поиска:
Кейсы, когда мне приходилось бороться с выбросами🔥
🚕Первый кейс связан с всё той же задачей предсказания длительности поездок.
В датасете были поездки, длительность которых меньше 60 секунд. Скорее всего, это ошибки в данных, поэтому я исключил такие наблюдения из анализа.
👨🦳Второй кейс — исследование факторов долголетия — принципиально иной. Выбросами здесь были реальные долгожители (110+ лет). В отличие от ошибок, эти данные — ценная информация. Они могут объясняться уникальной генетикой, особыми условиями жизни (например, в "голубых зонах" Кавказа) или сочетанием факторов. Удалять их — значит игнорировать саму цель изучения предела продолжительности жизни. Вместо этого я использовал методы, устойчивые к выбросам, чтобы они не искажали общую модель, но оставались частью картины, которую мы анализируем.
В следующем посте расскажу про продвинутые методы поиска выбросов и методы их обработки🛠
А как вы обычно находите и обрабатываете выбросы? Пишите в комментариях💬
Ставьте:
🔥 если пост был полезен,
❤️ если хотите больше постов про проблемы в данных
🤩 если хотите больше постов про работу с выбросами
#аналитические_методы
#eda
#из_моей_практики
#статистика
#ml
#эконометрика
Сегодня продолжим серию постов о проблемах в данных, с которыми сталкиваются аналитики, и поговорим про выбросы.
Что такое выбросы? 🔍
Выбросы — это аномальные наблюдения, которые по своим значениям сильно отличаются от остальной выборки.
Простой пример из реальной жизни: если мы анализируем расходы на путешествия, где средний чек составляет 50,000 рублей, а одно путешествие стоит 500,000 рублей — это явный выброс. Такие наблюдения выделяются не только по цене, но и по другим признакам: длительности, категории отеля, сезону.
На что влияют выбросы и почему их следует исследовать отдельно? ⚠️
Выбросы могут серьёзно искажать наше представление о данных:
• Для описательного анализа: среднее значение смещается, дисперсия увеличивается, что мешает корректно оценивать выборку и делать выводы о генеральной совокупности
• Для построения моделей: в эконометрических и ML-моделях выбросы часто приводят к смещённым и несостоятельным оценкам
• Особенно чувствительны линейные модели — один мощный выброс может буквально «потянуть» за собой всю линию регрессии, сильно исказив результат
• Ансамблевые методы (бустинг, бэггинг) справляются лучше благодаря своей структуре, но и они не идеальны
Как найти выбросы? 🕵️♂️
Обычно выбросы ищут в контексте непрерывных признаков, используя два подхода вместе: визуализацию и статистические методы.
• Boxplot — график, который наглядно показывает распределение и выбросы. Чаще всего за выбросы принимают наблюдения, выходящие за пределы интерквартильного размаха (IQR)
• Статистические критерии: если выбросы занимают <10% данных, с ними можно работать, но всё зависит от конкретной задачи
Фото: пример boxplot с выбросами
Пока готовил пост, наткнулся на хорошую статью про боксплоты📰
Практический пример поиска:
# Простой способ посмотреть на выбросы
Q1 = data.quantile(0.25)
Q3 = data.quantile(0.75)
IQR = Q3 - Q1
outliers = data[(data < Q1 - 1.5*IQR) | (data > Q3 + 1.5*IQR)]
print(f"Найдено выбросов: {len(outliers)} ({len(outliers)/len(data)*100:.1f}%)")
Кейсы, когда мне приходилось бороться с выбросами
🚕Первый кейс связан с всё той же задачей предсказания длительности поездок.
В датасете были поездки, длительность которых меньше 60 секунд. Скорее всего, это ошибки в данных, поэтому я исключил такие наблюдения из анализа.
👨🦳Второй кейс — исследование факторов долголетия — принципиально иной. Выбросами здесь были реальные долгожители (110+ лет). В отличие от ошибок, эти данные — ценная информация. Они могут объясняться уникальной генетикой, особыми условиями жизни (например, в "голубых зонах" Кавказа) или сочетанием факторов. Удалять их — значит игнорировать саму цель изучения предела продолжительности жизни. Вместо этого я использовал методы, устойчивые к выбросам, чтобы они не искажали общую модель, но оставались частью картины, которую мы анализируем.
В следующем посте расскажу про продвинутые методы поиска выбросов и методы их обработки
А как вы обычно находите и обрабатываете выбросы? Пишите в комментариях
Ставьте:
🔥 если пост был полезен,
❤️ если хотите больше постов про проблемы в данных
🤩 если хотите больше постов про работу с выбросами
#аналитические_методы
#eda
#из_моей_практики
#статистика
#ml
#эконометрика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12🎄3☃2🌭2💋2❤1👾1
Секрет быстрого кода: векторизованные операции в Python 🏃♂️
Сегодня решил рассказать вам про силу векторизованных операций в Python и сравнить их с другими методами обработки, выявив ключевые преимущества.
Зачем они нужны?🧐
Векторизованные операции помогают производить операции над массивами не поэлементно, а сразу для всего набора данных. Это в разы ускоряет код, что особенно ценно при больших объемах данных. Простая аналогия: можно взять каждый из 1000 камней поочередно и перенести их, а можно зачерпнуть их ковшом экскаватора и перевезти все сразу. Экскаватор в данном примере и есть векторизованная операция.
В основе векторизованных операций — библиотеки NumPy (работа с массивами) и Pandas
(надстройка для таблиц).
Какие они бывают?🧬
Перечислю основные векторизованные операции, которые могут понадобиться аналитику:
1. Арифметика и базовая математика
2. Статистика по столбцу
3. Логические операции и фильтрация
- Сравнения:
-
-
-
4. Строковые операции (через `.str`)
5. Дата-время (через `.dt`)
6. Оконные функции для временных рядов
7. Быстрое создание столбцов
Ключевое преимущество векторизованных операций - скорость работы.🔥
Разберем на примере скорость работы векторизованных операций в сравнении с другими методами.
📊 Фото 1: Логарифмический барплот — визуализирует разницу в скорости на 1 млн строк.
📈 Фото 2: Зависимость времени от размера данных — показывает, как разрыв растет с объемом.
Чеклист для операций с массивами📝
+ ✅ Правило 1: Всегда ищите встроенную векторизованную операцию в Pandas/NumPy.
+ ✅ Правило 2: Если ее нет — проверьте, можно ли решить через
+ ✅ Правило 3: Только в крайнем случае используйте
+ ✅ Правило 4: Цикл
Планы на будущее🚀
В дальнейшем я планирую глубже погрузиться в тему векторизации, и написать пост об этом.
А вы используете векторизованные операции в работе? Какие из них оказались самыми полезными? Делитесь в комментариях💬
Ставьте
🔥, если пост был полезен
❤️, если интересно увидеть больше постов про обработку данных с помощью Python
🤩, если ждете новый пост про векторизованные операции
#аналитические_методы
#python
#pandas #numpy
Сегодня решил рассказать вам про силу векторизованных операций в Python и сравнить их с другими методами обработки, выявив ключевые преимущества.
Зачем они нужны?🧐
Векторизованные операции помогают производить операции над массивами не поэлементно, а сразу для всего набора данных. Это в разы ускоряет код, что особенно ценно при больших объемах данных. Простая аналогия: можно взять каждый из 1000 камней поочередно и перенести их, а можно зачерпнуть их ковшом экскаватора и перевезти все сразу. Экскаватор в данном примере и есть векторизованная операция.
В основе векторизованных операций — библиотеки NumPy (работа с массивами) и Pandas
(надстройка для таблиц).
Какие они бывают?
Перечислю основные векторизованные операции, которые могут понадобиться аналитику:
1. Арифметика и базовая математика
+ - * / ** с целыми столбцами, np.abs(), np.log1p(), .round()
2. Статистика по столбцу
.sum(), .mean(), .median(), .min(), .max(), .std()
3. Логические операции и фильтрация
- Сравнения:
df['sales'] > 1000
- Комбинации: & (И), | (ИЛИ)-
.isin([список]) — фильтр по нескольким значениям-
.isna() для поиска пропусков-
np.where(условие, если_да, если_нет) — аналог IF4. Строковые операции (через `.str`)
.str.lower(), .str.upper(), .str.contains('текст'), .str.split(' '), .str.replace('old','new')
5. Дата-время (через `.dt`)
.dt.year, .dt.month, .dt.day, .dt.dayofweek, разница дат через - и pd.Timedelta()
6. Оконные функции для временных рядов
.shift(1) — вчерашнее значение, .pct_change() — процент изменения, .cumsum() — накопленная сумма7. Быстрое создание столбцов
df['прибыль'] = df['доход'] - df['расход']
df['категория'] = np.where(df['оценка'] > 80, 'Высокая', 'Низкая')Ключевое преимущество векторизованных операций - скорость работы.
Разберем на примере скорость работы векторизованных операций в сравнении с другими методами.
Чеклист для операций с массивами
+ ✅ Правило 1: Всегда ищите встроенную векторизованную операцию в Pandas/NumPy.
+ ✅ Правило 2: Если ее нет — проверьте, можно ли решить через
.str / .dt / логические операции.+ ✅ Правило 3: Только в крайнем случае используйте
.apply().+ ✅ Правило 4: Цикл
for по датафрейму — это антипаттерн в анализе данных.Планы на будущее
В дальнейшем я планирую глубже погрузиться в тему векторизации, и написать пост об этом.
А вы используете векторизованные операции в работе? Какие из них оказались самыми полезными? Делитесь в комментариях
Ставьте
🔥, если пост был полезен
❤️, если интересно увидеть больше постов про обработку данных с помощью Python
🤩, если ждете новый пост про векторизованные операции
#аналитические_методы
#python
#pandas #numpy
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14🤩3😈3❤1👨💻1
Говорящий код: сила комментариев 💬
Наверняка каждый из вас хоть раз сталкивался с необходимостью разбираться в чужом коде. И наверное вы заметили, что делать это намного проще и быстрее, если в коде есть качественные комментарии.
Представьте: перед вами две вкладки в Jupyter Notebook. В одной — лаконичный код с непонятной магией преобразований. В другой — те же операции, но с пояснениями «почему» и «зачем». В какой вы разберетесь быстрее? Ответ очевиден.
Сегодня поговорим о важности и практической пользе написания комментариев в коде.
Зачем тратить время на комментарии? 🤔
Во-первых, это в будущем поможет вам.
Когда вы вернетесь к своему коду спустя время, есть большая вероятность, что вы не вспомните, зачем, например, преобразовывали таргет в модели, или почему заменили пропуски, например, медианой, а не средним.
Комментарии такого рода помогут вам сразу вспомнить весь контекст:
Во-вторых, это поможет коллегам, которым, возможно, нужно будет работать с вашим кодом. По своему опыту могу уверенно сказать, что разбираться в чужом коде, как правило, намного сложнее, чем писать свой.
Когда стоит писать комментарии?✅
· Перед началом нового блока кода. Например, в этой ячейке вы планируете сгруппировать данные по user_id и вычислить суммарное количество потраченных средств. Перед этим можно написать комментарий такого рода: # вычисляю суммарные затраты каждого пользователя.
· Когда есть неочевидная операция. Например, вы решили, что респонденты в опросе, на котором построена выборка, занижали свой возраст, и хотите добавить к столбцу age 3 года. Перед этим преобразованием стоит добавить комментарий, зачем вы меняете значения и почему выбрали именно 3.
· Когда вы меняете чужой код. В таком случае можно внести в комментарий исходный кусок кода и объяснить причину изменений.
Какими должны быть комментарии?ℹ️
Главная цель — сделать комментарии в коде есть качественные комментарии.
Прчтобы в них мог разобраться человек, не погруженный глубоко в проект.
Например, для строки i = i + 1, которая является частью цикла, комментарий # прибавляем к i единицу будет неинформативен, так как это и так ясно из кода. А вот комментарий # сдвигаем скользящее окно на 1 позицию сразу даст понять, что к чему.
Чек-лист по комментариям📝
Золотые правила, которые спасут ваши нервы в будущем:
1. Пишите для своего «будущего Я». Представьте, что вернетесь к коду через полгода после отпуска. Что вам нужно было бы написать, чтобы мгновенно включиться в контекст?
2. Комментарий — это не перевод кода . Не пишите # Прибавляем к счетчику 1. Лучше объясните цель: # Сдвигаем окно агрегации, т.к. данные приходят с запаздыванием в 1 день.
3. Сначала хороший нейминг, потом комментарий. Стремитесь к тому, чтобы код читался как книга. user_total_spent = df.groupby('user_id')['revenue'].sum() — уже почти не нуждается в пояснениях. Комментируйте только решение, стоящее за строчкой.
4. Не ленитесь оставить комментарий, даже если в моменте всё кажется очевидным. Очевидность имеет свойство испаряться с течением времени.
А комментируете ли вы свой код?
Пишите в комментариях к посту!💬
Ставьте:
🔥— если было полезно
❤️ — если всегда стараетесь комментировать свой код
🤩— если интересны посты на тему оформления кода
#из_моей_практики
#код
#оформление
Наверняка каждый из вас хоть раз сталкивался с необходимостью разбираться в чужом коде. И наверное вы заметили, что делать это намного проще и быстрее, если в коде есть качественные комментарии.
Представьте: перед вами две вкладки в Jupyter Notebook. В одной — лаконичный код с непонятной магией преобразований. В другой — те же операции, но с пояснениями «почему» и «зачем». В какой вы разберетесь быстрее? Ответ очевиден.
Сегодня поговорим о важности и практической пользе написания комментариев в коде.
Зачем тратить время на комментарии? 🤔
Во-первых, это в будущем поможет вам.
Когда вы вернетесь к своему коду спустя время, есть большая вероятность, что вы не вспомните, зачем, например, преобразовывали таргет в модели, или почему заменили пропуски, например, медианой, а не средним.
Комментарии такого рода помогут вам сразу вспомнить весь контекст:
# В ходе EDA анализа выяснил, что распределение таргета — логнормальное.
# Для линейной модели использую логарифмирование, чтобы удовлетворить предпосылку о нормальности остатков.
df['target_log'] = np.log1p(df['target'])
# Заменил пропуски в столбце 'age' именно медианой, а не средним,
# потому что распределение имеет значительные выбросы (см. boxplot в ячейке выше).
median_age = df['age'].median()
df['age'].fillna(median_age, inplace=True)
Во-вторых, это поможет коллегам, которым, возможно, нужно будет работать с вашим кодом. По своему опыту могу уверенно сказать, что разбираться в чужом коде, как правило, намного сложнее, чем писать свой.
Когда стоит писать комментарии?
· Перед началом нового блока кода. Например, в этой ячейке вы планируете сгруппировать данные по user_id и вычислить суммарное количество потраченных средств. Перед этим можно написать комментарий такого рода: # вычисляю суммарные затраты каждого пользователя.
· Когда есть неочевидная операция. Например, вы решили, что респонденты в опросе, на котором построена выборка, занижали свой возраст, и хотите добавить к столбцу age 3 года. Перед этим преобразованием стоит добавить комментарий, зачем вы меняете значения и почему выбрали именно 3.
· Когда вы меняете чужой код. В таком случае можно внести в комментарий исходный кусок кода и объяснить причину изменений.
Какими должны быть комментарии?
Главная цель — сделать комментарии в коде есть качественные комментарии.
Прчтобы в них мог разобраться человек, не погруженный глубоко в проект.
Например, для строки i = i + 1, которая является частью цикла, комментарий # прибавляем к i единицу будет неинформативен, так как это и так ясно из кода. А вот комментарий # сдвигаем скользящее окно на 1 позицию сразу даст понять, что к чему.
Чек-лист по комментариям
Золотые правила, которые спасут ваши нервы в будущем:
1. Пишите для своего «будущего Я». Представьте, что вернетесь к коду через полгода после отпуска. Что вам нужно было бы написать, чтобы мгновенно включиться в контекст?
2. Комментарий — это не перевод кода . Не пишите # Прибавляем к счетчику 1. Лучше объясните цель: # Сдвигаем окно агрегации, т.к. данные приходят с запаздыванием в 1 день.
3. Сначала хороший нейминг, потом комментарий. Стремитесь к тому, чтобы код читался как книга. user_total_spent = df.groupby('user_id')['revenue'].sum() — уже почти не нуждается в пояснениях. Комментируйте только решение, стоящее за строчкой.
4. Не ленитесь оставить комментарий, даже если в моменте всё кажется очевидным. Очевидность имеет свойство испаряться с течением времени.
А комментируете ли вы свой код?
Пишите в комментариях к посту!
Ставьте:
🔥— если было полезно
❤️ — если всегда стараетесь комментировать свой код
🤩— если интересны посты на тему оформления кода
#из_моей_практики
#код
#оформление
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🐳2👍1🤩1🍾1🎄1
Как улучшить точность модели на 5-10%: правильный подбор гиперпараметров 🎯
В моделях машинного обучения гиперпараметры играют ключевую роль. Они определяют устройство модели, а их грамотный подбор может значительно улучшить качество.
Сегодня я расскажу про 3 самые популярные на данный момент метода (и библиотеки) для подбора гиперпараметров - GridSearchCV, RandomizedSearchCV и Optuna🧮
Самый тривиальный из методов - GridSearchCV. Этот метод перебирает все возможные комбинации гиперпараметров из заданной сетки. Например, если мы предоставим ему такую сетку: {‘max_depth’: [4, 6, 8], ‘n_estimators’: [200, 400]}, он обучит 3 * 2 = 6 моделей и выберет лучшую. Особенностью GridSearch является то, что он всегда находит лучшее решение (так как просто напросто перебирает все комбинации).
Главный минус такого подхода - скорость вычислений. Если мы хотим перебрать большую сетку, GridSearchCV - не лучший вариант☺️
Пример кода с использованием GridSearchCV вы найдете в комментарии.
RandomizedSearchCV работает иначе. Он принимает на вход сетку гиперпараметров и параметр n_iter, и в процессе подбора перебирает n_iter случайных комбинаций гиперпараметров. Главный минус такого подхода в том, что мы можем упустить оптимальное решение.
Важной фишкой RandomizedSearchCV является возможность задавать не только детерминированные значения параметров, но и распределения. Например, равномерное распределение: 'alpha': uniform(0.01, 10.0).
Пример кода с использованием RandomizedSearchCV ждет вас в комментарии.
Optuna - это библиотека для умного подбора гиперпараметров.
Главное ее преимущество в том, что в процессе подбора она использует историю предыдущих испытаний для выбора следующих параметров. Это помогает отсекать огромное количество слабых комбинаций. Плюс Optuna умеет распараллеливать вычисления , что заметно увеличивает скорость подбора.
Еще одним ключевым преимуществом Optuna является возможность визуализации.📊
Например, можно визуализировать важность гиперпараметров. Это может быть полезно, если после первого подбора мы хотим еще улучшить модель.
Например, визуализация важности показала, что важность гиперпараметров subsample и max_depth в разы меньше, чем важность гиперпараметров learning_rate и colsample_bytree. В таком случае мы можем зафиксировать subsample и max_depth такими, как их подобрали с первого раза, и дальше продолжить подбирать learning_rate и colsample_bytree, чтобы еще повысить качество модели.
Пример кода с Optuna в комментарии.
Чек-лист: что когда использовать?📝
GridSearch будет лучшим выбором, если у вас изначально маленькая сетка гиперпараметров, или неограниченные ресурсы🥹
RandomizedSearch подойдет, если нужно быстро получить хороший, не обязательно идеальный результат🏎
Optuna -моя любимая библиотека для подбора гиперпараметров🔝
В большинстве случаев она будет идеальным выбором благодаря:
· умному алгоритму обучения
· высокой скорости
· уникальным возможностям (визуализации, параллельные вычисления и т.д)
Графики ниже демонстрируют процесс работы Optuna:
2. История оптимизации — как менялась метрика с каждым испытанием (trial).
3. Важность параметров — какие гиперпараметры повлияли на результат сильнее всего.
Сравнивайте, экспериментируйте и делитесь вашим опытом в комментариях!💬
---
Полные рабочие примеры кода для каждого метода опубликованы в комментариях к этому посту.
Ставьте
🔥 если было полезно
❤️ если интересны посты на тему машинного обучения
🤩 если хотели бы видеть еще посты на тему подбора гиперпараметров
#аналитические_методы
#ml
#python
В моделях машинного обучения гиперпараметры играют ключевую роль. Они определяют устройство модели, а их грамотный подбор может значительно улучшить качество.
Сегодня я расскажу про 3 самые популярные на данный момент метода (и библиотеки) для подбора гиперпараметров - GridSearchCV, RandomizedSearchCV и Optuna
Самый тривиальный из методов - GridSearchCV. Этот метод перебирает все возможные комбинации гиперпараметров из заданной сетки. Например, если мы предоставим ему такую сетку: {‘max_depth’: [4, 6, 8], ‘n_estimators’: [200, 400]}, он обучит 3 * 2 = 6 моделей и выберет лучшую. Особенностью GridSearch является то, что он всегда находит лучшее решение (так как просто напросто перебирает все комбинации).
Главный минус такого подхода - скорость вычислений. Если мы хотим перебрать большую сетку, GridSearchCV - не лучший вариант
Пример кода с использованием GridSearchCV вы найдете в комментарии.
RandomizedSearchCV работает иначе. Он принимает на вход сетку гиперпараметров и параметр n_iter, и в процессе подбора перебирает n_iter случайных комбинаций гиперпараметров. Главный минус такого подхода в том, что мы можем упустить оптимальное решение.
Важной фишкой RandomizedSearchCV является возможность задавать не только детерминированные значения параметров, но и распределения. Например, равномерное распределение: 'alpha': uniform(0.01, 10.0).
Пример кода с использованием RandomizedSearchCV ждет вас в комментарии.
Optuna - это библиотека для умного подбора гиперпараметров.
Главное ее преимущество в том, что в процессе подбора она использует историю предыдущих испытаний для выбора следующих параметров. Это помогает отсекать огромное количество слабых комбинаций. Плюс Optuna умеет распараллеливать вычисления , что заметно увеличивает скорость подбора.
Еще одним ключевым преимуществом Optuna является возможность визуализации.
Например, можно визуализировать важность гиперпараметров. Это может быть полезно, если после первого подбора мы хотим еще улучшить модель.
Например, визуализация важности показала, что важность гиперпараметров subsample и max_depth в разы меньше, чем важность гиперпараметров learning_rate и colsample_bytree. В таком случае мы можем зафиксировать subsample и max_depth такими, как их подобрали с первого раза, и дальше продолжить подбирать learning_rate и colsample_bytree, чтобы еще повысить качество модели.
Пример кода с Optuna в комментарии.
Чек-лист: что когда использовать?
GridSearch будет лучшим выбором, если у вас изначально маленькая сетка гиперпараметров, или неограниченные ресурсы
RandomizedSearch подойдет, если нужно быстро получить хороший, не обязательно идеальный результат
Optuna -моя любимая библиотека для подбора гиперпараметров
В большинстве случаев она будет идеальным выбором благодаря:
· умному алгоритму обучения
· высокой скорости
· уникальным возможностям (визуализации, параллельные вычисления и т.д)
Графики ниже демонстрируют процесс работы Optuna:
2. История оптимизации — как менялась метрика с каждым испытанием (trial).
3. Важность параметров — какие гиперпараметры повлияли на результат сильнее всего.
Сравнивайте, экспериментируйте и делитесь вашим опытом в комментариях!
---
Полные рабочие примеры кода для каждого метода опубликованы в комментариях к этому посту.
Ставьте
🔥 если было полезно
❤️ если интересны посты на тему машинного обучения
🤩 если хотели бы видеть еще посты на тему подбора гиперпараметров
#аналитические_методы
#ml
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8🏆2❤1🍌1😈1👻1🤪1
С Новым 2026 годом! 🎄
Этот канал — мой совсем новый и важный проект, который начался только осенью.
Огромное спасибо каждому, кто уже успел подписаться, поставить лайк или оставить комментарий. Вы вдохновляете меня развивать этот канал дальше!🙏
В новом году я обещаю больше полезного контента об анализе данных. Будем разбираться во всём вместе!⏩
#сНовымГодом
Этот канал — мой совсем новый и важный проект, который начался только осенью.
Огромное спасибо каждому, кто уже успел подписаться, поставить лайк или оставить комментарий. Вы вдохновляете меня развивать этот канал дальше!
В новом году я обещаю больше полезного контента об анализе данных. Будем разбираться во всём вместе!
#сНовымГодом
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🎄4🔥1🌚1
После праздников все мы возвращаемся к проектам — рабочим, учебным или бизнес-задачам.
Решил поделиться своим опытом и наблюдениями, которые получил, реализуя разные проекты. Это будет первый пост в серии, и в нём я разберу три основы, без которых проект рискует забуксовать.
3 кита успешного проекта 🐳
1. План проекта🗺
Многие недооценивают этот этап и хотят быстрее приступить к работе. Но опыт показал: если чётко не обрисовать хотя бы примерный план, проект может встать или развалиться.
На старте важно ответить на ключевые вопросы:
Зачем мы это делаем? (Цель и ценность)
Как мы поймём, что всё получилось? (Критерии успеха и метрики)
Какие у нас сроки и ресурсы? (Реализм vs. амбиции)
От честных ответов зависит очень многое. После этого можно набросать план по шагам с дедлайнами для участников и назначить следующую встречу.
2. Путь через MVP 🔧
Раньше компании часто пытались сразу сделать идеальный продукт. Сейчас стандартом стал MVP (Minimum Viable Product) — минимально жизнеспособный продукт.
Смысл в том, чтобы сначала выпустить базовую версию с ключевой функцией, а потом улучшать её на основе фидбека от заказчиков или пользователей. Этот подход экономит силы на отладке и позволяет не тратить время на лишние фичи, которые на деле никому не нужны. Для аналитика это как сначала проверить гипотезу на небольшой выборке, а уже потом строить полномасштабную модель.
3. Движение итерациями: не один марафон, а серия спринтов🏃♂️
Наиболее продуктивный способ вести проект — двигаться короткими циклами (итерациями).
Примерный пайплайн:
Старт: Общее понимание цели, план MVP, детальный план первой итерации.
Работа: Фокус только на задачах текущей итерации.
Ретроспектива: Разбор результатов, корректировка планов.
Повтор шагов 2-3...
N. Результат: Презентация MVP, передача, сбор фидбека и планирование доработок.
Именно эти три концепции я считаю фундаментом для любого проекта. 🧱
В следующих постах углублюсь в каждую из них и приведу примеры из своих и open-source проектов.
А какие принципы в ведении проектов ключевые для вас? Пишите в комментариях!💬
Ставьте
🔥 — если был полезно
❤️ — ждёте продолжения темы
🤩 — ваши принципы совпадают с моими
#софт_скиллы
#проекты
#project_management
Решил поделиться своим опытом и наблюдениями, которые получил, реализуя разные проекты. Это будет первый пост в серии, и в нём я разберу три основы, без которых проект рискует забуксовать.
3 кита успешного проекта 🐳
1. План проекта
Многие недооценивают этот этап и хотят быстрее приступить к работе. Но опыт показал: если чётко не обрисовать хотя бы примерный план, проект может встать или развалиться.
На старте важно ответить на ключевые вопросы:
Зачем мы это делаем? (Цель и ценность)
Как мы поймём, что всё получилось? (Критерии успеха и метрики)
Какие у нас сроки и ресурсы? (Реализм vs. амбиции)
От честных ответов зависит очень многое. После этого можно набросать план по шагам с дедлайнами для участников и назначить следующую встречу.
2. Путь через MVP 🔧
Раньше компании часто пытались сразу сделать идеальный продукт. Сейчас стандартом стал MVP (Minimum Viable Product) — минимально жизнеспособный продукт.
Смысл в том, чтобы сначала выпустить базовую версию с ключевой функцией, а потом улучшать её на основе фидбека от заказчиков или пользователей. Этот подход экономит силы на отладке и позволяет не тратить время на лишние фичи, которые на деле никому не нужны. Для аналитика это как сначала проверить гипотезу на небольшой выборке, а уже потом строить полномасштабную модель.
3. Движение итерациями: не один марафон, а серия спринтов
Наиболее продуктивный способ вести проект — двигаться короткими циклами (итерациями).
Примерный пайплайн:
Старт: Общее понимание цели, план MVP, детальный план первой итерации.
Работа: Фокус только на задачах текущей итерации.
Ретроспектива: Разбор результатов, корректировка планов.
Повтор шагов 2-3...
N. Результат: Презентация MVP, передача, сбор фидбека и планирование доработок.
Именно эти три концепции я считаю фундаментом для любого проекта. 🧱
В следующих постах углублюсь в каждую из них и приведу примеры из своих и open-source проектов.
А какие принципы в ведении проектов ключевые для вас? Пишите в комментариях!
Ставьте
🔥 — если был полезно
❤️ — ждёте продолжения темы
🤩 — ваши принципы совпадают с моими
#софт_скиллы
#проекты
#project_management
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3🐳2☃1😈1
Решаем, куда двигаться!🤔
Помогите выбрать форматы контента, которые будут вам максимально полезны.
Проголосуйте за 1-2 самых интересных для вас пункта🙃
Помогите выбрать форматы контента, которые будут вам максимально полезны.
Проголосуйте за 1-2 самых интересных для вас пункта
Anonymous Poll
57%
Глубокие разборы методов (ML, Статистика, Python, SQL - объяснение на живых примерах)🔬
24%
Мои исследования и инсайты (Разбор реальных данных: демография, рынок, индустрия)💡
33%
Образование и саморазвитие (Мысли о курсах, книгах, эффективных методах обучения и практики)🧑🎓
36%
Карьера и рост (Треки, советы, подготовка к собеседованиям, моя история) 🚀
50%
Жизнь аналитика изнутри (Рабочие будни, вызовы, софт-скиллы, нетривиальные задачи) 👨💻
2%
Другое (Напишу свое предложение в комментариях)💬
❤6🐳2
Как я стал аналитиком📊
В конце 1 курса я начал задумываться о карьере и узнавать, где работают и чем занимаются выпускники моего факультета или аналогичных факультетов других вузов.
Оказалось, что большинство из них выбирают анализ данных или финансы.
Тогда я уже прошел пару курсов по финансам в университете и понимал, что это не совсем моё.
Также я рассматривал классический трек экономиста с глубоким погружением в макроэкономику и работой в ЦБ / research подразделениях банков.
Почему выбрал именно анализ данных?🤔
В середине второго курса началась макроэкономика и я понял, что мне не очень интересно. Это стало стимулом поставить на первое место в своем видении карьеры анализ данных. К тому же я уже знал Python и очень хорошо закрыл Тервер и Матстат.
В анализе данных меня привлекала возможность находить инсайты в данных, строить на основе данных прогнозы с помощью моделей. Это похоже на работу детектива: сложить картину из имеющихся улик, спрогнозировать ситуацию наперед 🕵️♂️
Обучение🧑🎓
К моменту середины 2 курса из релевантных дисциплин я знал:
- Python
- Тервер и статистику
За второй семестр я прошел курсы:
- Основы машинного обучения
- Анализ данных на Python
Все эти курсы дали мне отличную базу знаний для старта, но главное - научили быстро находить нужную информацию в своей области и дали понять, что
лучший подход в изучении нового - это быстрый переход от теории к практике.
Поэтому всем новичкам я рекомендую закреплять пройденный материал на пет-проектах.
Здесь и здесь можно найти хорошие подборки тем для пет-проектов. О своих пет-проектах, сделанных до первой работы, расскажу в следующих постах этой серии.
С таким набором знаний я уже мог рассчитывать на какой-то успех при выходе на рынок труда🤩
Поиск первой работы🔍
Еще на 1 курсе, когда я еще не знал точно, чем хочу заниматься, я решил, что очень хочу летом после 2 курса попасть на стажировку, чтобы получить реальный опыт и изучить выбранную сферу изнутри. Поэтому на 2 курсе с марта я начал откликаться на стажировки и джуновские вакансии на аналитика / ds.
Я подавался как на отдельные вакансии, так и на большие программы стажировок (такие есть к Сбера, Озона, Авито и др.). На программах я в основном получал отказы, так как искали как минимум студентов 3 курса.
Для поиска вакансий я использовал все популярные ресурсы: сайты компаний, hh.ru, Хабр карьера, HSE career и др.
Таким образом я отправил более 70 откликов, прошел 4 собеседования и получил 2 оффера: 1 на стажера и 1 на джуна.
Что я бы изменил в своем процессе поиска работы?📝
1. Добавлял бы больше достижений в cv🥇
Например не «работал учебным ассистентом по Микроэкономике, проверял домашние работы студентов», а «работал учебным ассистентом по Микроэкономике и за семестр провел 5 консультаций для студентов, повысив их успеваемость в сравнении с другими группами»
2. Больше использовал бы ресурсы знакомых для попадания через рефералки.
3. Использовал бы Linkedin📱
В следующем посте расскажу про самое важное собеседование: как я готовился, какие неожиданные вопросы задавали и что, по моему мнению, стало решающим для оффера в Сбер💳
Главное, что я понял: путь в аналитику — это не про идеальное резюме, а про готовность учиться на ошибках и действовать.
У меня получилось — получится и у вас! 🌅
А пока вопрос к вам: что для вас сейчас самое сложное на пути к первой работе в аналитике?
Поделитесь в комментариях — постараюсь дать совет или разберу в будущих постах.💬
Ставьте
🔥 если было полезно
❤️ если ждете новые посты из этой серии
🤩если сейчас ищете свою первую работу
#жизнь_аналитика
#карьера
#образование
#анализ_данных
#путь_в_аналитику
В конце 1 курса я начал задумываться о карьере и узнавать, где работают и чем занимаются выпускники моего факультета или аналогичных факультетов других вузов.
Оказалось, что большинство из них выбирают анализ данных или финансы.
Тогда я уже прошел пару курсов по финансам в университете и понимал, что это не совсем моё.
Также я рассматривал классический трек экономиста с глубоким погружением в макроэкономику и работой в ЦБ / research подразделениях банков.
Почему выбрал именно анализ данных?
В середине второго курса началась макроэкономика и я понял, что мне не очень интересно. Это стало стимулом поставить на первое место в своем видении карьеры анализ данных. К тому же я уже знал Python и очень хорошо закрыл Тервер и Матстат.
В анализе данных меня привлекала возможность находить инсайты в данных, строить на основе данных прогнозы с помощью моделей. Это похоже на работу детектива: сложить картину из имеющихся улик, спрогнозировать ситуацию наперед 🕵️♂️
Обучение
К моменту середины 2 курса из релевантных дисциплин я знал:
- Python
- Тервер и статистику
За второй семестр я прошел курсы:
- Основы машинного обучения
- Анализ данных на Python
Все эти курсы дали мне отличную базу знаний для старта, но главное - научили быстро находить нужную информацию в своей области и дали понять, что
лучший подход в изучении нового - это быстрый переход от теории к практике.
Поэтому всем новичкам я рекомендую закреплять пройденный материал на пет-проектах.
Здесь и здесь можно найти хорошие подборки тем для пет-проектов. О своих пет-проектах, сделанных до первой работы, расскажу в следующих постах этой серии.
С таким набором знаний я уже мог рассчитывать на какой-то успех при выходе на рынок труда🤩
Поиск первой работы
Еще на 1 курсе, когда я еще не знал точно, чем хочу заниматься, я решил, что очень хочу летом после 2 курса попасть на стажировку, чтобы получить реальный опыт и изучить выбранную сферу изнутри. Поэтому на 2 курсе с марта я начал откликаться на стажировки и джуновские вакансии на аналитика / ds.
Я подавался как на отдельные вакансии, так и на большие программы стажировок (такие есть к Сбера, Озона, Авито и др.). На программах я в основном получал отказы, так как искали как минимум студентов 3 курса.
Для поиска вакансий я использовал все популярные ресурсы: сайты компаний, hh.ru, Хабр карьера, HSE career и др.
Таким образом я отправил более 70 откликов, прошел 4 собеседования и получил 2 оффера: 1 на стажера и 1 на джуна.
Что я бы изменил в своем процессе поиска работы?
1. Добавлял бы больше достижений в cv
Например не «работал учебным ассистентом по Микроэкономике, проверял домашние работы студентов», а «работал учебным ассистентом по Микроэкономике и за семестр провел 5 консультаций для студентов, повысив их успеваемость в сравнении с другими группами»
2. Больше использовал бы ресурсы знакомых для попадания через рефералки.
3. Использовал бы Linkedin
В следующем посте расскажу про самое важное собеседование: как я готовился, какие неожиданные вопросы задавали и что, по моему мнению, стало решающим для оффера в Сбер
Главное, что я понял: путь в аналитику — это не про идеальное резюме, а про готовность учиться на ошибках и действовать.
У меня получилось — получится и у вас! 🌅
А пока вопрос к вам: что для вас сейчас самое сложное на пути к первой работе в аналитике?
Поделитесь в комментариях — постараюсь дать совет или разберу в будущих постах.
Ставьте
🔥 если было полезно
❤️ если ждете новые посты из этой серии
🤩если сейчас ищете свою первую работу
#жизнь_аналитика
#карьера
#образование
#анализ_данных
#путь_в_аналитику
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥8🤩2🦄1