Определение цели
Опубликовано: 2015-08-21Методы машинного обучения можно разделить на две большие категории: контролируемые и неконтролируемые. Обучение с учителем учится на помеченном наборе наблюдений, где известно, что наблюдения принадлежат к определенным классам (для задач классификации) или имеют определенные значения (задача регрессии). Обучение без учителя учится на немаркированном наборе наблюдений, когда ничего не известно, кроме самих наблюдений.
Для контролируемых методов обучения мы, по сути, говорим: «Посмотрите на эти «истинные» данные и скажите мне, что я знаю «истину» невидимых данных». Для методов обучения без учителя это эквивалентно «посмотри на эти данные и скажи мне что-нибудь интересное, чего я не знаю». Хотя четкая дихотомия полезна, в этом посте мы поговорим об интересных вариантах, где определение цели само по себе может стать очень интересной задачей!
полуконтролируемый
Это золотая середина между контролируемыми и неконтролируемыми данными, где «истинные» метки существуют только для некоторых наблюдений, но не для всех. Игнорирование имеющейся информации несправедливо по отношению к качеству аналитических моделей, но использование этой информации может сделать проблему необычной. В мире, где легко генерировать данные (вспомните об Интернете), а маркировка стоит дорого, многие проблемы относятся к полуконтролируемой области.
Один из подходов может заключаться в том, чтобы не включать информацию о метках для моделирования, а только для проверки модели и сравнения производительности. Например, мы можем сегментировать данные на k кластеров, используя неконтролируемую кластеризацию, а затем проверить компетентность нашей модели, сравнив прогнозируемый кластер с фактическим кластером. Это может помочь нам сделать лучший выбор среди нескольких кластерных решений.
Другой подход может заключаться в использовании этой информации для моделирования. Мы обсуждали полууправляемую кластеризацию в предыдущей записи блога.
Дискретный и непрерывный
Хотя многие ситуации, очевидно, попадают в категории классификации или регрессии, где «истинным» значением является дискретный класс или непрерывное значение, есть случаи, когда целевое преобразование имеет смысл.
Рассмотрите доход на уровне клиента как функцию демографических данных клиента и его поведения в прошлом. Это достаточно распространенная проблема в розничной торговле, банковской, страховой и телекоммуникационной отраслях. Выручка, часто за последние N месяцев, является явно непрерывным числом. Вы говорите, что сюда может подойти (возможно, линейная) регрессия! Но есть более сложные и изощренные методы, доступные для задач классификации, такие как нейронные сети, которые потенциально могут работать лучше, но не применимы к непрерывной цели. В зависимости от бизнес-контекста вам может не понадобиться прогнозировать фактический доход, а только то, будет ли он высоким, средним или низким. Если это так, вы можете просмотреть распределение доходов для всех клиентов и определить границы для высоких-средних и средних-низких, и вуаля! Вы преобразовали непрерывную целевую задачу в задачу дискретной классификации с тремя классами.
Если ваша непрерывная цель — это процент — скажем, доля учащихся, сдавших экзамен по школам, — и вы хотите также предсказать процент для новых/непосещенных школ, то у вас есть другой вариант, кроме регрессионной модели. Вы можете разделить данные! Парцеллинг преобразует непрерывные дроби в бинарные классы путем репликации наблюдений. Для наблюдения с целевым значением 40% вы повторяете наблюдение 100 раз и для 40 из них назначаете класс 1, а для оставшихся 60 назначаете класс 60. Учитывая то же наблюдение и тот же набор функций, модель попытается дифференцировать 1 от 0 и сделать вывод, что этот вид наблюдения с вероятностью 40% будет равен 1 и с вероятностью 60% будет равен 0. Вы можете сделать то же самое для всех наблюдений. (Да, это увеличит размер обучающих данных в разы.) Большинство распространенных моделей классификации в любом случае дают вероятность класса = 1 в качестве результата, и это результат, который вы все равно хотите!
Можно ли преобразовать дискретные классы в непрерывные значения? В основном нет, но есть примеры. Когда вы пытаетесь предсказать чей-то возраст в годах, который по существу представляет собой дискретное целое число от 0 до 100 (или около того), вы можете рассматривать возраст как непрерывную цель. Точно так же, если у вас есть достаточно детализированные категории дохода, скажем, 0–50 тыс., 50–100 тыс., 100–150 тыс. и т. д., вам может быть выгоднее рассматривать доход как непрерывную переменную, а не решать задачу 20 классов.
Случай без класса
Все данные либо помечены, либо не помечены. Когда данные помечены (предположим, бинарными), они либо принадлежат к тому или иному классу. Но на практике данные могут не принадлежать ни к какому классу.
Например, среди множества страховых претензий вы можете точно знать, что одни претензии являются мошенничеством, а другие нет, но вы можете не знать о многих, которые никогда не расследовались. Рассмотрим среди заявителей на получение кредитных карт, которые были приняты или и которые были отклонены в рамках модели оценки заявок в банковском деле. Но есть много клиентов, которые вообще не обращались, и вы не знаете, были бы они приняты или нет. Часто мы не можем работать с данными без меток, и мы должны исключить их из нашей группы разработки. Тем не менее, мы должны иметь в виду, если это вызывает предвзятость в моделировании. В приведенном выше примере со страховкой, возможно, претензии, которые были расследованы, изначально были подозрительными (даже те, которые не были признаны мошенничеством), или в банковском примере клиенты, которые не подали заявку, не были запрошены продавцом, что полностью исключило демографическую категорию.
Если вы выполняете целевое преобразование, как описано в предыдущем разделе, вы можете сами создать данные без класса. Предположим, вы определили доход более 5000/- в год как максимум и менее 5000/- в год как минимум, чтобы преобразовать непрерывную цель в бинарную цель. Однако это будет плохой дизайн, потому что существует произвольное отсечение на уровне 5000. Клиент с доходом 4999/- не сильно отличается от клиента с доходом 5001/-, но вы ставите их на разные уровни. Ваше определение подразумевает, что доход в размере 5001/- больше похож на доход в 10000/-, чем в 4999/-. Вы видите проблему? Вы можете сделать это технически, но полученная модель не будет хорошей и надежной, поскольку вы просите ее изучить отличия от аналогичных клиентов.
Обычно хорошей практикой является включение буферной/безклассовой зоны. Таким образом, вы можете определить доход в 6000/- или более как высокий, а 4000/- или меньше как низкий и игнорировать наблюдения с доходом от 4000/- до 6000/-. Хотя вы потеряете некоторые данные, модель будет работать намного лучше, поскольку то, что вы определяете как отличающееся, на самом деле отличается.
Хотя большое внимание заслуженно уделяется подготовке данных, созданию функций и методу машинного обучения, определение правильной цели также может быть полезно для качества общего аналитического результата.