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

В этом примере показано, как сравнить модели потери, данной значение по умолчанию (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-squared. Для получения дополнительной информации смотрите 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

панель (1:NumFolds, PlotData)
xlabel'Fold')
ylabel (SelectedMetric)
заголовок'Validation Metric by Fold')
легенда (ModelCensoringSide,'Location','southeast')
сетка 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-squared является низкой для этих трех моделей. Однако "right" подвергнутая цензуре модель показывает более низкую метрику R-squared, чем другие две модели через сгибы. Наблюдаемые данные LGD имеют много наблюдений в или около 0 (общее восстановление). Чтобы улучшить точность моделей, включайте явный предел в 0 при цензурировании на "left" и на "both" стороны.

Смотрите также

| | | | | | |

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

Больше о

Для просмотра документации необходимо авторизоваться на сайте