margin

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

    Описание

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

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

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

    пример

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

    пример

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

    Примеры

    свернуть все

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

    Загрузите fisheriris набор данных. Создайте X как числовая матрица, которая содержит два чашелистика и два лепестковых измерения для ирисовых диафрагм virginica и versicolor. Создайте 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 object. The axes object 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 object. The axes object 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 если модель не содержит периоды взаимодействия.

    Типы данных: логический

    Больше о

    свернуть все

    Поле классификации

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

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

    Введенный в R2021a