exponenta event banner

SemiSupervisedSelfTrainingModel

Полууправляемая модель самообучения для классификации

    Описание

    Для маркировки немаркированных данных можно использовать метод самоподготовки с полуоплатным контролем с помощью fitsemiself функция. Получающееся SemiSupervisedSelfTrainingModel объект содержит соответствующие метки для немеченых наблюдений (FittedLabels) и их оценки (LabelScores). Вы также можете использовать SemiSupervisedSelfTrainingModel объект в качестве классификатора, обученного как маркированным, так и немаркированным данным, для классификации новых данных с помощью predict функция.

    Создание

    Создать SemiSupervisedSelfTrainingModel объект с помощью fitsemiself.

    Свойства

    развернуть все

    Это свойство доступно только для чтения.

    Метки, соответствующие немаркированным данным, указанным как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. FittedLabels имеет тот же тип данных, что и метки класса в переменной ответа в вызове fitsemiself. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)

    Каждая строка FittedLabels представляет подогнанную метку соответствующего наблюдения UnlabeledX или UnlabeledTbl.

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

    Это свойство доступно только для чтения.

    Оценки для соответствующих меток, указанных как числовая матрица. LabelScores имеет размер u-by-K, где u - количество наблюдений в немеченых данных, а K - число классов в ClassNames.

    score(u,k) вероятность того, что наблюдение u принадлежит классу k, где более высокое значение оценки указывает на более высокую вероятность. Диапазон значений баллов зависит от базового классификатора Learner.

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

    Это свойство доступно только для чтения.

    Базовый классификатор, указанный как объект классификационной модели. fitsemiself использует этот классификатор в цикле для маркировки и оценки немаркированных данных. Для отображения значений параметров и гиперпараметров базового классификатора можно использовать точечную нотацию.

    Например, при указании 'Learner','svm' в вызове для fitsemiself, то можно ввести Mdl.Learner.KernelParameters для отображения параметров ядра модели конечной машины вектора поддержки (SVM), обученной как на помеченных, так и на немаркированных данных.

    Примечание

    Потому что Mdl.Learner модель имеет некоторые ограничения (например, отсутствие поддержки табличных данных), избегайте использования ее непосредственно с ее объектными функциями, такими как loss и predict. Для прогнозирования новых данных используйте predict объектная функция SemiSupervisedSelfTrainingModel.

    Это свойство доступно только для чтения.

    Индексы категориального предиктора, заданные как положительный целочисленный вектор. Предполагая, что данные предиктора содержат наблюдения в строках, CategoricalPredictors содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не категоричен, то это свойство пустое ([]).

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

    Это свойство доступно только для чтения.

    Уникальные метки классов, используемые для маркировки немаркированных данных, указанных как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. Порядок элементов ClassNames определяет порядок классов.

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

    Это свойство доступно только для чтения.

    Имена переменных предиктора, заданные как массив ячеек векторов символов. Порядок элементов PredictorNames соответствует порядку, в котором имена предикторов появляются в данных предиктора.

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

    Это свойство доступно только для чтения.

    Имя ответной переменной, указанное как символьный вектор.

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

    Функции объекта

    predictМаркировка новых данных с использованием полууправляемого самообученного классификатора

    Примеры

    свернуть все

    Подгонка меток к немеченым данным с помощью полуинспектируемого метода самостоятельного обучения.

    Случайным образом генерируют 60 наблюдений помеченных данных с 20 наблюдениями в каждом из трех классов.

    rng('default') % For reproducibility
    
    labeledX = [randn(20,2)*0.25 + ones(20,2);
                randn(20,2)*0.25 - ones(20,2);
                randn(20,2)*0.5];
    Y = [ones(20,1); ones(20,1)*2; ones(20,1)*3];

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

    scatter(labeledX(:,1),labeledX(:,2),[],Y,'filled')
    title('Labeled Data')

    Figure contains an axes. The axes with title Labeled Data contains an object of type scatter.

    Случайная генерация 300 дополнительных наблюдений немеченых данных с 100 наблюдениями на класс. В целях проверки следует отслеживать истинные метки для немаркированных данных.

    unlabeledX = [randn(100,2)*0.25 + ones(100,2);
                  randn(100,2)*0.25 - ones(100,2);
                  randn(100,2)*0.5];
    trueLabels = [ones(100,1); ones(100,1)*2; ones(100,1)*3];

    Подгонка меток к немеченым данным с помощью полуинспектируемого метода самоподготовки. Функция fitsemiself возвращает SemiSupervisedSelfTrainingModel объект, чей FittedLabels содержит соответствующие метки для немаркированных данных и LabelScores содержит связанные оценки меток.

    Mdl = fitsemiself(labeledX,Y,unlabeledX)
    Mdl = 
      SemiSupervisedSelfTrainingModel with properties:
    
                 FittedLabels: [300x1 double]
                  LabelScores: [300x3 double]
                   ClassNames: [1 2 3]
                 ResponseName: 'Y'
        CategoricalPredictors: []
                      Learner: [1x1 classreg.learning.classif.CompactClassificationECOC]
    
    
      Properties, Methods
    
    
    

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

    maxLabelScores = max(Mdl.LabelScores,[],2);
    rescaledScores = rescale(maxLabelScores,0.05,0.95);
    scatter(unlabeledX(:,1),unlabeledX(:,2),[],Mdl.FittedLabels,'filled', ...
        'MarkerFaceAlpha','flat','AlphaData',rescaledScores);
    title('Fitted Labels for Unlabeled Data')

    Figure contains an axes. The axes with title Fitted Labels for Unlabeled Data contains an object of type scatter.

    Определите точность маркировки, используя истинные метки для немаркированных данных.

    numWrongLabels = sum(trueLabels ~= Mdl.FittedLabels)
    numWrongLabels = 8
    

    Только 8 из 300 наблюдений в unlabeledX имеют неправильную маркировку.

    Использовать как помеченные, так и немаркированные данные для обучения SemiSupervisedSelfTrainingModel объект. Маркировка новых данных с использованием обученной модели.

    Случайным образом генерируют 15 наблюдений помеченных данных с 5 наблюдениями в каждом из трех классов.

    rng('default') % For reproducibility
    labeledX = [randn(5,2)*0.25 + ones(5,2);
                randn(5,2)*0.25 - ones(5,2);
                randn(5,2)*0.5];
    Y = [ones(5,1); ones(5,1)*2; ones(5,1)*3];

    Случайная генерация 300 дополнительных наблюдений немеченых данных с 100 наблюдениями на класс.

    unlabeledX = [randn(100,2)*0.25 + ones(100,2);
                  randn(100,2)*0.25 - ones(100,2);
                  randn(100,2)*0.5];

    Подгонка меток к немеченым данным с помощью полуинспектируемого метода самоподготовки. Функция fitsemiself возвращает SemiSupervisedSelfTrainingModel объект, чей FittedLabels содержит соответствующие метки для немаркированных данных и LabelScores содержит связанные оценки меток.

    Mdl = fitsemiself(labeledX,Y,unlabeledX)
    Mdl = 
      SemiSupervisedSelfTrainingModel with properties:
    
                 FittedLabels: [300x1 double]
                  LabelScores: [300x3 double]
                   ClassNames: [1 2 3]
                 ResponseName: 'Y'
        CategoricalPredictors: []
                      Learner: [1x1 classreg.learning.classif.CompactClassificationECOC]
    
    
      Properties, Methods
    
    
    

    Случайная генерация 150 наблюдений новых данных с 50 наблюдениями на класс. В целях проверки следует отслеживать истинные метки для новых данных.

    newX = [randn(50,2)*0.25 + ones(50,2);
            randn(50,2)*0.25 - ones(50,2);
            randn(50,2)*0.5];
    trueLabels = [ones(50,1); ones(50,1)*2; ones(50,1)*3];

    Спрогнозировать метки для новых данных с помощью predict функции SemiSupervisedSelfTrainingModel объект. Сравните истинные метки с прогнозируемыми метками с помощью матрицы путаницы.

    predictedLabels = predict(Mdl,newX);
    confusionchart(trueLabels,predictedLabels)

    Figure contains an object of type ConfusionMatrixChart.

    Только 8 из 150 наблюдений в newX имеют неправильную маркировку.

    Представлен в R2020b