Dmatryusофрения
41 subscribers
290 photos
10 videos
15 files
148 links
Пишу о книгах, лидерстве, технологиях, opensource, своих проектах и наверное чем-то ещё. Ну и репосты IT приколямб.
Download Telegram
#life@dm_projects_log

Наблюдение... Чтение перед сном ещё хуже, чем сериалы и игры. Особенно для тех, кто читает так же медленно, как я. Правда моя скорость усугубляется тем фактом, что я ещё и конспект пишу. Вообще говоря, на конспект уходит бОльшая часть времени. В общем, лёг в 3:45. Надо было дочитать раздел с типизацией.
👍2😱1
Привет всем! Пропал на месяц. Связано со сменой работы, адаптацией к этому всему. На самом деле все еще в процессе адаптации, но кажется стало появляться внимание на что-то еще. Планирую цикл небольших заметок. Пока без подробностей, чтобы не расстраивать тех, кому это будет интересно, в случае, если что-то пойдёт не по плану 😅
👍6🆒1
#hypex

Вышла любопытная статейка с использованием нашей либы. Рекомендую!

https://habr.com/ru/companies/tbank/articles/915674/
👍2
#fun #classic #ml

Если вы вдруг забыли, что такое дерево решений. То вот вам база)

Дерево решений - это модель, построенная путем рекурсивного разбиения пространства признаков на несколько непересекающихся областей (узлов дерева) в соответствии со значениями некоторых разделяющих атрибутов.
Атрибуты обычно представляют собой двоичные переменные, которые идентифицируют, что какой-либо признак превышает некоторый порог. Каждой конечной области (листу дерева) присваивается значение, которое является оценкой реакции в область для задачи регрессии или прогнозируемая метка класса в случае задачи классификации.
🤡2
#classic #ml

Наверное все знают, что не только CatBoost может обрабатывать категориальные фичи автоматически. LGBM тоже может, но они это делают по-разному.

LGBM на каждом шаге градиента делает TargetEncoding. Процесс не самый быстрый и требует приличное количество памяти, так как каждый энкодинг надо мапить. Процесс интересный, однако сами разрабы LGBM рекомендуют энкодить категории до подачи в модель.
👍2
#classic #ml
Продолжаем тему кодирования категорий. В прошлый раз затронули LGBM. Сегодня подробнее поговорим про CatBoost.

Итак в CatBoost используется для энкодинга так же Target Statistic (TS).
Есть разные стратегии работы с TS.

Жадная TS (Greedy TS):
* Использует среднее значение целевой переменной для каждой категории.
* Включает сглаживание с помощью параметра a и априорного значения p
* Подвержена условному сдвигу, так как использует целевое значение самого примера
😜 Это то, что мы используем чаще всего, когда сами энкодим таргетом

TS с исключением (Holdout TS):
* Разделяет данные на две части
* Вычисляет TS на одной части
* Обучает модель на другой
* Устраняет условный сдвиг, но использует меньше данных
😒 Жертвовать данными ради энкодинга ну такое себе

TS с исключением одного (Leave-one-out TS):
* Вычисляет TS на основе всех примеров, кроме текущего
* Несмотря на кажущуюся эффективность, всё равно подвержен сдвигу

Упорядоченная TS (Ordered TS):
* Использует случайную перестановку примеров
* Вычисляет TS только на основе предыдущих примеров в перестановке
* Эффективно использует все данные для обучения
* Устраняет условный сдвиг
🐈 Является базовой стратегией в CatBoost

Эксперименты показывают, что упорядоченная TS значительно превосходит другие подходы. Например, на датасете Amazon улучшение составляет 40% по logloss по сравнению с жадной TS и 8.3% по сравнению с holdout TS.

Важное преимущество упорядоченной TS - она позволяет эффективно использовать все обучающие данные как для вычисления целевых статистик, так и для обучения модели.

Процесс вычисления:
1. Для k-го примера берется подмножество Dk - все предыдущие примеры в перестановке
2. Вычисляется среднее значение целевой переменной по всем примерам из Dk с таким же категориальным значением
3. При этом само значение yk не участвует в вычислении

Для уменьшения влияния случайности:
* Используется несколько независимых перестановок
* Значения TS усредняются по всем перестановкам
* Это снижает дисперсию оценок, особенно для первых примеров в перестановке
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#classic #ml

Не так давно вышла версия xgboost 2.0.

В основном там улучшение производительности, в частности лучшее управление кэшем процессора и оптимизация федеративного обучения в том числе в рамках PySpark.
🤩3
#fun

Первые крашенные миньки.
🔥4
Читаю книгу про визуализацию данных... Большую часть из того, что уже прочитал, читалась с телефона. Сейчас наконец добрался до бумажной... И насколько же она в таком формате лучше идет. Графики красивые и на своих местах, заголовки цветастые. Белые страницы с телефона вообще неприятно читать, а не белые искажают цвета.

В общем, мой вывод такой: если в книге картинки и цвет - это важно, то бумага определённо лучше телефона.

Интересно еще попробовать электронную книгу с цветным e-ink, но не насколько, чтобы тратить на это 20+к, да и бумагу я все же люблю больше.
Забавно, что каждый год исследования Data Vizualization Society показывает, что самым популярным инструментом визуализации является Excel 🤪
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2
#classic #ml

Сегодня буду рассказывать о том, что такое предвзятостьo градиентов, и как эту проблему решает CatBoost.

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

Классические подходы (XGBoost, LightGBM) используют двухэтапный процесс:
1. Выбор структуры дерева
2. Расчет значений в листьях

При этом значения в листьях рассчитываются как приближения градиентов или шагов Ньютона.

CatBoost предлагает принципиально иной метод борьбы с предвзятостью:

1. Отдельные модели для каждого примера:
- Для каждого обучающего примера создается отдельная модель
- Эти модели никогда не обновляются с помощью градиента этого примера
- Позволяет получить несмещенные оценки градиентов

2. Использование случайных перестановок:
- Данные случайным образом переставляются несколько раз
- Для каждой перестановки строятся отдельные модели
- Это повышает устойчивость алгоритма

3. Оптимизация вычислений:
- Все модели используют одинаковую структуру деревьев
- Используется эффективный алгоритм подсчета приближений
- Сокращается количество необходимых вычислений


Алгоритм CatBoost:
1. Создает несколько случайных перестановок данных
2. Для каждой перестановки:
- Строит отдельные модели без использования текущего примера
- Вычисляет градиенты на основе этих моделей
- Использует их для оценки результирующего дерева


Преимущества подхода CatBoost

1. Снижение переобучения:
- Несмещенные оценки градиентов
- Использование нескольких перестановок
- Более стабильная работа на разных данных

2. Эффективность:
- Оптимизированное хранение данных
- Параллельные вычисления
- Разумный баланс между качеством и скоростью

3. Универсальность:
- Работает с разными типами данных
- Адаптируется под различные задачи
- Предотвращает переобучение на сложных наборах данных

P.S. Схему рисовал сам для вас 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤝1