В настоящее время я пытаюсь запустить перекрестную проверку 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
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