"Секреты и уловки"

Характеристики хорошей функции

Почему предсказательная сила — это еще не все при выборе функций модели

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

В этой статье мы объясним, как вы можете использовать комбинацию кластеризации переменных и важности функций для создания такого короткого списка. Мы также обсудим другие соображения, которые могут привести к добавлению или удалению функций. К ним относятся качество и доступность данных, стабильность функций, интерпретируемость и закон/этика. Мы заканчиваем обсуждением того, как все эти соображения объединяются в рамках выбора функций. Давайте начнем с точного определения того, что мы подразумеваем под выбором признаков.

Что такое выбор признаков?

В процессе разработки модели выбор функций происходит после разработки функций и до того, как мы начнем подгонку моделей. Во время разработки функций мы преобразуем наши необработанные данные в список функций модели. В зависимости от вашей проблемы этот список может быть большим (например, более 1000 функций). Выбор функций включает в себя сужение списка до короткого списка (т. е. 20–40 функций). В зависимости от вашей модели может быть еще один этап выбора функций, на котором вы выбираете окончательный список функций модели (например, 8–10 функций). В этой статье мы сосредоточимся на первом этапе — создании шорт-листа.

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

Резервные функции

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

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

Нерелевантные функции

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

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

Предсказательная сила

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

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

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

Разнообразие предикторов

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

Кластеризация переменных

Вопрос в том, как мы можем создать эти группы признаков. Мы могли бы сделать это вручную, используя знание предметной области, или уже может быть встроенная группировка. Для нашего примера с автокредитом мы могли бы создать 6 групп (5 основных источников данных и 1 сочетание дохода и долга). Например, вы можете увидеть группы по умолчанию и доход на рис. 4. В обеих группах функции упорядочены по важности. Затем мы могли бы взять 3/4 наиболее предсказуемых функций из каждой группы, чтобы получить краткий список от 18 до 24 функций.

Для многих задач может быть сложно сгруппировать объекты вручную. Возможно, у вас слишком много объектов для ручной группировки. Базовые источники данных также могут быть более сложными. Даже для нашего примера с автокредитом неясно, будет ли 6 групп наилучшей возможной группировкой. Например, одна из функций в личной группе — «Текущая профессия». Может быть, лучше включить это в характеристики дохода.

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

Другие характеристики и соображения

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

Качество данных

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

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

Доступность данных

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

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

Стабильность (прошлые и будущие показатели)

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

Чтобы лучше понять это, давайте вернемся к нашему примеру с автокредитом. Предположим, до пандемии мы строим модель с PERS7 —количество посещений физических отделений за последние 12 месяцев. В то время клиенты, которые, как правило, чаще обращались в банк, были менее склонны не выплачивать автокредиты. Другими словами, чем выше значение PERS7, тем ниже вероятность невыполнения обязательств. Из-за пандемии блокировки означали, что многие взаимодействия переместились в онлайн. Это означает меньше посещений отделений, и мы бы увидели снижение значений PERS7 для всех наших клиентов.

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

Интерпретируемость

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

1-й ПК может быть более прогностическим, чем любая из характеристик индивидуального дохода. Тем не менее, мы по-прежнему можем включать в наш краткий список только простые агрегированные данные о доходах. Это связано с тем, что взаимосвязь между дефолтом и общим доходом легче понять и объяснить, чем связь с ПК. В конечном счете, мы можем отдать приоритет некоторым функциям над другими, чтобы улучшить интерпретируемость нашей модели. Если вы хотите понять, почему интерпретируемость важна, вы можете прочитать эту статью:



Закон и этика

Могут быть определенные типы информации, которые незаконны для построения модели. Например, чтобы избежать гендерной дискриминации при кредитовании, использование PERS65 (пол клиента) может быть незаконным. Даже если законодательство в настоящее время не распространяется на эти типы информации, вы все равно можете избегать их. Они могут привести к неэтичным последствиям и общественной реакции.

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

Конкретные вопросы

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

Структура выбора функций

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

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



Стать приглашенным участником

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

Источники изображений

Все изображения мои собственные или взяты с www.flaticon.com. В случае последнего у меня есть Полная лицензия, как определено в их Премиум-плане.

Рекомендации

Н. Сиддики, Системы оценки кредитных рисков: разработка и внедрение интеллектуального кредитного скоринга (2006 г.)

Дж. Браунли, Как выбрать метод выбора признаков для машинного обучения (2020 г.) https://machinelearningmastery.com/feature-selection-with-real-and-categorical-data/

Документация R, Кластеризация переменных (2021) http://math.furman.edu/~dcs/courses/math47/R/library/Hmisc/html/varclus.html

Руководство по открытым рискам, Model Decay (2021 г.) https://www.openriskmanual.org/wiki/Model_Decay