17
Описание метода Цель метода деревьев решений — построить модель зависимости целевой переменной от соответствующих значений независимых переменных (предикторов, атрибутов). Как видно из рис. 1, по типу шкалы целевой переменной деревья решений подразделяются на деревья регрессии и деревья класси- фикации. Цель деревьев регрессии — спрогнозировать значение целевой переменной в зависимости от соответствующих значений предикто- ров, например спрогнозировать средний доход клиента за год в зави- симости от пола и возраста клиента (работа с количественной целе- вой переменной). Цель деревьев классификации — предсказать принадлежность объекта к той или иной категории целевой переменной в зависимо- сти от соответствующих значений предикторов, например класси- фицировать заемщиков на «плохих» и «хороших» в зависимости от их характеристик (работа с категориальной целевой переменной). Зависимость значения целевой переменной от значений предик- торов представлена в виде иерархической структуры — «дерева». Разработка скоринговой модели с помощью метода деревьев решений А.В. ГРуздеВ, исследовательская компания «Гевисста», директор Метод деревьев решений является, пожалуй, вторым по популяр- ности (после логистической регрессии) из наиболее часто исполь- зуемых в кредитном скоринге. Деревья решений используются для классификации заемщиков на «хороших» и «плохих», опреде- ления правил кредитной политики, вычисления различных коли- чественных показателей платежеспособности заемщика. В статье пойдет речь о построении модели дерева, диагностике качества модели и интерпретации полученных результатов. 22 Риск-менеджмент в кредитной организации № 2 (10) \ 2013 Управление и контроль

Разработка скоринговой модели с помощью деревьев решений в R

Embed Size (px)

DESCRIPTION

Statistical methods

Citation preview

Page 1: Разработка скоринговой модели с помощью деревьев решений в R

Описание методаЦель метода деревьев решений — построить модель зависимости целевой переменной от соответствующих значений независимых переменных (предикторов, атрибутов).

Как видно из рис. 1, по типу шкалы целевой переменной деревья решений подразделяются на деревья регрессии и деревья класси­фикации.

Цель деревьев регрессии — спрогнозировать значение целевой переменной в зависимости от соответствующих значений предикто­ров, например спрогнозировать средний доход клиента за год в зави­симости от пола и возраста клиента (работа с количественной целе­вой переменной).

Цель деревьев классификации — предсказать принадлежность объекта к той или иной категории целевой переменной в зависимо­сти от соответствующих значений предикторов, например класси­фицировать заемщиков на «плохих» и «хороших» в зависимости от их характеристик (работа с категориальной целевой переменной).

Зависимость значения целевой переменной от значений предик­торов представлена в виде иерархической структуры — «дерева».

Разработка скоринговой модели с помощью метода деревьев решений

А.В. ГРуздеВ,

исследовательская

компания «Гевисста»,

директор

Метод деревьев решений является, пожалуй, вторым по популяр­ности (после логистической регрессии) из наиболее часто исполь­зуемых в кредитном скоринге. Деревья решений используются для классификации заемщиков на «хороших» и «плохих», опреде­ления правил кредитной политики, вычисления различных коли­чественных показателей платежеспособности заемщика. В статье пойдет речь о построении модели дерева, диагностике качества модели и интерпретации полученных результатов.

22

Риск-менеджмент в кредитной организации № 2 (10) \ 2013

Управление и контроль

Page 2: Разработка скоринговой модели с помощью деревьев решений в R

Если зависимая переменная является категориальной, строится дерево классификации. Если зависимая переменная является коли­чественной, строится дерево регрессии.

Из рис. 2 видно, что дерево решений состоит из узлов и ветвей, обозначаемых отрезками, соединяющими узлы. Построение дерева происходит сверху вниз.

Рисунок 1

Типы деревьев решений

Рисунок 2

Структура дерева решений

Целевая переменнаяКОЛИЧЕСТВЕННАЯ

Деревья регрессии

ПРОГНОЗзначений зависимой переменной

по значениям предикторов

Целевая переменнаяКАТЕГОРИАЛЬНАЯ

Деревья регрессии

КЛАССИФИКАЦИЯзначений зависимой переменной

по значениям предикторов

Корневой узел

Терминальныеузлы

УзлыВетвь

Правилоразбиения

Спрогнозированныекатегории

debtinc < 14,75

0

0

1

1

