edge

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

    Описание

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

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

    пример

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

    пример

    e = edge(___,Name,Value) задает опции, использующие один или несколько аргументов имя-значение в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Для примера можно задать веса наблюдений и включать ли условия взаимодействия в расчеты.

    Примеры

    свернуть все

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

    Загрузите 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.

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

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

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

    Предположим, что качество некоторых измерений ниже, потому что они были измерены с помощью старой технологии. Чтобы симулировать этот эффект, добавьте шум к случайному подмножеству из 20 измерений.

    rng('default') % For reproducibility
    idx2 = randperm(size(X,1),20);
    X(idx2,:) = X(idx2,:) + 2*randn(20,size(X,2));

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

    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 объект модели.

    Оцените ребро тестовой выборки.

    e = edge(Mdl,XTest,YTest)
    e = 0.8000
    

    Средний запас составляет приблизительно 0,80.

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

    n = size(X,1);
    weights = ones(size(X,1),1);
    weights(idx2) = 0.5;
    weightsTrain = weights(trainInds);
    weightsTest = weights(testInds);

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

    Mdl_W = fitcgam(XTrain,YTrain,'Weights',weightsTrain,...
        'ClassNames',{'versicolor','virginica'});

    Оцените взвешенное ребро тестовой выборки с помощью схемы взвешивания.

    e_W = edge(Mdl_W,XTest,YTest,'Weights',weightsTest)
    e_W = 0.8770
    

    Средневзвешенная маржа составляет приблизительно 0,88. Этот результат указывает, что в среднем метки из взвешенных меток классификатора имеют более высокое доверие.

    Сравнение 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 используя выборочные данные, содержащуюся в таблице, затем входные данные для edge должно быть также в таблице (Tbl).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Аргументы в виде пар имя-значение

    Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

    Пример: 'IncludeInteractions',false,'Weights',w задает, чтобы исключить условия взаимодействия из модели и использовать веса наблюдений w.

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

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

    Пример: 'IncludeInteractions',false

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

    Веса наблюдений, заданные как вектор скалярных значений или имя переменной в Tbl. Программа взвешивает наблюдения в каждой строке X или Tbl с соответствующим значением в Weights. Размер Weights должно равняться количеству строк в X или Tbl.

    Если вы задаете входные данные как таблицу Tbl, затем Weights может быть именем переменной в Tbl который содержит числовой вектор. В этом случае необходимо задать Weights как вектор символов или строковый скаляр. Для примера, если вектор весов W хранится в Tbl.W, затем укажите его следующим 'W'.

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

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

    Подробнее о

    свернуть все

    Классификационное ребро

    Это classification edge - средневзвешенное значение классификационных полей.

    Один из способов выбрать один из нескольких классификаторов, например, для выбора признаков, - выбрать классификатор, который дает наибольшее ребро.

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

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

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

    Введенный в R2021a