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

Однако я не понимаю, чем полезны матрицы C и S, которые передаются в функцию потерь.

1. Под ссылкой написано: «C — логическая матрица размером n на K, строки которой указывают, к какому классу относится соответствующее наблюдение». Значит, это не предсказано и, следовательно, повторение входных данных?

2. Матрица S. «S представляет собой числовую матрицу классификационных баллов размером n на K». Почему я не могу просто использовать предсказанные классификации вместо оценок?

Чтобы быть более конкретным: я создаю дерево решений классификации. Затем я использую crossval для получения partitionedModel. Затем я рассчитываю точность проверки с помощью kfoldLoss. Теперь, вместо использования встроенной функции classiferror, я хотел бы использовать свою собственную функцию потери классификации, например. коэффициент корреляции Мэтьюса.

% create set of cross-validated classification model(s) from a classification model
partitionedModel = crossval(trainedClassifier.ClassificationTree, 'KFold', 10);
% Loss, by default the fraction of misclassified data, is a scalar and averaged over all folds
validationAccuracy = 1 - kfoldLoss(partitionedModel, 'LossFun', 'classiferror');

Любая помощь приветствуется.

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

В случае, если кто-то еще ищет решение. Я использовал функцию crossval для завершения обучения дерева решений. Таким образом, реализация других функций потерь проста.

function [trainedClassifier, qualityMeasures] = trainDTwCrossVal(data, predictorNames, MaxNumSplits)
% cross validation
numberOfFolds=5;
cp = cvpartition(data.typeBehavior,'k',numberOfFolds);  % creates a random partition for a stratified k-fold cross-validation
vals=crossval(@trainDT2, data, 'partition', cp);        % Loss estimate using cross validation
function testval = trainDT2(trainingData, testingData)      % nested function to train one DT with trainingData and test with testingData

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

% C=[TP FP
        %    FN TN]
        TP=C(1,1); FP=C(1,2); FN=C(2,1); TN=C(2,2);
        % Matthews correlation coefficient, worst value = -1, best value = 1
        if ( (TP+FP)*(TP+FN)*(TN+FP)*(TN+FN) ) == 0
            MCC = 0;    % set MCC to zero, if the denominator is zero
        else

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