debtinc < 24,65

employ ≥ 9,5

creddebt < 4,804

23

www.reglament.net

классификация заемщиков \ кросс-валидация \ прунинг

Разработка скоринговой модели с помощью метода деревьев решений

Page 3: Разработка скоринговой модели с помощью деревьев решений в R

Самый первый (самый верхний) узел, представляющий всю выборку наблюдений, называется корнем или корневым узлом.

Разбиение на узлы (подмножества) определяется правилами раз­биения. В роли правил выступают значения независимых перемен­ных (доход, наличие детей и т.д.).

Правила со значениями независимых переменных отмечаются на ветвях дерева и соответствуют определенным узлам, в которых записывается решение:

— для деревьев регрессии — спрогнозированное среднее значе­ние;

— для деревьев классификации — спрогнозированные катего­рии.

Новые узлы, появившиеся в результате расщепления узла, назы­ваются «узлы­сыновья». Узел, который был расщеплен, называется «узел­отец».

Дерево заканчивается листом, или терминальным узлом, — конеч­ным узлом, который не расщепляется и в котором рост останавли­вается. Терминальный узел содержит:

— для деревьев регрессии — наилучший прогноз;— для деревьев классификации — наилучший результат класси­

фикации.С помощью метода можно:— классифицировать заемщиков на «плохих» и «хороших»;— стратифицировать заемщиков по степени риска (выделить

группы заемщиков с высоким, средним или низким риском);— сформулировать правила и использовать их для предсказания

дефолта, принятия решения о выдаче кредита;— сформировать из большого числа переменных набор предик­

торов, полезных для построения модели;— установить взаимосвязи, которые относятся только к специфи­

ческим подгруппам, и впоследствии задать их в модели;— объединить категории предиктора и преобразовать непрерыв­

ную переменную в дискретную с минимальной потерей информации (категоризация количественных переменных для построения ско­ринговой карты).

Метод деревьев решений обладает следующими преимуществами:— наглядностью представления результатов (в виде иерархиче­

ской структуры дерева);— возможностью работы с большим числом независимых пере­

менных: на вход можно подавать все существующие переменные; алгоритм сам выберет наиболее значимые среди них, и только они

Терминальный узел —

конечный узел дерева,

который не расщепля-

ется и в котором рост

останавливается. Терми-

нальный узел содержит:

для деревьев регрес-

сии — наилучший про-

гноз; для деревьев клас-

сификации — наилучший

результат классифика-

ции.

24

Риск-менеджмент в кредитной организации № 2 (10) \ 2013

Управление и контроль

Page 4: Разработка скоринговой модели с помощью деревьев решений в R

будут использованы для построения дерева (автоматический поиск предикторов);

— способностью выявлять взаимосвязи, которые нелегко обна­ружить в рамках стандартных статистических моделей (нелинейные взаимосвязи, сложные взаимодействия);

— зависимые и незавиcимые переменные могут быть любыми: количественными, порядковыми или номинальными;

— отсутствием строгих требований к распределению данных.К недостаткам метода деревьев решений можно отнести:— отсутствие простого общего уравнения, выражающего модель;— проблему переобучения: нередко деревья получаются слишком

детализированными, имеют много узлов и ветвей, сложны для интер­претации, поэтому требуется специальная процедура отсечения ветвей (прунинг);

— cмещение выбора в пользу переменных, у которых большее количество категорий.

Существуют различные методы деревьев решений. Мы рассмот­рим метод CART, используемый для построения деревьев решений в статистическом пакете R.

На первом этапе происходит построение полного дерева. Сначала отыскивается переменная, наилучшим образом разбивающая корневой узел (весь набор данных) на два узла­потомка (подгруппы). Если пере­менная имеет пропущенные значения, то CART применяет сурро­гаты — другие предикторы, имеющие сильную корреляцию с исходной независимой переменной. Процесс бинарного расщепления повторяется для каждого узла до тех пор, пока возможно улучшение прогноза.

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

До начала расщепления девиация равна:

2( ) .jj

D y у= −∑

Расщепление происходит так, что исходное множество данных делится на два подмножества — подмножество j1s (запишем как j1) и подмножество j2s (запишем как j2). Для любого расщепления:

25

www.reglament.net

классификация заемщиков \ кросс-валидация \ прунинг

Разработка скоринговой модели с помощью метода деревьев решений

