Прибыль:
- Способность определять тип проблемы (классификация, регрессия, кластеризация) и критерии успеха в соответствии с реальной стоимостью работы.
- Способность честно разделить данные (не касаясь тестового набора; в хронологическом порядке во временных рядах) и установить надежную основу для оценки.
- Возможность выбрать интерпретируемую модель, начав с простой базовой линии и добавляя сложность только тогда, когда она того заслуживает.
До сих пор мы собирали данные, очищали их, исследовали и создавали функции. Теперь мы переходим к настоящей работе — построению модели. Модель — это математическая структура, которая изучает закономерности на основе данных и дает прогнозы для новых ситуаций. Но самая важная часть построения модели — это не сам код, а два решения, которые ему предшествуют: определение правильной проблемы и правильное разделение данных. ИИ — мощный советник при выборе алгоритма, написании кода и настройке параметров; но каждый сам решает, что предсказывать и что означает успех. Плохо определенная задача не будет работать даже с идеально написанной моделью.
Сначала постановка проблемы: что мы прогнозируем
Любая работа по моделированию начинается с вопроса, и этот вопрос определяет тип модели. Классификация — на выходе получается категория: «Уйдет или останется этот клиент?», «Эта транзакция фиктивная?». Регрессия (по-английски reгрессия — выходное число — число): «Сколько стоит этот дом?», «Сколько заказов поступит в следующем месяце?». Кластеризация (разделение немаркированных данных на естественные группы): «На сколько естественных сегментов разделены мои клиенты?».
Вторая часть постановки задачи — это критерий успеха: что значит, чтобы эта модель была «хорошей»? В мошеннической модели пропустить мошенника гораздо дороже, чем случайно заблокировать честного клиента; Поэтому на первый план выходит не «общая точность», а «скорость поимки мошенников». Если вы не определите этот критерий с самого начала вместе с владельцем бизнеса, вы получите «высокоточную» модель, которая не работает (мы углубимся в метрики в модуле 7).
Внимание: «Точность» может ввести в заблуждение. Если 10 из 1000 транзакций являются мошенническими, дурацкая модель, говорящая «ни одна не является мошеннической», даст точность 99%, но не поймает ни одного мошенника. Выбирайте критерии успеха, исходя из реальной стоимости проблемы.
Разделение обучения/тестирования: честное изучение модели
Тестирование модели на изученных ею данных похоже на задание студенту тех же вопросов, которые он/она изучал на экзамене; Он получает высокие оценки, но не показывает, что он действительно знает. Поэтому мы разделяем данные на две (часто три):
- Обучающий набор (обучающий набор на английском языке, обычно 70-80%): Модель учится на этом.
- Тестовый набор (тестовый набор, обычно 20-30%): Модель этого вообще не видит; здесь измеряется реальная производительность.
- Проверочный набор: промежуточный набор, используемый для настройки модели (какой параметр лучше); чтобы сохранить тестовый набор «чистым».
Самое основное правило: тестовый набор во время обучения ни в коем случае не трогают. Масштабирование, кодирование, выбор функций — все это просто изучается на обучающем наборе, а затем применяется к тестированию (принцип утечки из модуля 5). Тестовый набор — это первый раз, когда модель видит реальный мир; Если вы включите его слишком рано, вы никогда не узнаете истинную производительность.
Исключение временного ряда: если ваши данные зависят от времени (продажи, фондовый рынок, спрос), случайное разделение не выполняется. Потому что случайное расщепление заставляет модель видеть будущее и предсказывать прошлое — это утечка. Вместо этого разделите в хронологическом порядке: тренируйтесь в старом периоде, тестируйте в новом периоде.
Выбор алгоритма: от простого к сложному
Самая распространенная ошибка новичков – начинать с самой сложной модели. Правильный подход — противоположный: сначала установите простой базовый уровень. «всегда угадывайте класс большинства» в классификации; «всегда оценивайте среднее значение» в регрессии. Эта дурацкая модель дает базовый уровень; Если ваша реальная модель не может пройти это, есть проблема. Затем переходите к простым и интерпретируемым моделям.
модель
Тип проблемы
сильная сторона
слабость
Базовый уровень (большинство/среднее)
оба
Дает ориентир
не учится
Логистическая регрессия
Классификация
Простой, интерпретируемый
Только линейная зависимость
Линейная регрессия
регресс
Просто, быстро
линейное предположение
дерево решений
оба
интерпретируемый
Легкое запоминание
случайный лес
оба
Прочный, долговечный
Менее интерпретируемый
Повышение градиента (XGBoost и т. д.)
оба
очень сильный
Трудно настроить, риск запоминания
Правило: выбирайте самую простую, «достаточно хорошую» модель. В большинстве бизнес-контекстов интерпретируемость более ценна, чем власть; Лучше объяснить отказ в кредите «потому что у вас высокое соотношение долга к доходу», чем «потому что так сказал черный ящик».
три мини-кейса
Случай 1 — Неправильная постановка проблемы. Команда построила модель классификации на основе «удовлетворен ли клиент», но выбрала «точность» в качестве критерия успеха. По данным, 88% клиентов остались довольны; Модель получила точность 88%, назвав всех «удовлетворенными» и ни разу не поймав недовольных, хотя настоящей целью было их найти. Урок: выбирайте критерии успеха, исходя из реальной цели.
Случай 2 — Утечка времени в отсеке. В проекте прогнозирования спроса данные были разделены случайным образом. Модель дала 93% точности, но потерпела крах в производстве, потому что во время обучения она предсказывала январь, а затем ноябрь с декабрьскими данными — она видела будущее. Когда мы перешли на хронологическое деление, фактическая производительность выросла до 74%. Урок: хронологическое деление временных рядов.
Случай 3 — Ненужная сложность. Один аналитик начал с глубокой нейронной сети, настраивал ее неделями и получил точность 81%. Затем коллега получил 80% с 20 строками логистической регрессии — гораздо быстрее, интерпретируемее и проще в обслуживании. Урок: начните с базовой линии и простой модели, добавляйте сложность, когда она того заслуживает.
Четыре копируемых шаблона
1) Уточнение определения проблемы:
Ваша роль: консультант по моделированию. Помогите мне сформулировать эту работу: «Я хочу уменьшить отток клиентов». Спросите меня и уточните: (1) это классификация или регрессия, (2) что именно является целевой переменной и как ее следует определить, (3) каковы должны быть критерии успеха и почему. Решение за мной; вы представляете вопросы и варианты.
2) Безопасное учебно-испытательное отделение:
Разделите мой df на обучение/тестирование 80%/20%. Поддерживать распределение классов (стратифицировать).random_state=42. Это НЕ ВРЕМЕННОЙ РЯД (независимые наблюдения). Выведите соотношение классов каждого набора после деления. Просто передайте код разделения тестовому набору, не применяя никаких преобразований.
3) Хронологическое деление временного ряда:
Данные зависят от времени (столбец даты: order_date). НЕ случайно, разделите в хронологическом порядке: 80% самого старого обучения, 20% самого нового тестирования. Распечатайте диапазоны дат обучения и тестирования, чтобы я мог убедиться, что будущее не утекло.
4) Установка базовой линии:
У меня проблема с классификацией (цель: отток 0/1). Сначала установите базовый уровень: измерьте точность обучения/тестирования с помощью DummyClassifier, который всегда прогнозирует класс большинства. Затем обучите простую логистическую регрессию и сравните, превосходит ли она базовый уровень. Покажите показатели двух бок о бок.
Слабая подсказка / Сильная подсказка
Слабая подсказка:
Постройте лучшую модель с этими данными.
«Лучший» не определен; Не существует типа проблемы, цели, критериев успеха и стратегии разделения. ИИ генерирует случайный шаблон, возможно, дырявый.
Мощная подсказка:
Ваша роль: ассистент модели. Проблема: классификация, целевой «отток» (0/1), классовый дисбаланс (отток ~12%). Критерий успеха: отзыв тех, кто уходит, является приоритетом. Независимые от данных наблюдения (не временные ряды). Задача: (1) стратифицированное разделение 80/20%, (2) базовая линия DummyClassifier, (3) логистическая регрессия, все преобразования в конвейере и изучены только в ходе обучения. Не прикасайтесь к тестовому набору перед его разделением.
Здесь понятен тип проблемы, дисбаланс, критерий и мера утечки.
Распространенные ошибки
- Невыбор критериев успеха в соответствии с реальной целью. «Точность» несбалансированных данных вводит в заблуждение; Если вы хотите захватить класс меньшинства, на первый план выходит отзыв.
- Прикосновение к тестовому набору во время тренировки. Выполнение масштабирования/кодирования перед разделением является ненадежным и скрывает реальную производительность.
- Случайное разбиение во временных рядах. Модель видит будущее, терпит крах в производстве; Хронологическое разделение имеет важное значение.
- Переход к сложной модели без установления базовой линии. Без тестов вы не сможете узнать, действительно ли модель хороша или нет.
- Игнорирование интерпретируемости. В бизнес-решениях простая объяснимая модель зачастую более ценна, чем черный ящик.
Совет: Прежде чем приступить к построению модели, напишите одно предложение: «Эта модель будет прогнозировать _____, ее успех будет измеряться показателем _____, потому что истинная стоимость работы равна _____». Если вы не можете заполнить это предложение, значит, вы еще не готовы писать код.
В заключение
Самая важная часть построения модели — это не код, а предшествующие ему решения: определение правильной задачи (классификация или регрессия, какова цель, каков критерий успеха) и справедливое разделение данных (не трогая набор тестов; хронологическое во временных рядах). Всегда начинайте с простой базовой линии и добавляйте сложность только тогда, когда она того заслуживает; интерпретируемость ценится выше власти в большинстве бизнес-контекстов. ИИ — мощный советник при выборе алгоритмов и кода, но человек решает, что вы прогнозируете и почему.
Задача приложения
Определите задачу прогнозирования и письменно напишите следующее предложение: «Эта модель будет прогнозировать ___ (классификация/регрессия), цель — ___, критерий успеха — ___, потому что ___». Затем разделите данные, используя правильную стратегию (хронологическую, если это временной ряд), установите базовый уровень и измерьте, нарушает ли простой шаблон этот базовый уровень.
контрольный список
- [ ] Четко ли я определил тип проблемы (классификация/регрессия) и цель?
- [ ] Выбрал ли я критерии успеха, исходя из фактической стоимости работы?
- [ ] Оставил ли я тестовый набор нетронутым во время обучения?
- [ ] Если это временной ряд, разделил ли я его в хронологическом порядке?
- [ ] Установлен ли базовый уровень перед тем, как перейти к сложной модели?