Самая сложная часть определение цели для классификации

Самая сложная часть постановка цели для классификации

Он не помечен как ‘Target_Variable’ в вашей производственной базе данных!

Фото Кенни Элисона на Unsplash

Что такое целевая переменная?

Целевая переменная – это переменная или метрика, которую вы пытаетесь предсказать с помощью модели обученного машинного обучения. Её также часто называют зависимой переменной, переменной отклика, ‘y’ переменной или просто выводом модели.

Независимо от того, какой термин вам нравится (или вы были вынуждены использовать на уроках статистики), это самая важная переменная в любом проекте обучения модели с учителем. Хоть это очевидно для большинства людей, имеющих опыт машинного обучения – стоит еще раз подчеркнуть почему это так для новичков.

С технической точки зрения, тип данных вашей целевой переменной определяет тип вашего проекта по моделированию. Числовые целевые переменные применимы в регрессионных моделях, в то время как категориальные переменные означают, что вы работаете с моделью классификации.

Модель регрессии с числовой целевой переменной - изображение из моего курса по регрессии

Но гораздо важнее, чем тип модели, ваша целевая переменная – это вся причина, почему вы создаете модель.

Очень простое дерево решений, прогнозирующее отток клиентов - из курса классификации Maven

Определение целевой переменной для классификации

На первый взгляд определение целевой переменной для классификации может показаться простым. Но ваше мнение может измениться, если вас попросят построить модель для данных, которые никогда раньше не использовались для моделирования.

Когда люди начинают изучать машинное обучение, им обычно предоставляют относительно чистые наборы данных, в которых ясно определены значения 0 и 1, которые можно использовать для моделирования классификации. Но по моему опыту найти столбец в реляционной базе данных, который идеально подходит под вашу целевую переменную, это крайне редко.

Конечно, это имеет совершенно логичное объяснение в контексте изучения алгоритмов МО, но у меня точно произошло небольшое разочарование, когда я увидел SQL-запрос, который создал первый набор данных для моделирования “реальной жизни” в моей первой работе датасаентиста.

Давайте рассмотрим несколько примеров типов трансформаций, которые нам может потребоваться выполнить с нашими данными для генерации целевой переменной в связи с оттоком клиентов для подписочного продукта. Это может быть страховая полиса, подписка на Netflix или что-то другое. Я создал фиктивные данные, которые имитируют данные, которые я видел в реальной практике, но простите меня, если они не соответствуют тому, как инженер данных организовал бы эти таблицы.

Пример 1: Дата отмены

Здесь нет явного значения 1 или 0, указывающего, что клиент отключился (подписка завершилась), но в этом примере создать такое значение достаточно просто. Если subscription_end_date равна null, мы можем предположить, что клиент все еще активен. Мы можем применить некоторую базовую логику, чтобы присвоить 1, если дата окончания подписки не равна null, и 0, если равна null, так что положительным классом нашей целевой переменной будет отток.

Достаточно просто. Теперь давайте рассмотрим более сложный пример.

Пример 2: Дата продления

Представьте себе, что у нас есть еще одна колонка в нашей таблице подписок. Если клиент снова становится платным подписчиком, у нас есть колонка, чтобы записать, когда это произошло.

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

Но что насчет клиента 4? Он продлил подписку на следующий день после окончания предыдущей. Возможно, он имел месячную подписку, или истек срок действия его кредитной карты, и как только он осознал это, он снова активировал свою подписку. Можно ли сказать, что такой день паузы в членстве достаточен, чтобы считать этого клиента отказавшимся? Скорее всего, нет. Но что насчет паузы в 7 или 30 дней?

Клиент 5 возобновил подписку, но не был клиентом более года. Скорее всего, можно сказать, что он отказался от услуг, но здесь важно общаться со своими заинтересованными сторонами и экспертами в данной области. Мы могли бы прийти к выводу, что клиент считается отказавшимся, если он пропускает промежуток более 30 дней, и получили бы следующее:

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

Например, если клиент 4 был очень активным пользователем нашей платформы (он сразу заметил, что потерял доступ), но двое других – нет, то характеристики, коррелирующие с отказом, потеряют предиктивную силу из-за ошибочного определения цели.

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

Небольшой совет

Целевая переменная вашей модели не просто 0 или 1, она представляет собой основу успешного проекта по моделированию классификации. Исходя из этого, у меня есть несколько общих советов о том, как осуществлять определение целевой переменной в вашем следующем проекте:

  • Вероятно, ваша целевая переменная не будет определена в таблице для вас
  • Выделите время, и я говорю несколько дней, а то и недель, чтобы критически подумать о том, как вашу целевую переменную можно определить на основе имеющихся данных и как это определение связано с бизнес-целями. Это редко простая задача, и намного лучше вложить время и усилия в начале, чем вносить изменения в определение позже.
  • В вашей организации могут не быть общепринятого концептуального определения вашей целевой переменной. “Отказ” можно определить многими способами, и, возможно, у вас никогда не будет идеального определения. Но важно достичь согласия о том, как вы, как моделист, это определите, общаясь с заинтересованными сторонами. По крайней мере, вы оберегаете себя на случай, если определение понадобится изменить, а в лучшем случае вы создаете основу для построения успешной модели.

Спасибо, что уделили время чтению моих мыслей – я понимаю, что они, возможно, не являются новаторскими для опытных специалистов по обработке данных, но моя надежда в том, чтобы новички в этой области осознали разрывы между учебой и работой и поняли, что целевые переменные не следует принимать как должное – соблазн двигаться к моделированию как можно быстрее может привести к промаху в… цели.

Если вам понравилась эта статья, подпишитесь на меня! Я регулярно пишу о таких темах, как Python, Pandas и переход от анализа данных к науке о данных. У меня также есть курсы по этим темам на платформе Maven Analytics и Udemy – буду рад видеть вас там!