Page 5: Разработка скоринговой модели с помощью деревьев решений в R

1 2

1 2

2 2 21 2

2 21 1 2 2

( ) ( ) ( )

( ) ( ) ,

j j jj j j

D y у y у y у

n у у n у у

= − = − + − +

+ − + −

∑ ∑ ∑

где первые два члена уравнения содержат новую внутригрупповую сумму квадратов, а два последних члена уравнения составляют межгрупповую сумму квадратов.

Внутригрупповая сумма квадратов отражает вариацию целевой переменной как результат влияний всех прочих случайных фак­торов.

Межгрупповая сумма квадратов характеризует вариацию целевой переменной как результат влияния переменной, использованной при разбиении.

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

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

В деревьях классификации с категориальной целевой переменной для отбора предикторов и разбиения узлов CART применяет принцип уменьшения неоднородности в узле. Расщепление узла происходит так, чтобы узел­потомок был более однородным, чем его узел­родитель. В абсолютно однородном узле все наблюдения имеют одно и то же значение целевой переменной (все объекты принадлежат к одной и той же категории целевой переменной).

Чаще всего для оценки неоднородности применяется индекс Джини. В основе индекса Джини — возведенные в квадрат вероятности, с которыми наблюдения будут отнесены к каждой категории зави­симой переменной:

21 .ij ik ikj k k

p p p≠

= −∑ ∑

Когда наблюдения в узле равномерно распределены по катего­риям, индекс Джини принимает свое максимальное значение. Когда все наблюдения в узле принадлежат к одной и той же категории, индекс Джини равен 0.

Допустим, есть узел и он разбит на два класса. Максимальная неопределенность в узле будет достигнута при разбиении его на два подмножества по 50 примеров, а максимальная определенность — при разбиении на 100 и 0 примеров.

Чаще всего для оценки

неоднородности в узле

применяется индекс

Джини.

26

Риск-менеджмент в кредитной организации № 2 (10) \ 2013

Управление и контроль

Page 6: Разработка скоринговой модели с помощью деревьев решений в R

На втором этапе происходит выбор оптимального дерева. Для этого используется кросс­валидация. Фиксируется некоторое множество разбиений исходной выборки (в R по умолчанию используется 10 раз­биений) на две подвыборки: обучающую и контрольную. Для каждого разбиения выполняется настройка алгоритма по обучающей под­выборке, затем оценивается его средняя ошибка на объектах кон­трольной подвыборки. Кросс­валидационной ошибкой (cross­validated error, или xerror) называется средняя по всем разбиениям величина ошибки на контрольных подвыборках. Она оценивает способность модели выдавать правильные прогнозы на новых данных, не вхо­дивших в состав обучения. В итоге на каждом шаге построения дерева рассчитываются кросс­валидационные ошибки, помогающие определить, когда достигнута максимальная прогностическая спо­собность и дерево можно остановить в росте.

Для контроля роста дерева необходимо анализировать не только кросс­валидационную ошибку, но также и стоимость сложности модели (cost­complexity parameter, или cp). Данный параметр опре­деляет «стоимость» каждого расщепления. По мере увеличения расщеплений дерево становится более сложным, а ошибка подгонки модели уменьшается. Если при расщеплении узла добавление пере­менной в модель увеличивает сложность, но не уменьшает ошибку подгонки (снижение ошибки меньше заданного порогового значе­ния), то это ведет к построению излишне сложного, детализирован­ного дерева, происходит переобучение модели. Поэтому процесс расщепления в таком случае нужно остановить. Для этого в рамках метода CART используется техника прунинга (отсечения ветвей дерева). Прунинг приводит к уменьшению числа узлов и упрощению структуры дерева, позволяет минимизировать переобучение.

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

Таким образом, общая логика анализа состоит в том, чтобы постро­ить полное дерево с максимальным количеством расщеплений (т.е. переобученное), а затем обрезать его до нужного размера, выбрав оптимальное сочетание значений кросс­валидационной ошибки и сложности.

Техника прунинга (отсе-

чения ветвей дерева)

приводит к уменьшению

числа узлов и упроще-

нию структуры дерева,

позволяет минимизиро-

вать переобучение.

27

www.reglament.net

классификация заемщиков \ кросс-валидация \ прунинг

Разработка скоринговой модели с помощью метода деревьев решений

