Fine-tuning vs RAG: что эффективнее
Кажется, что есть два пути прокачать LLM:
👉 Fine-tuning — дообучить модель
👉 RAG (Retrieval-Augmented Generation) — дать доступ к базе знаний
И главный вопрос: что лучше?
Не существует «лучше». Есть «под задачу».
Разберёмся 👇
Что такое Fine-tuning?
Что такое RAG?
Где начинается реальная разница
Когда Fine-tuning лучше
Когда RAG лучше
Самый важный инсайт
В одном предложении
Fine-tuning меняет мозг модели,
RAG даёт ей память.
Кажется, что есть два пути прокачать LLM:
👉 Fine-tuning — дообучить модель
👉 RAG (Retrieval-Augmented Generation) — дать доступ к базе знаний
И главный вопрос: что лучше?
Не существует «лучше». Есть «под задачу».
Разберёмся 👇
Что такое Fine-tuning?
Ты берёшь модель и доучиваешь её на своих данных.
Модель:
👉 меняет веса
👉 «запоминает» стиль, паттерны, формат
Это как переучить мозг модели.
Хорошо подходит для:
👉 кастомного тона (support, юрист, врач)
👉 форматирования ответов
👉 специфичных паттернов
Что такое RAG?
Ты не меняешь модель.
Ты даёшь ей доступ к внешним данным:
👉 запрос
👉 поиск по базе (vector DB)
👉 релевантные куски
👉 генерация ответа
Это как открыть шпаргалку перед ответом.
Хорошо подходит для:
👉 актуальной информации
👉 больших баз знаний
👉 документов, инструкций, FAQ
Где начинается реальная разница
1. Обновляемость
Fine-tuning → нужно переобучать
RAG → просто обновил базу
👉 если данные часто меняются — RAG выигрывает
2. Контроль над знаниями
Fine-tuning → знания «размазаны» в весах
RAG → ты точно знаешь источник
👉 RAG более контролируемый
3. Стоимость
Fine-tuning → дорого (обучение + инференс)
RAG → дешевле, но есть стоимость retrieval
4. Галлюцинации
Fine-tuning → может уверенно «врать»
RAG → опирается на документы
👉 RAG обычно надёжнее
5. Задержка (latency)
Fine-tuning → быстрее
RAG → медленнее (поиск + генерация)
Когда Fine-tuning лучше
👉 нужно изменить стиль / тон
👉 есть чёткие шаблоны ответов
👉 данные стабильны
👉 нужна минимальная задержка
Когда RAG лучше
👉 часто обновляемые данные
👉 большая база знаний
👉 требуется объяснимость
👉 важно снизить галлюцинации
Самый важный инсайт
Это не конкуренты. Это связка.
На практике делают так:
👉 Fine-tuning учит модель, как отвечать
👉 RAG даёт модели, что отвечать
В одном предложении
Fine-tuning меняет мозг модели,
RAG даёт ей память.
❤11
Forwarded from xCode Journal
У Сида Сийбранди диагностировали редкую форму рака и стандартное лечение не помогало, а врачи больше ничего не могли предложить. Сид не опустил руки и начал действовать сам: собрал экспертов, погрузился в исследования и использовал для помощи ChatGPT, чтобы быстрее работать с научной литературой, анализировать множество данных о своем здоровье и искать варианты терапии.
Хоть ИИ сам не лечил рак (это делали люди), но модель помогла в РАЗЫ ускорить все тогда, когда каждый день на счету.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16😁2
Forwarded from xCode Journal
Это не шутка: инфу откопали из-за случайного слива кода приложения. Хорошая новость в том, что Anthropic делает это не для того, чтобы в день восстания ИИ пройтись по списку, а чтобы отслеживать, когда юзер «сгорел» и перешел на маты и из-за чего пятая точка полыхнула.
Но вы на всякий случай держите себя в руках
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17
Forwarded from xCode Journal
This media is not supported in your browser
VIEW IN TELEGRAM
Парень заработал $5000 за 3 дня на своем пет-проекте — он создал то самое хайповое приложение, которое заставляет ваш Mac стонать от ударов.
А вы и дальше думайте над идеями стартапов
Please open Telegram to view this post
VIEW IN TELEGRAM
😁22
CSP, CORS и security headers — что фронтендер обязан понимать глубже
Принято считать, что безопасность — это зона бэкенда.
Фронтенд «просто отправляет запросы и рендерит UI».
На практике фронтенд напрямую влияет на то,
будет приложение безопасным или нет.
CORS — это не про «разрешить запрос»
CORS часто воспринимают как настройку:
«чтобы запросы не падали из браузера».
Но по сути это механизм, который говорит:
кто имеет право читать ответ.
Важно понимать:
👉 сервер может обработать запрос
👉 но браузер может не дать прочитать ответ
Именно поэтому:
👉
👉
CSP — ваш последний рубеж
Content Security Policy — это защита от XSS,
даже если у вас уже есть уязвимость.
Пример:
Что это даёт:
👉 запрещает выполнение inline-скриптов
👉 блокирует загрузку скриптов с чужих доменов
👉 режет целый класс атак
Но есть нюанс.
Если CSP выглядит так:
Security headers, которые реально важны
👉
Браузер не пытается угадать тип файла. Меньше атак через подмену.
👉
Защита от clickjacking.
👉
Принудительный HTTPS. Без вариантов.
👉
Контроль того, какие данные уходят при переходах.
Где фронтендер влияет напрямую
👉 какие скрипты подключаются
👉 есть ли inline JS
👉 используются ли eval-подобные вещи
👉 как работают сторонние виджеты
👉 как обрабатываются пользовательские данные
Частая ошибка
«Мы включили CSP — значит всё ок».
Но:
👉 нет nonce / hash
👉 разрешены любые источники
👉 подключены сторонние скрипты без контроля
Главная мысль
CSP, CORS и заголовки — это не чекбокс в настройках.
Это часть архитектуры.
Принято считать, что безопасность — это зона бэкенда.
Фронтенд «просто отправляет запросы и рендерит UI».
На практике фронтенд напрямую влияет на то,
будет приложение безопасным или нет.
CORS — это не про «разрешить запрос»
CORS часто воспринимают как настройку:
«чтобы запросы не падали из браузера».
Но по сути это механизм, который говорит:
кто имеет право читать ответ.
Важно понимать:
👉 сервер может обработать запрос
👉 но браузер может не дать прочитать ответ
Именно поэтому:
👉
Access-Control-Allow-Origin: * — не «фикс», а потенциальная дыра 👉
credentials + wildcard — запрещённая комбинация
CORS — это про контроль доступа, а не про обход ошибок.
CSP — ваш последний рубеж
Content Security Policy — это защита от XSS,
даже если у вас уже есть уязвимость.
Пример:
Content-Security-Policy: default-src 'self'; script-src 'self'
Что это даёт:
👉 запрещает выполнение inline-скриптов
👉 блокирует загрузку скриптов с чужих доменов
👉 режет целый класс атак
Но есть нюанс.
Если CSP выглядит так:
script-src * 'unsafe-inline' 'unsafe-eval'
Это не защита. Это иллюзия.
Security headers, которые реально важны
👉
X-Content-Type-Options: nosniff Браузер не пытается угадать тип файла. Меньше атак через подмену.
👉
X-Frame-Options / frame-ancestors Защита от clickjacking.
👉
Strict-Transport-Security (HSTS) Принудительный HTTPS. Без вариантов.
👉
Referrer-Policy Контроль того, какие данные уходят при переходах.
Где фронтендер влияет напрямую
👉 какие скрипты подключаются
👉 есть ли inline JS
👉 используются ли eval-подобные вещи
👉 как работают сторонние виджеты
👉 как обрабатываются пользовательские данные
Можно иметь идеальный бэкенд и сломать всё на уровне UI.
Частая ошибка
«Мы включили CSP — значит всё ок».
Но:
👉 нет nonce / hash
👉 разрешены любые источники
👉 подключены сторонние скрипты без контроля
В итоге защита есть только на бумаге.
Главная мысль
CSP, CORS и заголовки — это не чекбокс в настройках.
Это часть архитектуры.
Если фронтенд не понимает, как они работают,
безопасность становится случайностью.
👍7❤1
LLM в продакшене: реальные проблемы
В демо всё выглядит магией:
модель отвечает, пишет код, общается как человек.
В продакшене начинается реальность.
1️⃣ Галлюцинации — уверенно, но неправильно
LLM не “знает”.
Она генерирует наиболее вероятный ответ.
Поэтому:
👉 придумывает факты
👉 ссылается на несуществующие источники
👉 уверенно врёт
2️⃣ Нестабильность ответов
Один и тот же запрос:
👉 сегодня → один ответ
👉 завтра → другой
👉 с чуть изменённой формулировкой → третий
👉 сложно тестировать
👉 сложно гарантировать качество
3️⃣ Prompt engineering — это костыль
В теории:
«просто напиши хороший prompt»
На практике:
👉 десятки версий prompt’ов
👉 постоянный тюнинг
👉 ломается от малейших изменений
4️⃣ Стоимость растёт незаметно
Каждый запрос = токены = деньги
А дальше:
👉 длинные контексты
👉 RAG
👉 chain’ы
👉 retries
5️⃣ Latency убивает UX
LLM думает долго:
👉 1–3 секунды — норм
👉 5–10 секунд — уже раздражает
👉 10+ секунд — пользователь ушёл
Особенно критично для:
👉 чатов
👉 real-time систем
👉 API
6️⃣ Evaluation — это ад
Как понять, что стало лучше?
👉 accuracy не работает
👉 метрик нет
👉 нужно вручную оценивать ответы
7️⃣ Безопасность и контроль
LLM может:
👉 сгенерировать токсичный текст
👉 выдать приватные данные
👉 обойти ограничения
Нужны:
👉 guardrails
👉 фильтры
👉 логирование
👉 мониторинг
8️⃣ Контекст — ограниченный ресурс
Даже у больших моделей:
👉 ограничение на токены
👉 длинные диалоги ломаются
👉 важная информация теряется
💥 Главный инсайт
LLM в продакшене — это не про модель.
Это про систему вокруг неё:
👉 retrieval
👉 кеширование
👉 monitoring
👉 fallback’и
👉 eval pipeline
В одном предложении
В демо всё выглядит магией:
модель отвечает, пишет код, общается как человек.
В продакшене начинается реальность.
И она гораздо менее глянцевая 👇
1️⃣ Галлюцинации — уверенно, но неправильно
LLM не “знает”.
Она генерирует наиболее вероятный ответ.
Поэтому:
👉 придумывает факты
👉 ссылается на несуществующие источники
👉 уверенно врёт
Самое опасное — звучит правдоподобно.
2️⃣ Нестабильность ответов
Один и тот же запрос:
👉 сегодня → один ответ
👉 завтра → другой
👉 с чуть изменённой формулировкой → третий
Для бизнеса это боль.
👉 сложно тестировать
👉 сложно гарантировать качество
3️⃣ Prompt engineering — это костыль
В теории:
«просто напиши хороший prompt»
На практике:
👉 десятки версий prompt’ов
👉 постоянный тюнинг
👉 ломается от малейших изменений
Это не инженерия. Это шаманство с контролем версий.
4️⃣ Стоимость растёт незаметно
Каждый запрос = токены = деньги
А дальше:
👉 длинные контексты
👉 RAG
👉 chain’ы
👉 retries
Прототип за $50 превращается в систему за $5000+.
5️⃣ Latency убивает UX
LLM думает долго:
👉 1–3 секунды — норм
👉 5–10 секунд — уже раздражает
👉 10+ секунд — пользователь ушёл
Особенно критично для:
👉 чатов
👉 real-time систем
👉 API
6️⃣ Evaluation — это ад
Как понять, что стало лучше?
👉 accuracy не работает
👉 метрик нет
👉 нужно вручную оценивать ответы
Evaluation = дорого + субъективно + медленно.
7️⃣ Безопасность и контроль
LLM может:
👉 сгенерировать токсичный текст
👉 выдать приватные данные
👉 обойти ограничения
Нужны:
👉 guardrails
👉 фильтры
👉 логирование
👉 мониторинг
8️⃣ Контекст — ограниченный ресурс
Даже у больших моделей:
👉 ограничение на токены
👉 длинные диалоги ломаются
👉 важная информация теряется
Поэтому без RAG никуда.
💥 Главный инсайт
LLM в продакшене — это не про модель.
Это про систему вокруг неё:
👉 retrieval
👉 кеширование
👉 monitoring
👉 fallback’и
👉 eval pipeline
В одном предложении
Сложность LLM-продукта — не в том, чтобы «подключить GPT»,
а в том, чтобы сделать его надёжным.
👍16❤6
Forwarded from xCode Journal
В ходе тестирования Claude Mythos Preview вышла за пределы изолированной среды, разработав «довольно сложную многоэтапную уязвимость» для получения доступа в интернет. После она уведомила исследователя об успехе письмом и выложила детали уязвимости на веб-сайты, хотя об этом ее никто не просил.
Но и это не всё: иногда модель понимала, что нарушает правила, и пыталась это скрыть.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👀9😁4🔥3🐳1
Forwarded from xCode Journal
Программист показал несколько кейсов от разных пользователей — у всех одна и та же проблема: Claude Code принимает свои слова за указания человека, а потом действует исходя из них. Так, ИИ посчитал, что пользователь разрешил снести H100. Агент сам «додумал» это согласие, удалил всё и только потом извинился (ну, спасибо).
А иногда ИИ даже не признает ошибку и до последнего считает, что команду отправил человек.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👀6
ROC-AUC vs PR-AUC: когда что использовать
ROC-AUC и PR-AUC — две метрики, которые постоянно путают.
И чаще всего выбирают не ту.
Разберём на пальцах 👇
📈 Что такое ROC-кривая
ROC-кривая показывает:
👉 TPR (Recall) — сколько положительных нашли
👉 FPR — сколько отрицательных ошибочно посчитали положительными
ROC-AUC — площадь под этой кривой.
📊 Что такое PR-кривая
PR-кривая показывает:
👉 Precision — насколько точны предсказания
👉 Recall — сколько положительных нашли
PR-AUC — площадь под этой кривой.
⚔️ Главная разница
👉 ROC-AUC → разделимость классов
👉 PR-AUC → качество положительных предсказаний
🚨 Где все ошибаются
Используют ROC-AUC при сильном дисбалансе классов.
Почему это плохо?
👉 FPR считается по огромному количеству негативов
👉 даже плохая модель может выглядеть «хорошо»
📉 Когда нужен PR-AUC
Если у тебя:
👉 fraud detection
👉 churn prediction
👉 medical diagnosis
👉 rare event detection
👉 используй PR-AUC
Потому что тебе важно:
👉 находить редкий класс
👉 не засыпать всё false positive
📈 Когда подходит ROC-AUC
Если:
👉 классы более-менее сбалансированы
👉 важна общая separability
👉 задача — в целом отличать классы
👉 тогда ROC-AUC ок
🧠 Интуитивный пример
Представь:
👉 1% — мошенники
👉 99% — нормальные
Модель говорит «всё ок» почти всегда:
👉 ROC-AUC может быть высоким
👉 PR-AUC будет низким
💥 Главный инсайт
ROC-AUC отвечает на вопрос:
PR-AUC отвечает на вопрос:
В одном предложении
ROC-AUC и PR-AUC — две метрики, которые постоянно путают.
И чаще всего выбирают не ту.
Разберём на пальцах 👇
📈 Что такое ROC-кривая
ROC-кривая показывает:
👉 TPR (Recall) — сколько положительных нашли
👉 FPR — сколько отрицательных ошибочно посчитали положительными
Насколько хорошо модель отделяет классы.
ROC-AUC — площадь под этой кривой.
📊 Что такое PR-кривая
PR-кривая показывает:
👉 Precision — насколько точны предсказания
👉 Recall — сколько положительных нашли
Насколько хорошо модель находит редкий класс без мусора.
PR-AUC — площадь под этой кривой.
⚔️ Главная разница
👉 ROC-AUC → разделимость классов
👉 PR-AUC → качество положительных предсказаний
🚨 Где все ошибаются
Используют ROC-AUC при сильном дисбалансе классов.
Почему это плохо?
👉 FPR считается по огромному количеству негативов
👉 даже плохая модель может выглядеть «хорошо»
ROC-AUC становится слишком оптимистичной.
📉 Когда нужен PR-AUC
Если у тебя:
👉 fraud detection
👉 churn prediction
👉 medical diagnosis
👉 rare event detection
👉 используй PR-AUC
Потому что тебе важно:
👉 находить редкий класс
👉 не засыпать всё false positive
📈 Когда подходит ROC-AUC
Если:
👉 классы более-менее сбалансированы
👉 важна общая separability
👉 задача — в целом отличать классы
👉 тогда ROC-AUC ок
🧠 Интуитивный пример
Представь:
👉 1% — мошенники
👉 99% — нормальные
Модель говорит «всё ок» почти всегда:
👉 ROC-AUC может быть высоким
👉 PR-AUC будет низким
Потому что модель не ловит мошенников.
💥 Главный инсайт
ROC-AUC отвечает на вопрос:
Модель в принципе различает классы?
PR-AUC отвечает на вопрос:
Насколько полезны её положительные предсказания?
В одном предложении
Если класс редкий — PR-AUC важнее ROC-AUC.
Если баланс нормальный — можно использовать ROC-AUC.
❤8👍8🔥2👎1
ML-модели становятся помощниками в принятии решений на рекламных платформах
Технический директор рекламной платформы Т-Банка Василий Разумных рассказал, как работает система, в которой модели используются не только для предсказания кликабельности. По его словам, ML-модели определяют, что показывать конкретному человеку в определенный момент времени. На смену ручной сегментации приходит ML-таргетинг: система сама находит нужную для цели аудиторию. Скоринговая модель помогает в ранжировании: она учитывает экономическую эффективность, вероятность действия и репутацию рекламодателя.
Также активно развиваются автостратегии, при которых рекламодатели могут задать цель, а алгоритмы ищут пути ее достижения. СТО отметил, что несмотря на то, что генеративный ИИ помогает варьировать тексты и изображения, все креативы проходят строгие фильтры валидации на соответствие безопасности.
Технический директор рекламной платформы Т-Банка Василий Разумных рассказал, как работает система, в которой модели используются не только для предсказания кликабельности. По его словам, ML-модели определяют, что показывать конкретному человеку в определенный момент времени. На смену ручной сегментации приходит ML-таргетинг: система сама находит нужную для цели аудиторию. Скоринговая модель помогает в ранжировании: она учитывает экономическую эффективность, вероятность действия и репутацию рекламодателя.
Также активно развиваются автостратегии, при которых рекламодатели могут задать цель, а алгоритмы ищут пути ее достижения. СТО отметил, что несмотря на то, что генеративный ИИ помогает варьировать тексты и изображения, все креативы проходят строгие фильтры валидации на соответствие безопасности.
❤1
Forwarded from xCode Journal
Скотт Чакон считает, что классический Git УСТАРЕЛ И плохо работает в мире, где код пишут не только люди, но и ИИ-агенты. Поэтому он создал пару лет назад GitButler и теперь выкатил CLI-версию. Главная его идея — более удобный интерфейс и отсутствие классического переключения между ветками + параллельная работа.
Вообще внутри много прикольных фич — сразу видно, что разрабатывал не новичок
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍6
Forwarded from xCode Journal
Скилл из 4 инструкций, которые меняют поведение Claude Code. Благодаря им модель больше планирует, проверяет себя, пишет аккуратнее и меньше галлюцинирует. Автор вдохновился размышлениями отца вайбкодинга и формализовал его подход к работе с кодом и ИИ.
Чтобы вы понимали — репа набрала почти 40 тысяч звезд за пару дней.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Forwarded from xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20🔥9❤2⚡1
Ошибки при train/test split
Train/test split — кажется самой простой частью ML.
Но именно здесь чаще всего ломают всю модель.
И самое опасное — ты можешь даже не заметить
Data Leakage — тихий убийца моделей
Случайный split там, где нельзя
Игнорирование времени
4️⃣ Дисбаланс классов в split
Слишком маленький test
Тест используется как валидация
Дубликаты в train и test
Неправильный split в CV
Главный инсайт
Train/test split — это не про «разделить данные».
Это про симуляцию реального мира.
Если split не отражает прод —
все метрики бесполезны.
В одном предложении
Плохой split может сделать плохую модель «идеальной» —
до момента, когда она выйдет в прод.
Train/test split — кажется самой простой частью ML.
Но именно здесь чаще всего ломают всю модель.
И самое опасное — ты можешь даже не заметить
Data Leakage — тихий убийца моделей
Ты случайно «подсматриваешь» в тест.
Примеры:
👉 нормализация на всём датасете до split
👉 target encoding на всех данных
👉 feature, напрямую связанная с таргетом
Модель показывает космический скор,
а в проде — провал.
Случайный split там, где нельзя
Ты делаешь random split…
но данные зависимы.
Примеры:
👉 временные ряды
👉 пользователи (один и тот же user в train и test)
👉 сессии
Модель узнаёт данные, а не обобщает.
Игнорирование времени
В задачах с временем:
👉 ❌ случайный split
👉 ✅ train = прошлое, test = будущее
Иначе ты:
👉 обучаешься на будущем
👉 предсказываешь прошлое
Это не ML. Это читерство.
4️⃣ Дисбаланс классов в split
Ты сделал split и получил:
👉 train: 5% positive
👉 test: 1% positive
Метрики начинают врать.
Решение:
👉 stratified split
Слишком маленький test
Test = 50 объектов
Accuracy = 90%
Звучит круто.
Но это статистический шум.
Маленький test = ненадёжная оценка.
Тест используется как валидация
Классическая ошибка:
👉 обучился
👉 посмотрел на test
👉 подкрутил модель
👉 снова посмотрел
Это уже не test. Это validation 2.0.
Дубликаты в train и test
Если один и тот же объект попал в обе выборки:
Модель просто запоминает.
Особенно критично:
👉 CV
👉 e-commerce
👉 табличные данные с ID
Неправильный split в CV
Cross-validation тоже можно сломать:
👉 leakage между фолдами
👉 группы не учитываются
👉 time-series перемешаны
Используй:
👉 GroupKFold
👉 TimeSeriesSplit
Главный инсайт
Train/test split — это не про «разделить данные».
Это про симуляцию реального мира.
Если split не отражает прод —
все метрики бесполезны.
В одном предложении
Плохой split может сделать плохую модель «идеальной» —
до момента, когда она выйдет в прод.
👍12👎2
Feature Engineering важнее выбора модели
Самый непопулярный факт в ML:
модель — это не главное.
Можно часами выбирать между:
…и получить +1% к качеству.
А можно поменять фичи — и получить +20%.
Разберёмся, почему так 👇
Модель учится только на том, что ты ей дал
Пример из жизни
Feature Engineering = внедрение знаний о задаче
Где FE особенно решает
Почему все игнорируют FE
Главный инсайт
ML — это не соревнование моделей.
Это соревнование представлений данных.
В одном предложении
Лучший способ улучшить модель —
👉 перестать тюнить модель и начать тюнить данные
Самый непопулярный факт в ML:
модель — это не главное.
Можно часами выбирать между:
XGBoost
LightGBM
CatBoost…и получить +1% к качеству.
А можно поменять фичи — и получить +20%.
Разберёмся, почему так 👇
Модель учится только на том, что ты ей дал
Garbage in → garbage out
Если признаки:
- шумные
- нерелевантные
- плохо отражают задачу
👉 никакая модель не спасёт
Даже самая большая.
Пример из жизни
Задача: предсказать отток клиентов
Фичи:
- возраст
- город
- тариф
Модель: ок, но слабый результат
Добавили:
- время с последнего действия
- частоту использования
- изменение активности
👉 резкий рост качества
Почему?
Потому что фичи начали отражать реальное поведение
Feature Engineering = внедрение знаний о задаче
Модель не знает:
- бизнес
- контекст
- причинно-следственные связи
Зато ты знаешь.
И когда ты создаёшь фичи —
ты “вшиваешь” это знание в данные.
Модель vs Фичи
Что меняем → эффект
Модель → +1–5%
Гиперпараметры → +1–3%
Feature Engineering → +10–50%
Где FE особенно решает
- Табличные данные
- Маленькие датасеты
- Бизнес-задачи
👉 там, где нет миллионов примеров, фичи — это всё
Когда модель важнее
- CV (изображения)
- NLP (тексты)
- Speech
👉 там фичи учатся автоматически
Почему все игнорируют FE
Потому что:
- это сложно
- это долго
- нет “магической кнопки”
- требует понимания данных
Гораздо проще:
“давай попробуем ещё одну модель”
Главный инсайт
ML — это не соревнование моделей.
Это соревнование представлений данных.
В одном предложении
Лучший способ улучшить модель —
👉 перестать тюнить модель и начать тюнить данные
⚡6❤4
Forwarded from xCode Journal
This media is not supported in your browser
VIEW IN TELEGRAM
Заводчане в Индии носят камеры на голове, чтобы на этих видео потом могли обучать роботов
Для корпораций это фактически бесплатно, а датасет выходит уникальным — таких данных нет в интернете и их невозможно сгенерировать синтетически.
Так что да, люди сами помогают создавать себе замену.
✖️ xCode Journal
Для корпораций это фактически бесплатно, а датасет выходит уникальным — таких данных нет в интернете и их невозможно сгенерировать синтетически.
Так что да, люди сами помогают создавать себе замену.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👀2
Data Leakage: как незаметно сломать модель
Самая коварная ошибка в ML — это не плохая модель.
Это data leakage.
Потому что:
👉 модель показывает идеальные метрики
👉 ты радуешься
👉 выкатываешь в прод
👉 всё разваливается
Что такое Data Leakage
Data leakage — это ситуация, когда модель
получает доступ к информации из будущего или из target’а,
которой не будет в реальном использовании.
Почему это так опасно
Потому что leakage:
👉 не очевиден
👉 не даёт ошибок
👉 сильно улучшает метрики
Классические примеры leakage
1. Нормализация до split
Сделали scaling на всём датасете,
а потом разбили на train/test.
2. Target encoding на всех данных
Посчитали средний target по категории
используя весь датасет.
3. Фичи из будущего
Пример:
👉 предсказываем отток
👉 используем действия после момента предсказания
4. Дубликаты
Один и тот же объект:
👉 в train
👉 и в test
5. Неправильный split
Временные ряды:
👉 случайный split
Как понять, что у тебя leakage
Сигналы:
👉 слишком высокий score
👉 огромный разрыв между offline и продом
👉 модель «слишком уверена»
👉 странно важные фичи
Как защититься
1. Делай split до любых преобразований
Сначала:
👉 train / test
Потом:
👉 scaling
👉 encoding
👉 feature engineering
2. Следи за временем
👉 train = прошлое
👉 test = будущее
3. Используй pipeline
Все трансформации:
👉 обучаются только на train
👉 применяются к test
4. Проверяй фичи
Задай вопрос:
Если нет — удаляй.
5. Делай sanity check
👉 обучись на случайных данных
👉 убери подозрительные фичи
Главный инсайт
В одном предложении
Самая коварная ошибка в ML — это не плохая модель.
Это data leakage.
Потому что:
👉 модель показывает идеальные метрики
👉 ты радуешься
👉 выкатываешь в прод
👉 всё разваливается
И ты не понимаешь почему.
Что такое Data Leakage
Data leakage — это ситуация, когда модель
получает доступ к информации из будущего или из target’а,
которой не будет в реальном использовании.
Модель читерит, а не учится.
Почему это так опасно
Потому что leakage:
👉 не очевиден
👉 не даёт ошибок
👉 сильно улучшает метрики
Чем лучше скор — тем подозрительнее.
Классические примеры leakage
1. Нормализация до split
Сделали scaling на всём датасете,
а потом разбили на train/test.
Модель уже «видела» test.
2. Target encoding на всех данных
Посчитали средний target по категории
используя весь датасет.
В train попала информация из test.
3. Фичи из будущего
Пример:
👉 предсказываем отток
👉 используем действия после момента предсказания
Модель знает будущее.
4. Дубликаты
Один и тот же объект:
👉 в train
👉 и в test
Модель просто запоминает.
5. Неправильный split
Временные ряды:
👉 случайный split
Модель обучается на будущем.
Как понять, что у тебя leakage
Сигналы:
👉 слишком высокий score
👉 огромный разрыв между offline и продом
👉 модель «слишком уверена»
👉 странно важные фичи
Если выглядит слишком хорошо — скорее всего, так и есть.
Как защититься
1. Делай split до любых преобразований
Сначала:
👉 train / test
Потом:
👉 scaling
👉 encoding
👉 feature engineering
2. Следи за временем
👉 train = прошлое
👉 test = будущее
3. Используй pipeline
Все трансформации:
👉 обучаются только на train
👉 применяются к test
4. Проверяй фичи
Задай вопрос:
Эта информация доступна в момент предсказания?
Если нет — удаляй.
5. Делай sanity check
👉 обучись на случайных данных
👉 убери подозрительные фичи
Если качество не падает — что-то не так.
Главный инсайт
Data leakage — это не баг.
Это иллюзия качества.
В одном предложении
Если модель слишком хороша —
сначала проверь leakage, а потом радуйся.
❤5🔥2