Всем привет! Меня зовут Глеб
В этом канале я буду публиковать самое интересное, с чем встречаюсь на работе или учёбе.
Кто я? 🧑💻
Мне 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
Классный способ визуализации, который открыл для себя недавно
Сегодня хочу поделиться мощным способом визуализации, который отлично подходит для анализа распределения непрерывной переменной (например, зарплаты) в зависимости сразу от двух категориальных признаков.
В чём суть?🤔
Берём два категориальных признака (в моём примере — 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
Этот метод 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
Красивая визуализация: множественные линии в 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
Секрет быстрого кода: векторизованные операции в 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
Как улучшить точность модели на 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
Мой топ: как я подбираю визуализацию и библиотеку под неё 📊
Визуальный анализ — база любого проекта.
Для частых задач я собрал свой набор графиков, где миксую matplotlib, seaborn и plotly.
Сегодня расскажу, какую библиотеку и под какой сценарий беру.
Гистограмма распределения с выделением мер центральной тенденции↗️
Для визуализации распределения я обычно использую seaborn, так как kde-сглаживание и hue-группировка делаются в одну строку. Добавление линий среднего и медианы помогает понять, в каком хвосте выбросы. Если среднее заметно правее/левее медианы — почти наверняка в этой стороне есть выбросы. На первой картинке видно: хвост справа тянет среднее за собой.
Распределения + выбросы🔭
Еще для изучения распределений и детекции выбросов хорошо подходят графики boxplot, их я тоже строю с помощью seaborn. Причем можно как просто визуализировать распределение одной непрерывной переменной, так и разбить выборку по какому-нибудь категориальному признаку и сравнить распределения - пример на второй картинке. Еще я делал пост про более сложную визуализацию, которая помогает хорошо отследить взаимосвязи между несколькими переменными.
Временные ряды📈
Для временных рядов я обычно использую plotly line.
Plotly позволяет быстро подсветить максимумы/минимумы. Я могу навести курсор и сразу увидеть дату и значение без дополнительного кода — это ускоряет поиск аномалий.
Пример использования на третьей картинке. Также есть пост про визуализацию нескольких рядов сразу для сравнения.
Столбчатые диаграммы📊
Для столбчатых диаграмм я использую как seaborn, так и plotly. Seaborn в основном предпочитаю в случаях, когда надо визуализировать частотность (countplot) или сравнить средние/медианы по группам (группировка + barplot) - примеры на 4й и 5й картинках.
В plotly легко сделать анимированные или накопительные доли, а интерактивность помогает смотреть структуру без тонны графиков.
Пример на шестой картинке.
Тепловая карта корреляций🎨
Для анализа корреляций идеально подходит heatmap от seaborn. Чем выше корреляция - тем ярче заливка ячейки. Пример на седьмой картинке.
Код для построения всех этих графиков с датасетами выложил на kaggle.
А какую библиотеку для визуализации предпочитаете вы? Или, как и я, используете разные?
Пишите в комментариях💬
Ставьте
🔥 если было полезно
❤️ если интересны посты про визуализацию данных
🤩 если согласны с моим топом
#визуализация_данных
#python
#matplotlib
#seaborn
#plotly
Визуальный анализ — база любого проекта.
Для частых задач я собрал свой набор графиков, где миксую matplotlib, seaborn и plotly.
Сегодня расскажу, какую библиотеку и под какой сценарий беру.
Гистограмма распределения с выделением мер центральной тенденции
Для визуализации распределения я обычно использую seaborn, так как kde-сглаживание и hue-группировка делаются в одну строку. Добавление линий среднего и медианы помогает понять, в каком хвосте выбросы. Если среднее заметно правее/левее медианы — почти наверняка в этой стороне есть выбросы. На первой картинке видно: хвост справа тянет среднее за собой.
Распределения + выбросы
Еще для изучения распределений и детекции выбросов хорошо подходят графики boxplot, их я тоже строю с помощью seaborn. Причем можно как просто визуализировать распределение одной непрерывной переменной, так и разбить выборку по какому-нибудь категориальному признаку и сравнить распределения - пример на второй картинке. Еще я делал пост про более сложную визуализацию, которая помогает хорошо отследить взаимосвязи между несколькими переменными.
Временные ряды
Для временных рядов я обычно использую plotly line.
Plotly позволяет быстро подсветить максимумы/минимумы. Я могу навести курсор и сразу увидеть дату и значение без дополнительного кода — это ускоряет поиск аномалий.
Пример использования на третьей картинке. Также есть пост про визуализацию нескольких рядов сразу для сравнения.
Столбчатые диаграммы
Для столбчатых диаграмм я использую как seaborn, так и plotly. Seaborn в основном предпочитаю в случаях, когда надо визуализировать частотность (countplot) или сравнить средние/медианы по группам (группировка + barplot) - примеры на 4й и 5й картинках.
В plotly легко сделать анимированные или накопительные доли, а интерактивность помогает смотреть структуру без тонны графиков.
Пример на шестой картинке.
Тепловая карта корреляций
Для анализа корреляций идеально подходит heatmap от seaborn. Чем выше корреляция - тем ярче заливка ячейки. Пример на седьмой картинке.
Код для построения всех этих графиков с датасетами выложил на kaggle.
А какую библиотеку для визуализации предпочитаете вы? Или, как и я, используете разные?
Пишите в комментариях
Ставьте
❤️ если интересны посты про визуализацию данных
🤩 если согласны с моим топом
#визуализация_данных
#python
#matplotlib
#seaborn
#plotly
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤1☃1🐳1