Page 7: Разработка скоринговой модели с помощью деревьев решений в R

Подготовка данных для моделиРассмотрим конкретный пример разработки скоринговой модели c помощью метода деревьев решений в программе R. Модель должна дать прогноз рисков по клиентам, которые планируют воспользо­ваться кредитом, на основе исторических данных.

Историческая выборка — данные о 700 заемщиках, которые уже воспользовались кредитом.

Независимые переменные:— возраст заемщика (age);— образование заемщика (ed);— общий стаж заемщика (employ);— срок проживания заемщика по последнему адресу (address);— ежемесячный личный доход заемщика (income);— процент кредитных обязательств заемщика от дохода

(debtinc);— долг заемщика по кредитной карте банка (creddebt);— наличие детей у заемщика (children).Зависимая переменная — отсутствие/наличие у клиента просро­

чек по ранее взятому кредиту (default). Принимает значение 0 — отсутствие просрочек или 1 — наличие просрочек.

Данные о 700 заемщиках содержатся в учебном файле bankloan.csv1.

Запустите программу R. Теперь мы должны прочитать наш учебный файл bankloan.csv, указав путь к нему:> read.csv2(«C:/data/bankloan.csv»)

Протокол расчетов 1

Данные (фрагмент)

1 http://www.sendspace.com/file/29eleq.

Получаем информацию о наших данных. Приводится таблица — значения переменных для каждого из 700 наблюдений.

age ed employ address income debtinc creddebt children default1 41 3 17 7 176 9.3 11.359392 0 12 27 1 10 6 31 17.3 1.362202 1 0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 45 1 19 5 77 8.4 2.302608 2 0700 37 1 12 5 44 14.7 2.994684 2 0

28

Риск-менеджмент в кредитной организации № 2 (10) \ 2013

Управление и контроль

Page 8: Разработка скоринговой модели с помощью деревьев решений в R

Теперь необходимо указать тип переменных, которые будут исполь­зоваться для анализа. Для количественных переменных нужно вос­пользоваться функцией as.numeric, а для категориальных перемен­ных — функцией as.factor.

Результату операции присвоим имя data, чтобы начать работу с нашими данными в R:> data <- read.csv2(«C:/data/bankloan.csv»)

Зададим типы переменных для анализа:> data$age <-as.numeric(data$age)data$ed <-as.factor(data$ed)data$employ <-as.numeric(data$employ)data$address <-as.numeric(data$address)data$income <-as.numeric(data$income)data$debtinc<-as.numeric(data$debtinc)data$creddebt<-as.numeric(data$creddebt)data$children<-as.numeric(data$children)data$default<-as.factor(data$default)

Для отображения структуры данных выбираем команду:> str(data)

Протокол расчетов 2

Структура данных

Проверим, как теперь выглядят наши переменные.

Протокол расчетов 2 показывает, что переменные ed и default являются теперь категориальными (факторами), а остальные пере­менные являются количественными.

Теперь необходимо указать пакет, который будет использоваться для построения дерева решений.

'data.frame': 700 obs. of 9 variables: $ age : num 41 27 40 41 24 41 39 43 24 36 ... $ ed : Factor w/ 5 levels «1»,»2»,»3»,»4»,..: 3 1 1 1 2 2 1 1 1 1 ... $ employ : num 17 10 15 15 2 5 20 12 3 0 ... $ address : num 7 6 3 2 8 30 6 23 19 8 ... $ income : num 176 31 55 120 28 25 67 38 19 25 ... $ debtinc : num 9.3 17.3 5.5 2.9 17.3 10.2 30.6 3.6 24.4 19.7 ... $ creddebt: num 11.359 1.362 0.856 2.659 1.787 ... $ children: num 0 1 2 1 2 2 2 2 0 1 ... $ default : Factor w/ 2 levels “0”,”1”: 2 1 1 1 2 1 1 1 2 1 ...

29

www.reglament.net

классификация заемщиков \ кросс-валидация \ прунинг

Разработка скоринговой модели с помощью метода деревьев решений

Page 9: Разработка скоринговой модели с помощью деревьев решений в R

Построение модели дерева решенийЧтобы построить модель дерева решений, необходимо задать команду:rpart(formula, data=, method=,control=), где:

Загрузим пакет rpart, воспользовавшись следующей командой:> library(rpart)

