exponenta event banner

Сравнение потерь с моделями по умолчанию с использованием перекрестной проверки

В этом примере показано, как сравнивать модели потерь, заданные по умолчанию (LGD), с использованием перекрестной проверки.

Загрузить данные

Загрузите данные LGD. Этот набор данных моделируется в целях иллюстрации.

load LGDData.mat
disp(head(data))
      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

Гистограмма значений LGD для этого набора данных показывает значительное количество значений при или вблизи 0 (полное восстановление) и только относительно небольшая доля значений при или вблизи 1 (общий убыток).

histogram(data.LGD)
xlabel('LGD')
ylabel('Frequency')
title('LGD Histogram')

Figure contains an axes. The axes with title LGD Histogram contains an object of type histogram.

Перекрестная проверка моделей

Сравнить три Tobit Модели LGD путем изменения выбора стороны цензуры между тремя поддерживаемыми опциями ("both", "left", и "right"). Дополнительные сведения см. в разделе 'CensoringSide' аргумент «имя-значение» для Tobit объект.

Используйте cvpartition функция для генерации случайных секций на данных для k-кратной перекрестной проверки. Для каждого раздела установите Tobit модель на обучающих данных с каждым из параметров стороны цензуры, а затем получить две метрики проверки с использованием тестовых данных. В этом примере используются метрики проверки для площади под кривой рабочей характеристики приемника (AUROC) и R-квадратичной метрики. Дополнительные сведения см. в разделе modelDiscrimination и modelAccuracy.

NumFolds = 10;
rng('default'); % For reproducibility
c = cvpartition(height(data),'KFold',NumFolds);

ModelCensoringSide = ["both" "left" "right"];

NumModels = length(ModelCensoringSide);

AUROC = zeros(NumFolds,NumModels);
RSquared = zeros(NumFolds,NumModels);

for ii=1:NumFolds
   
   fprintf('Fitting models, fold %d\n',ii);
      
   % Get the partition indices.
   TrainInd = training(c,ii);
   TestInd = test(c,ii);
   
   % For each model, fit with training data, measure with test data.
   for jj=1:NumModels
      % Fit the model with training data.
      lgdModel = fitLGDModel(data(TrainInd,:),'Tobit','CensoringSide',ModelCensoringSide(jj));
      
      % Measure the model discrimination on test data.
      DiscMeasure = modelDiscrimination(lgdModel,data(TestInd,:));
      AUROC(ii,jj) = DiscMeasure.AUROC;
      
      % Measure the model accuracy on test data.
      AccMeasure = modelAccuracy(lgdModel,data(TestInd,:));
      RSquared(ii,jj) = AccMeasure.RSquared;
   end
end
Fitting models, fold 1
Fitting models, fold 2
Fitting models, fold 3
Fitting models, fold 4
Fitting models, fold 5
Fitting models, fold 6
Fitting models, fold 7
Fitting models, fold 8
Fitting models, fold 9
Fitting models, fold 10

Визуализируйте результаты для выбранной метрики для трех моделей бок о бок.

SelectedMetric = "R-squared";
if SelectedMetric=="AUROC"
   PlotData = AUROC;
else
   PlotData = RSquared;
end

bar(1:NumFolds,PlotData)
xlabel('Fold')
ylabel(SelectedMetric)
title('Validation Metric by Fold')
legend(ModelCensoringSide,'Location','southeast')
grid on

Figure contains an axes. The axes with title Validation Metric by Fold contains 3 objects of type bar. These objects represent both, left, right.

Значения AUROC для трех моделей сопоставимы по складкам, что указывает на то, что три версии модели эффективно разделяют случаи низкого LGD и высокого LGD.

Что касается точности, R-квадрат метрики является низким для трех моделей. Однако "right" цензурированная модель показывает более низкую R-квадратную метрику, чем две другие модели по складкам. Наблюдаемые данные LGD имеют много наблюдений на или вблизи 0 (общее восстановление). Чтобы повысить точность моделей, включите явный предел в 0 при цензуре на "left" и на "both" стороны.

См. также

| | | | | | |

Связанные примеры

Подробнее