margin

Классификационные поля для обобщенной аддитивной модели (GAM)

    Описание

    m = margin(Mdl,Tbl,ResponseVarName) возвращает классификационное поле (m) для обобщенной аддитивной модели Mdl использование данных предиктора в Tbl и истинные метки классов в Tbl.ResponseVarName.

    m возвращается как n-на-1 числовой вектор-столбец, где n - количество наблюдений в данных предиктора.

    m = margin(Mdl,Tbl,Y) использует данные предиктора в таблице Tbl и истинные метки классов в Y.

    пример

    m = margin(Mdl,X,Y) использует данные предиктора в матрице X и истинные метки классов в Y.

    пример

    m = margin(___,'IncludeInteractions',includeInteractions) задает, включать ли термины взаимодействия в расчеты. Можно задать includeInteractions в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах.

    Примеры

    свернуть все

    Оцените поля классификации тестовой выборки и ребро обобщенной аддитивной модели. Поля тестовой выборки являются наблюдаемыми счетами истинного класса минус счетов ложного класса, и ребро тестовой выборки является средним значением полей.

    Загрузите fisheriris набор данных. Создание X как числовая матрица, которая содержит два сепальных и два лепестковых измерения для versicolor и virginica irises. Создание Y как массив ячеек из векторов символов, который содержит соответствующие виды радужной оболочки.

    load fisheriris
    inds = strcmp(species,'versicolor') | strcmp(species,'virginica');
    X = meas(inds,:);
    Y = species(inds,:);

    Случайным образом разбейте наблюдения на набор обучающих данных и тестовый набор с расслоением, используя информацию о классе в Y. Укажите 30% -ная выборка удержания для проверки.

    rng('default') % For reproducibility
    cv = cvpartition(Y,'HoldOut',0.30);

    Извлеките индексы обучения и тестирования.

    trainInds = training(cv);
    testInds = test(cv);

    Укажите наборы обучающих и тестовых данных.

    XTrain = X(trainInds,:);
    YTrain = Y(trainInds);
    XTest = X(testInds,:);
    YTest = Y(testInds);

    Обучите GAM с помощью предикторов XTrain и метки классов YTrain. Рекомендуемая практика состоит в том, чтобы задать имена классов.

    Mdl = fitcgam(XTrain,YTrain,'ClassNames',{'versicolor','virginica'});

    Mdl является ClassificationGAM объект модели.

    Оцените поля классификации тестовой выборки и ребро.

    m = margin(Mdl,XTest,YTest);
    e = edge(Mdl,XTest,YTest)
    e = 0.8000
    

    Отобразите гистограмму полей классификации тестовых выборок.

    histogram(m,length(unique(m)),'Normalization','probability')
    xlabel('Test Sample Margins')
    ylabel('Probability')
    title('Probability Distribution of the Test Sample Margins')

    Figure contains an axes. The axes with title Probability Distribution of the Test Sample Margins contains an object of type histogram.

    Сравнение GAM с линейными терминами к GAM с линейными терминами и терминами взаимодействия путем исследования полей тестовой выборки и ребра. Основываясь исключительно на этом сравнении, классификатор с самыми высокими полями и ребром является лучшей моделью.

    Загрузите ionosphere набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b') или хорошо ('g').

    load ionosphere

    Случайным образом разбейте наблюдения на набор обучающих данных и тестовый набор с расслоением, используя информацию о классе в Y. Укажите 30% -ная выборка удержания для проверки.

    rng('default') % For reproducibility
    cv = cvpartition(Y,'Holdout',0.30);

    Извлеките индексы обучения и тестирования.

    trainInds = training(cv);
    testInds = test(cv);

    Укажите наборы обучающих и тестовых данных.

    XTrain = X(trainInds,:);
    YTrain = Y(trainInds);
    XTest = X(testInds,:);
    YTest = Y(testInds);

    Обучите GAM, который содержит как линейные, так и условия взаимодействия для предикторов. Задайте, чтобы включить все доступные условия взаимодействия, значения p которых не более 0,05.

    Mdl = fitcgam(XTrain,YTrain,'Interactions','all','MaxPValue',0.05)
    Mdl = 
      ClassificationGAM
                 ResponseName: 'Y'
        CategoricalPredictors: []
                   ClassNames: {'b'  'g'}
               ScoreTransform: 'logit'
                    Intercept: 3.0398
                 Interactions: [561x2 double]
              NumObservations: 246
    
    
      Properties, Methods
    
    

    Mdl является ClassificationGAM объект модели. Mdl включает все доступные условия взаимодействия.

    Оцените поля тестовой выборки и ребро для Mdl.

    M = margin(Mdl,XTest,YTest);
    E = edge(Mdl,XTest,YTest)
    E = 0.7848
    

    Оцените поля тестовой выборки и ребро для Mdl без включения условий взаимодействия.

    M_nointeractions = margin(Mdl,XTest,YTest,'IncludeInteractions',false);
    E_nointeractions = edge(Mdl,XTest,YTest,'IncludeInteractions',false)
    E_nointeractions = 0.7871
    

    Отображение распределений полей с помощью прямоугольных графиков.

    boxplot([M M_nointeractions],'Labels',{'Linear and Interaction Terms','Linear Terms Only'})
    title('Box Plots of Test Sample Margins')

    Figure contains an axes. The axes with title Box Plots of Test Sample Margins contains 14 objects of type line.

    Поля M и M_nointeractions имеют аналогичное распределение, но тестовое ребро выборки классификатора с только линейными терминами больше. Предпочтительными являются классификаторы, которые дают относительно большие запасы.

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

    свернуть все

    Обобщенная аддитивная модель, заданная как ClassificationGAM или CompactClassificationGAM объект модели.

    • Если вы тренировались Mdl используя выборочные данные, содержащуюся в таблице, затем входные данные для margin должно быть также в таблице (Tbl).

    • Если вы тренировались Mdl использование выборочных данных, содержащихся в матрице, затем входных данных для margin должно быть также в матрице (X).

    Выборочные данные, заданный как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.

    Tbl должны содержать все предикторы, используемые для обучения Mdl. Опционально Tbl может содержать столбец для переменной отклика и столбец для весов наблюдений.

    • Переменная отклика должна иметь совпадающий тип данных что и Mdl.Y. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.) Если переменная отклика в Tbl имеет то же имя что и переменная отклика, используемая для обучения Mdl, тогда вам не нужно указывать ResponseVarName.

    • Значения веса должны быть числовым вектором. Необходимо задать веса наблюдений в Tbl при помощи 'Weights'.

    Если вы тренировались Mdl используя выборочные данные, содержащуюся в таблице, затем входные данные для margin также должно быть в таблице.

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

    Имя переменной отклика, заданное как вектор символов или строковый скаляр, содержащий имя переменной отклика в Tbl. Для примера, если переменная отклика Y хранится в Tbl.Y, затем укажите его следующим 'Y'.

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

    Метки класса, заданные как категориальные символьные или строковые массивы, логический или числовой вектор или массив ячеек из векторов символов. Каждая строка Y представляет классификацию соответствующей строки X или Tbl.

    Y должны иметь тот совпадающий тип данных, что и Mdl.Y. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)

    Типы данных: single | double | categorical | logical | char | string | cell

    Данные предиктора, заданные как числовая матрица. Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора.

    Если вы тренировались Mdl использование выборочных данных, содержащихся в матрице, затем входных данных для margin должно быть также в матрице.

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

    Флаг для включения условий взаимодействия модели, заданный как true или false.

    Значение по умолчанию includeInteractions значение true если Mdl содержит условия взаимодействия. Значение должно быть false если модель не содержит членов взаимодействия.

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

    Подробнее о

    свернуть все

    Классификационное поле

    Для каждого наблюдения classification margin двоичной классификации является различие между классификационной оценкой для истинного класса и классификационной оценкой для ложного класса.

    Если поля находятся на одной и той же шкале (то есть значения баллов основаны на том же счете преобразовании), то они служат классификацией доверия мерой. Среди нескольких классификаторов лучше те, которые дают большую маржу.

    Введенный в R2021a