Построим модель дерева классификации по всем исходным предикторам, изменив при этом пороговое значение для подгонки модели:> model<-rpart(default~., method='class', data, cp=0.001)

Выведем информацию о прогностической точности модели:> printcp(model)

formula= Задает формулу в формате:Зависимая переменная ~ Предиктор1 + Предиктор2 + Предиктор3 + др.

data= Задает набор данных для анализаmethod= 'class' — для деревьев классификации;

'anova' — для деревьев регрессииcontrol= Задает критерии роста дерева:

minsplit — минимальное число наблюдений в узле перед расщеплением, по умолчанию равно 20;cp (complexity parameter) — пороговое значение для подгонки модели, по умолчанию равно 0,01; minbucket — минимальное количество наблюдений в терминальном узле, по умолчанию равно minsplit/3;xval — количество разбиений исходной выборки на обучающую и контрольную для кросс­валидации, по умолчанию равно 10.Например, control=rpart.control(minsplit=30, cp=0.001) обозначает, что минимальное число наблюдений в узле перед расщеплением должно быть не менее 30 и происходящее расщепление должно уменьшать ошибку подгонки модели не менее чем на 0,001. Если оба условия не выполняются, то дерево останавливается в росте

Поскольку наша зависимая переменная default является катего­риальной, необходимо построить дерево классификации.

Протокол расчетов 3

Оценка прогностической точности моделиClassification tree:rpart(formula = default ~ ., data = data, method = «class», cp = 0.001)

Variables actually used in tree construction:[1] address age creddebt debtinc employ

30

Риск-менеджмент в кредитной организации № 2 (10) \ 2013

Управление и контроль

Page 10: Разработка скоринговой модели с помощью деревьев решений в R

В протоколе расчетов 3 приводится оценка сложности и прогно­стической точности модели.

В целом таблица позволяет увидеть, как с ростом дерева увели­чивается его сложность и уменьшается ошибка прогноза.

Root node error показывает базовую ошибку прогноза. Это доля миноритарной категории целевой переменной в исходной выборке.

Параметр CP (complexity parameter) показывает изменение слож­ности модели с ростом дерева.

Параметр nsplit показывает количество расщеплений на каждом этапе построения дерева. В последней строке в столбце nsplit при­водится итоговое количество расщеплений.

Количество узлов всегда на единицу больше количества расщеп­лений. В нашем случае дерево имеет 24 узла.

Параметр rel error показывает относительную ошибку прогноза (долю наблюдений, неправильно классифицированных моделью). Умножение показателя на базовую ошибку прогноза позволяет полу­чить абсолютную ошибку прогноза: 0,51 × 0,26 = 0,13, или 13%. Это обозначает, что модель неправильно классифицировала 13% наблю­дений. Несмотря на возрастание сложности дерева, данный показа­тель может уменьшаться, поэтому его называют «оптимистичным» и обычно не используют для оценки размера дерева.

Параметр xerror показывает кросс­валидационную ошибку про­гноза. Умножение показателя на базовую ошибку прогноза позволяет получить абсолютную кросс­валидационную ошибку прогноза: 0,94 × × 0,26 = 0,24, или 24%. Это обозначает, что, используя модель на новых данных, мы получим 24% неверно классифицированных наблю­дений.

Параметр xstd показывает стандартное отклонение для кросс­валидационной ошибки.

Root node error: 183/700 = 0.26143

N = 700

cp nsplit rel error xerror xstd1 0.0874317 0 1.00000 1.00000 0.0635292 0.0601093 1 0.91257 0.99454 0.0634163 0.0327869 3 0.79235 0.95082 0.0624844 0.0145719 4 0.75956 0.90164 0.0613655 0.0142077 7 0.71585 0.89617 0.0612366 0.0136612 14 0.60656 0.90710 0.0614937 0.0109290 16 0.57923 0.91257 0.0616208 0.0054645 21 0.52459 0.93443 0.0621199 0.0010000 23 0.51366 0.93989 0.062242

31

www.reglament.net

классификация заемщиков \ кросс-валидация \ прунинг

Разработка скоринговой модели с помощью метода деревьев решений

Page 11: Разработка скоринговой модели с помощью деревьев решений в R

В протоколе расчетов 4.1 приводится уже знакомая таблица с оцен­кой точности модели.

Теперь выведем развернутые результаты построения модели:> summary(model)

