modelDiscrimination

Вычислите данные ROC и AUROC

Описание

пример

DiscMeasure = modelDiscrimination(lgdModel,data) вычисляет область под кривой рабочей характеристики приемника (AUROC). modelDiscrimination сегментация поддержек и сравнение с образцом модели и также альтернативными методами, чтобы дискретизировать ответ LGD в бинарную переменную.

пример

[DiscMeasure,DiscData] = modelDiscrimination(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе.

Примеры

свернуть все

В этом примере показано, как использовать fitLGDModel соответствовать данным Regression модель и затем использует modelDiscrimination вычислить AUROC и ROC.

Загрузка данных

Загрузите потерю, данную данные по умолчанию.

load LGDData.mat
head(data)
ans=8×4 table
      LTV        Age         Type           LGD   
    _______    _______    ___________    _________

    0.89101    0.39716    residential     0.032659
    0.70176     2.0939    residential      0.43564
    0.72078     2.7948    residential    0.0064766
    0.37013      1.237    residential     0.007947
    0.36492     2.5818    residential            0
      0.796     1.5957    residential      0.14572
    0.60203     1.1599    residential     0.025688
    0.92005    0.50253    investment      0.063182

Данные о разделе

Разделите данные на обучение и протестируйте разделы.

rng('default'); % for reproducibility
NumObs = height(data);

c = cvpartition(NumObs,'HoldOut',0.4);
TrainingInd = training(c);
TestInd = test(c);

Создайте Regression Модель LGD

Используйте fitLGDModel создать Regression модель с помощью обучающих данных. Можно также использовать fitLGDModel создать Tobit модель путем изменения lgdModel входной параметр к 'Tobit'.

lgdModel = fitLGDModel(data(TrainingInd,:),'Regression');
disp(lgdModel)    
  Regression with properties:

    ResponseTransform: "logit"
    BoundaryTolerance: 1.0000e-05
              ModelID: "Regression"
          Description: ""
      UnderlyingModel: [1x1 classreg.regr.CompactLinearModel]
        PredictorVars: ["LTV"    "Age"    "Type"]
          ResponseVar: "LGD"

Отобразите базовую модель.

disp(lgdModel.UnderlyingModel)
Compact linear regression model:
    LGD_logit ~ 1 + LTV + Age + Type

Estimated Coefficients:
                       Estimate       SE        tStat       pValue  
                       ________    ________    _______    __________

    (Intercept)        -4.7549      0.36041    -13.193    3.0997e-38
    LTV                 2.8565      0.41777     6.8377    1.0531e-11
    Age                -1.5397     0.085716    -17.963    3.3172e-67
    Type_investment     1.4358       0.2475     5.8012     7.587e-09


Number of observations: 2093, Error degrees of freedom: 2089
Root Mean Squared Error: 4.24
R-squared: 0.206,  Adjusted R-Squared: 0.205
F-statistic vs. constant model: 181, p-value = 2.42e-104

Вычислите данные ROC и AUROC

Используйте modelDiscrimination вычислить AUROC и ROC для набора тестовых данных.

DiscMeasure = modelDiscrimination(lgdModel,data(TestInd,:))
DiscMeasure=table
                   AUROC 
                  _______

    Regression    0.67897

Можно визуализировать данные ROC с помощью modelDiscriminationPlot.

modelDiscriminationPlot(lgdModel,data(TestInd,:))

Figure contains an axes object. The axes object with title ROC Regression, AUROC = 0.67897 contains an object of type line. This object represents Regression.

В этом примере показано, как использовать fitLGDModel соответствовать данным Tobit модель и затем использует modelDiscrimination вычислить AUROC и ROC.

Загрузка данных

Загрузите потерю, данную данные по умолчанию.

load LGDData.mat
head(data)
ans=8×4 table
      LTV        Age         Type           LGD   
    _______    _______    ___________    _________

    0.89101    0.39716    residential     0.032659
    0.70176     2.0939    residential      0.43564
    0.72078     2.7948    residential    0.0064766
    0.37013      1.237    residential     0.007947
    0.36492     2.5818    residential            0
      0.796     1.5957    residential      0.14572
    0.60203     1.1599    residential     0.025688
    0.92005    0.50253    investment      0.063182

Данные о разделе

Разделите данные на обучение и протестируйте разделы.

rng('default'); % for reproducibility
NumObs = height(data);

c = cvpartition(NumObs,'HoldOut',0.4);
TrainingInd = training(c);
TestInd = test(c);

Создайте Tobit Модель LGD

Используйте fitLGDModel создать Tobit модель с помощью обучающих данных.

lgdModel = fitLGDModel(data(TrainingInd,:),'tobit');
disp(lgdModel)    
  Tobit with properties:

      CensoringSide: "both"
          LeftLimit: 0
         RightLimit: 1
            ModelID: "Tobit"
        Description: ""
    UnderlyingModel: [1x1 risk.internal.credit.TobitModel]
      PredictorVars: ["LTV"    "Age"    "Type"]
        ResponseVar: "LGD"

Отобразите базовую модель.

disp(lgdModel.UnderlyingModel)
Tobit regression model:
     LGD = max(0,min(Y*,1))
     Y* ~ 1 + LTV + Age + Type

Estimated coefficients:
                       Estimate        SE         tStat       pValue  
                       _________    _________    _______    __________

    (Intercept)         0.058257     0.027265     2.1367      0.032737
    LTV                  0.20126     0.031354     6.4189    1.6932e-10
    Age                -0.095407    0.0072653    -13.132             0
    Type_investment      0.10208     0.018058     5.6531    1.7915e-08
    (Sigma)              0.29288    0.0057036      51.35             0

Number of observations: 2093
Number of left-censored observations: 547
Number of uncensored observations: 1521
Number of right-censored observations: 25
Log-likelihood: -698.383

Вычислите данные ROC и AUROC

Используйте modelDiscrimination вычислить AUROC и ROC для набора тестовых данных.

DiscMeasure = modelDiscrimination(lgdModel,data(TestInd,:),'SegmentBy',"Type",'DiscretizeBy',"median")
DiscMeasure=2×1 table
                                AUROC 
                               _______

    Tobit, Type=residential    0.70101
    Tobit, Type=investment     0.73252

Можно визуализировать ROC с помощью modelDiscriminationPlot.

modelDiscriminationPlot(lgdModel,data(TestInd,:),'SegmentBy',"Type",'DiscretizeBy',"median")

Figure contains an axes object. The axes object with title ROC Segmented by Type contains 2 objects of type line. These objects represent Tobit, residential, AUROC = 0.70101, Tobit, investment, AUROC = 0.73252.

Входные параметры

свернуть все

Потеря, данная модель по умолчанию в виде ранее созданного Regression или Tobit объектное использование fitLGDModel.

Типы данных: object

Данные в виде NumRows- NumCols таблица с предиктором и значениями отклика. Имена переменных и типы данных должны быть сопоставимы с базовой моделью.

Типы данных: table

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: [DiscMeasure,DiscData] = modelDiscrimination(lgdModel,data(TestInd,:),'DataID','Testing','DiscretizeBy','median')

Идентификатор набора данных в виде разделенной запятой пары, состоящей из 'DataID' и вектор символов или строка. DataID включен в выход для создания отчетов о целях.

Типы данных: char | string

Метод дискретизации для data LGDВ виде разделенной запятой пары, состоящей из 'DiscretizeBy' и вектор символов или строка.

  • 'mean' — Дискретизированным ответом является 1 если наблюдается LGD больше или равен среднему LGD, 0 в противном случае.

  • 'median' — Дискретизированным ответом является 1 если наблюдается LGD больше или равен среднему LGD, 0 в противном случае.

  • 'positive' — Дискретизированным ответом является 1 если наблюдается LGD положителен, 0 в противном случае (полное восстановление).

  • 'total' — Дискретизированным ответом является 1 если наблюдается LGD больше или равен 1 (общая сумма убытков), 0 в противном случае.

Типы данных: char | string

Имя столбца в data введите, не обязательно переменная модели, чтобы использоваться, чтобы сегментировать набор данных в виде разделенной запятой пары, состоящей из 'SegmentBy' и вектор символов или строка. Об одном AUROC сообщают для каждого сегмента, и соответствующие данные ROC для каждого сегмента возвращены в дополнительном выходе.

Типы данных: char | string

Значения LGD предсказаны для data образцом модели в виде разделенной запятой пары, состоящей из 'ReferenceLGD' и NumRows- 1 числовой вектор. modelDiscrimination о выходной информации сообщают для обоих lgdModel возразите и образец модели.

Типы данных: double

Идентификатор для образца модели в виде разделенной запятой пары, состоящей из 'ReferenceID' и вектор символов или строка. 'ReferenceID' используется в modelDiscrimination выведите для создания отчетов о целях.

Типы данных: char | string

Выходные аргументы

свернуть все

Информация о AUROC для каждой модели и каждого сегмента, возвращенного как таблица. DiscMeasure имеет отдельный столбец под названием 'AUROC' и количество строк зависит от количества сегментов и используете ли вы ReferenceID для образца модели. Имена строки DiscMeasure сообщите о модели IDs, сегменте и ID данных.

Данные ROC для каждой модели и каждого сегмента, возвращенного как таблица. Существует три столбца для данных ROC с именами столбцов 'X'Y, и 'T', где первые два являются координатами X и Y кривой ROC, и T содержит соответствующие пороги. Для получения дополнительной информации смотрите Дискриминацию Модели или perfcurve.

Если вы используете SegmentBy, функция складывает данные ROC для всех сегментов и DiscData имеет столбец со значениями сегментации, чтобы указать где каждый сегмент начала и концы.

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

Больше о

свернуть все

Дискриминация модели

Model discrimination измеряет рейтинг риска.

modelDiscrimination функция вычисляет область под характеристикой оператора приемника (AUROC) кривая, иногда называемая просто область под кривой (AUC). Эта метрика между 0 и 1, и более высокие значения указывают на лучшую дискриминацию.

Чтобы вычислить AUROC, вам нужны числовое предсказание и бинарный ответ. Для моделей потери, данной значение по умолчанию (LGD) предсказанный LGD используется непосредственно в качестве предсказания. Однако наблюдаемый LGD должен быть дискретизирован в бинарную переменную. По умолчанию наблюдаемые значения LGD, больше, чем или равный среднему значению, заметили, что LGD присвоены значение 1, и значения ниже среднего значения присвоены значение 0. Этот дискретизированный ответ интерпретирован как “высокий LGD” по сравнению с “низким LGD”. Поэтому modelDiscrimination функционируйте меры, как хорошо предсказанный LGD разделяет “высокий LGD” по сравнению с “низким LGD” наблюдения. Можно изменить критерий дискретизации с DiscretizeBy аргумент пары "имя-значение".

Чтобы построить кривую характеристики оператора приемника (ROC), используйте modelDiscriminationPlot функция. Однако, если данные о кривой ROC необходимы, используйте дополнительный DiscData выходной аргумент от modelDiscrimination функция.

Кривая ROC является параметрической кривой, которая строит пропорцию

  • Высокие случаи LGD с предсказанным, LGD больше, чем или равный параметру t или истинный положительный уровень (TPR)

  • Низкие случаи LGD с предсказанным, LGD больше, чем или равный тому же параметру t или ложный положительный уровень (FPR)

Параметр развертки t через весь наблюдаемый предсказал значения LGD для определенных данных. DiscData дополнительный выход содержит TPR в 'X' столбец, FPR в 'Y' столбец и соответствующие параметры t в 'T' столбец. Для получения дополнительной информации о кривых ROC, см. Кривые производительности.

Ссылки

[1] Baesens, Барт, Дэниел Роеш и Харальд Шойле. Аналитика кредитного риска: техники измерений, приложения и примеры в SAS. Вайли, 2016.

[2] Беллини, Тициано. МСФО 9 и моделирование кредитного риска CECL и валидация: практическое руководство с примерами работало в R и SAS. Сан-Диего, CA: Elsevier, 2019.

Введенный в R2021a