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')

    Случайным образом сгенерируйте 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')

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

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

    Только 8 из этих 300 наблюдений в unlabeledX mislabeled.

    Используйте и помеченные и непомеченные данные, чтобы обучить 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)

    Только 8 из этих 150 наблюдений в newX mislabeled.

    Введенный в R2020b