Call:rpart(formula = default ~ ., data = data, method = «class», cp = 0.001) n = 700

cp nsplit rel error xerror xstd1 0.087431694 0 1.0000000 1.0000000 0.063528812 0.060109290 1 0.9125683 0.9945355 0.063416243 0.032786885 3 0.7923497 0.9508197 0.062483794 0.014571949 4 0.7595628 0.9016393 0.061364725 0.014207650 7 0.7158470 0.8961749 0.061235636 0.013661202 14 0.6065574 0.9071038 0.061492847 0.010928962 16 0.5792350 0.9125683 0.061620018 0.005464481 21 0.5245902 0.9344262 0.062119199 0.001000000 23 0.5136612 0.9398907 0.06224165

Протокол расчетов 4.1

Вывод развернутых результатов: оценка прогностической точности модели

Протокол расчетов 4.2

Вывод развернутых результатов: важность переменных

Протокол расчетов 4.3

Вывод развернутых результатов: характеристики узлов (фрагмент)

Variable importance

debtinc creddebt employ income age address ed

30 21 20 12 9 6 2

Протокол расчетов 4.2 показывает важность переменной в модели. Наиболее важным предиктором оказался процент кредитных обя­зательств заемщика от дохода (debtinc), а наименее важным — обра­зование (ed).

Node number 2: 542 observations, complexity param=0.01420765 predicted class=0 expected loss=0.1771218 P(node) =0.7742857 class counts: 446 96

32

Риск-менеджмент в кредитной организации № 2 (10) \ 2013

Управление и контроль

Page 12: Разработка скоринговой модели с помощью деревьев решений в R

Протокол расчетов 4.3 показывает характеристики каждого узла дерева.

Predicted class показывает спрогнозированную категорию зави­симой переменной для узла. Например, рассмотрим узел 2. Он содер­жит 542 наблюдения. Для данного узла спрогнозирована категория «отсутствие просрочек».

Expected loss показывает долю неверно классифицированных наблюдений от общего числа наблюдений в узле. Например, для узла 2 доля неверно классифицированных наблюдений составляет 96 / 542 = 0,177, или 17,7%.

P(node) показывает долю наблюдений в узле от исходной выборки. Например, доля наблюдений в узле 2 от исходной выборки состав­ляет 542 / 700 = 0,774, или 77,4%.

Class counts показывает распределение наблюдений по категориям. В узле 2 446 наблюдений — это заемщики, которые не имели про­срочек, и только 96 наблюдений — это заемщики с просрочками. Поскольку большая часть наблюдений в узле 2 — это «хорошие» заемщики, для данного узла была спрогнозирована категория «отсут­ствие просрочек».

Probabilities показывает распределение вероятностей по катего­риям. Для каждого клиента, относящегося к узлу 2, предсказываются вероятность отсутствия просрочек 0,823 и вероятность наличия про­срочек 0,177.

Left son и right son показывают, как узел расщепляется на узлы­потомки. Например, узел 2, в свою очередь, разбивается на два узла­потомка: узел 4 и узел 5.

Primary splits показывают переменные, иcпользуемые для рас­щепления узла.

Surrogate splits показывают переменные­заменители (суррогаты), задаваемые которыми разбиения наиболее близки к разбиению, зада­

probabilities: 0.823 0.177 left son=4 (359 obs) right son=5 (183 obs) Primary splits: employ < 4.5 to the right, improve=16.462380, (0 missing) age < 29.5 to the right, improve= 8.373317, (0 missing) debtinc < 7.95 to the left, improve= 5.543382, (0 missing) income < 31.5 to the right, improve= 4.911353, (0 missing) ed splits as LRRRR, improve= 2.334674, (0 missing) Surrogate splits: income < 26.5 to the right, agree=0.771, adj=0.322, (0 split) age < 28.5 to the right, agree=0.740, adj=0.230, (0 split) ed splits as LLLRL, agree=0.673, adj=0.033, (0 split) creddebt < 0.3251625 to the right, agree=0.668, adj=0.016, (0 split)

33

www.reglament.net

классификация заемщиков \ кросс-валидация \ прунинг

Разработка скоринговой модели с помощью метода деревьев решений

Page 13: Разработка скоринговой модели с помощью деревьев решений в R

ваемому исходным предиктором. Суррогаты применяются, если пере­менная, используемая для разбиения, имеет пропущенные значения.

На практике удобнее выводить краткие результаты построения модели:> print(model)

В протоколе расчетов 5 для каждого узла выводятся: — номер узла;— переменная, использованная для расщепления узла;— количество наблюдений в узле;— доля неверно классифицированных в узле;— спрогнозированная категория зависимой переменной для узла;— вероятности категорий в узле. Знаком * отмечены терминальные узлы.В первом расщеплении дан прогноз 0 — отсутствие просрочек

(вероятность 0,739). 183 заемщика, у которых были просрочки, неверно классифицированы. Таким образом, параметр loss (доля неверно классифицированных) равен 183.

Чтобы вывести диаграмму дерева, необходимо задать команду: plot(x, uniform, branch), где:

N = 700

node), split, n, loss, yval, (yprob) * denotes terminal node

1) root 700 183 0 (0.73857143 0.26142857) 2) debtinc< 14.75 542 96 0 (0.82287823 0.17712177) 4) employ>=4.5 359 32 0 (0.91086351 0.08913649) 8) debtinc< 8.55 240 13 0 (0.94583333 0.05416667) * 9) debtinc>=8.55 119 19 0 (0.84033613 0.15966387) 18) employ>=10.5 57 3 0 (0.94736842 0.05263158) * 19) employ< 10.5 62 16 0 (0.74193548 0.25806452) 38) creddebt< 2.490352 54 9 0 (0.83333333 0.16666667) * 39) creddebt>=2.490352 8 1 1 (0.12500000 0.87500000) *

Протокол расчетов 5

Вывод кратких результатов (фрагмент)

x= Задает объектuniform= Задает вертикальное расстояние между узлами:

TRUE — узлы дерева размещаются по вертикали на одинаковом расстоянии друг от друга;

34

Риск-менеджмент в кредитной организации № 2 (10) \ 2013

Управление и контроль

Page 14: Разработка скоринговой модели с помощью деревьев решений в R

Диаграмма дерева (рис. 3) наглядно показывает структуру дерева. Однако для ее правильной интерпретации все же лучше использо­вать результаты протокола расчетов 5. Главным предиктором дефолта стал процент кредитных обязательств от дохода (debtinc). Он делит корневой узел (исходное множество заемщиков) на два узла: заем­щики с процентом кредитных обязательств меньше 14,75 (узел 2)

Для наглядности выведем диаграмму дерева с параметрами по умолчанию:> plot(model)

Теперь нанесем на нее правила разбиения, полученные моделью:> text(model)

FALSE — узлы дерева размещаются по вертикали на разном расстоянии друг от друга пропорционально ошибке подгонки модели (по умолчанию)

branch= Задает форму ветвей, идущих от родительского узла к узлам­потомкам:0 — задает П­образную форму ветвей (по умолчанию);1 — задает V­образную форму ветвей

Рисунок 3

Диаграмма дерева

debtinc < 14,75

debtinc < 24,65

debtinc < 8,55debtinc < 2,35

00

0

00

0

0

0

0

1

1 1

1

1

employ > 4,5

employ >= 9,5

age ≥ 32,5

age < 37,5

address ≥ 27

address ≥ 5,5

address < 18employ ≥ 4,5

address≥ 5,5

creddebt < 2,49

creddebt < 0,228

creddebt < 0,7609

debtinc < 10,35

creddebt < 4,804

creddebt < 1,579 creddebt ≥ 1,847

employ > 10,5

employ ≥ 2,5

employ ≤ 1,5

0

00

01

11

1

1

1

35

www.reglament.net

классификация заемщиков \ кросс-валидация \ прунинг

Разработка скоринговой модели с помощью метода деревьев решений

Page 15: Разработка скоринговой модели с помощью деревьев решений в R

и заемщики с процентом кредитных обязательств больше или рав­ным 14,75 (узел 3). При этом левому узлу­потомку (узлу 2) присвоена категория «отсутствие просрочек», а правому узлу­потомку (узлу 3) присвоена категория «наличие просрочек». Отметим, что каждый раз при расщеплении левый узел­потомок будет получать категорию «отсутствие просрочек», а правый узел­потомок — категорию «нали­чие просрочек».

Узел 3 (заемщики с процентом кредитных обязательств больше или равным 14,75) снова расщепляется по проценту долговых обя­зательств на узел 6 (заемщики с процентом кредитных обязательств меньше 24,65) и узел 7 (заемщики с процентом кредитных обяза­тельств больше или равным 24,65). Узел 6 получает категорию «отсут­ствие просрочек», а находящийся справа узел 7 получает категорию «наличие просрочек». Кроме того, узел 7 является конечным узлом и уже не расщепляется.

Узел 6 (заемщики с процентом кредитных обязательств меньше 24,65) разбивается по общему стажу (employ) на узел 12 (заемщики со стажем больше или равным 9,5 лет) и узел 13 (заемщики со стажем меньше 9,5 лет). И снова узел 12 получает категорию «отсутствие просрочек», а находящийся справа узел 13 получает категорию «нали­чие просрочек».

Узел 12 (заемщики со стажем больше или равным 9,5 лет) разби­вается по долгу по кредитной карте (carddebt) на узел 24 (заемщики с долгом по кредитной карте меньше 4,804) и узел 25 (заемщики с долгом по кредитной карте больше или равным 4,804). Аналогично узел 24 получает категорию «отсутствие просрочек», а находящийся справа узел 25 получает категорию «наличие просрочек». При этом оба узла­потомка являются конечными и уже не расщепляются.

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

Вернемся к протоколу расчетов 3. Поиск размера дерева, при кото­ром кросс­валидационная ошибка будет минимальна, приводит нас к nsplit = 7 при xerror = 0,896 и cp = 0,014. Абсолютная кросс­валидационная ошибка будет равна 0,90 × 0,26 = 0,23, или 23%.

В нашем случае главным

предиктором дефолта

стал процент кредитных

обязательств от дохода

(debtinc).

Чтобы убедиться в правильности выбранного решения, построим график зависимости кросс­валидационных ошибок от числа расщеплений и сложности модели:> plotcp(model)

36

Риск-менеджмент в кредитной организации № 2 (10) \ 2013

Управление и контроль

Page 16: Разработка скоринговой модели с помощью деревьев решений в R

На рис. 4 видны несколько минимальных кросс­валидационных ошибок, мало различающихся между собой (size of tree = 5, 8 и 15). Наименьшее значение кросс­валидационной ошибки наблюдается при cp = 0,014. Наибольшее увеличение кросс­валидационной ошибки происходит при cp в интервале от 0,012 до 0,0077. Поэтому оптималь­ное значение cp должно лежать в интервале от 0,0077 до 0,014. Выбе­рем cp = 0,01 (0,0077 < 0,01 < 0,014).

Теперь осуществим прунинг, установив новое пороговое значение подгонки модели:> model2 <- prune(model, cp=0.01)

Для наглядности выведем диаграмму обрезанного дерева с параметрами по умолчанию:> plot(model2)> text(model2)

Посмотрим на результаты прогноза модели после прунинга:> predict(model2, data)

Рисунок 4

График зависимости кросс-валидационных ошибок от числа расщеплений и сложности модели

По каждому наблюдению (заемщику) вычисляются вероятности отсутствия и наличия просрочек.

1,1

1,0

0,9

0,8

inf 0,072 0,044 0,022 0,014 cp 0,014 0,012 0,0077 0,0023

1 2 4 5 8 15 17 22 24

X-v

al r

elat

ive

erro

r

Size of tree

37

www.reglament.net

классификация заемщиков \ кросс-валидация \ прунинг

Разработка скоринговой модели с помощью метода деревьев решений

Page 17: Разработка скоринговой модели с помощью деревьев решений в R

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

0 11 0.95 0.052 0.91 0.09. . . . . . 699 0.95 0.05700 0.95 0.05

Протокол расчетов 6

Спрогнозированные вероятности по наблюдениям (фрагмент)

Протокол расчетов 7

Округленные спрогнозированные вероятности по наблюдениям (фрагмент)

0 1

1 0.9473684 0.05263158

2 0.9117647 0.08823529

. . . . . . . . . . .

699 0.9458333 0.05416667

700 0.9473684 0.05263158

Результату операции присвоим имя result, чтобы можно было работать с вычисленными вероятностями:> result <- predict(model2,data)

Для удобства интерпретации можно округлить данные:> round(result, digits=2) # округляем до 2-го знака после запятой

38

Риск-менеджмент в кредитной организации № 2 (10) \ 2013

Управление и контроль