fitsemigraph

Пометьте данные с помощью полууправляемого метода на основе графов

    Описание

    fitsemigraph создает полууправляемую модель, основанную на графе, с заданными маркированными данными, метками и немаркированными данными. Возвращенная модель содержит подгоняемые метки для немаркированных данных и соответствующих счетов. Эта модель может также предсказать метки для невидимых данных, используя predict функция объекта. Для получения дополнительной информации о различных алгоритмах маркировки, см. Алгоритмы.

    пример

    Mdl = fitsemigraph(Tbl,ResponseVarName,UnlabeledTbl) использует маркированные данные в Tbl, где Tbl.ResponseVarName содержит метки для маркированных данных и возвращает установленные метки для немеченых данных в UnlabeledTbl. Функция сохраняет подгоненные метки и соответствующие счета в FittedLabels и LabelScores свойства объекта Mdl, соответственно.

    Mdl = fitsemigraph(Tbl,formula,UnlabeledTbl) использует formula чтобы задать переменную отклика (вектор меток) и переменные предиктора для использования среди переменных в Tbl. Функция использует эти переменные, чтобы пометить данные в UnlabeledTbl.

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

    пример

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

    пример

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

    Примеры

    свернуть все

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

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

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

    Mdl = fitsemigraph(labeledX,Y,unlabeledX)
    Mdl = 
      SemiSupervisedGraphModel with properties:
    
                 FittedLabels: [300x1 double]
                  LabelScores: [300x3 double]
                   ClassNames: [1 2 3]
                 ResponseName: 'Y'
        CategoricalPredictors: []
                       Method: 'labelpropagation'
    
    
      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 = 10
    

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

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

    Загрузите patients набор данных. Составьте таблицу из переменных Distolic, Genderи так далее. Для каждого наблюдения или строки в таблице обработайте Smoker значение как метка для этого наблюдения.

    load patients
    Tbl = table(Diastolic,Gender,Height,Systolic,Weight,Smoker);

    Предположим, что только 20% наблюдений маркированы. Чтобы воссоздать этот сценарий, случайным образом выберете 20 маркированных наблюдений и сохраните их в таблице unlabeledTbl. Удалите метку из остальных наблюдений и сохраните их в таблице unlabeledTbl. Чтобы проверить точность подгонки меток в конце примера, сохраните истинные метки для немаркированных данных в переменной trueLabels.

    rng('default') % For reproducibility of the sampling
    [labeledTbl,Idx] = datasample(Tbl,20,'Replace',false);
    
    unlabeledTbl = Tbl;
    unlabeledTbl(Idx,:) = [];
    trueLabels = unlabeledTbl.Smoker;
    unlabeledTbl.Smoker = [];

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

    Mdl = fitsemigraph(labeledTbl,'Smoker',unlabeledTbl,'KNNGraphType','mutual', ...
        'Standardize',true);
    fittedLabels = Mdl.FittedLabels;

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

    wrongIdx = (trueLabels ~= fittedLabels);
    wrongTbl = unlabeledTbl(wrongIdx,:);

    Визуализируйте подгоняемые результаты метки для немаркированных данных. На графике обведены неправильно маркированные наблюдения.

    gscatter(unlabeledTbl.Diastolic,unlabeledTbl.Systolic, ...
        fittedLabels)
    hold on
    plot(wrongTbl.Diastolic,wrongTbl.Systolic, ...
        'ko','MarkerSize',8)
    xlabel('Diastolic')
    ylabel('Systolic')
    legend('Nonsmoker','Smoker','Mislabeled')
    title('Fitted Labels for Unlabeled Data')

    Figure contains an axes. The axes with title Fitted Labels for Unlabeled Data contains 3 objects of type line. These objects represent Nonsmoker, Smoker, Mislabeled.

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

    свернуть все

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

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

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

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

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

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

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

    Имя переменной отклика, заданное как имя переменной в Tbl. Переменная отклика содержит метки классов для выборочных данных в Tbl.

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

    Переменная отклика должна быть категориальными символьными или строковыми массивами, логическим или числовым вектором или массивом ячеек из векторов символов. Если Y является символьным массивом, тогда каждый элемент переменной отклика должен соответствовать одной строке массива.

    Хорошей практикой является определение порядка классов при помощи ClassNames аргумент пары "имя-значение".

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

    Объяснительная модель переменной отклика и подмножества переменных предиктора, заданная в виде вектора символов или строкового скаляра в форме 'Y~X1+X2+X3'. В этой форме Y представляет переменную отклика, и X1, X2, и X3 представляют переменные предиктора.

    Чтобы задать подмножество переменных в Tbl в качестве предикторов используйте формулу. Если вы задаете формулу, то программное обеспечение не использует никаких переменных в Tbl которые не появляются в formula.

    Имена переменных в формуле должны быть обоими именами переменных в Tbl (Tbl.Properties.VariableNames) и действительный MATLAB® идентификаторы. Можно проверить имена переменных в Tbl при помощи isvarname функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName функция.

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

    Метки класса, заданные как числовой, категориальный или логический вектор, символьные или строковые массивы или массив ячеек из векторов символов.

    • Если Y является символьный массив, тогда каждый элемент меток классов должен соответствовать одной строке массива.

    • Длина Y должно быть равно количеству строк в Tbl или X.

    • Хорошей практикой является определение порядка классов при помощи ClassNames аргумент пары "имя-значение".

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

    Маркированные данные предиктора, заданные как числовая матрица.

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

    Длина Y и количество строк в X должно быть равным.

    Чтобы задать имена предикторов в порядке их внешнего вида в X, используйте PredictorNames аргумент пары "имя-значение".

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

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

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

    Примечание

    Программное обеспечение лечит NaN, пустой символьный вектор (''), пустая строка (""), <missing>, и <undefined> элементы как отсутствующие данные. Программа удаляет строки данных предиктора (наблюдений) с отсутствующими значениями.

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

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

    Пример: fitsemigraph(Tbl,'Y',UnlabeledTbl,'Method','labelspreading','IterationLimit',2e3) задает использование метода метки с расширением маркировки и выполнение максимум 2000 итераций.
    Опции алгоритма маркировки

    свернуть все

    Метод маркировки, заданный как разделенная разделенными запятой парами, состоящая из 'Method' и одно из этих значений.

    ЗначениеОписаниеАргументы в виде пар имя-значение для конкретного метода
    'labelpropagation'Итерационно распространите метки между узлами в графике подобия. Для получения дополнительной информации см. Раздел «Распространение меток».

    'IterationLimit' - Максимальное количество итераций

    'Tolerance' - Допуск для абсолютного различия счетов в последующих итерациях

    'labelpropagationexact'Используйте точную формулу для распространения меток. Для получения дополнительной информации см. Раздел «Распространение меток».Ничего
    'labelspreading'Итерационно распределите метки по узлам в графике подобия. Для получения дополнительной информации см. Раздел «Расширение метки».

    'Alpha' - Относительный вес соседних меток к исходной метке

    'IterationLimit' - Максимальное количество итераций

    'Tolerance' - Допуск для абсолютного различия счетов в последующих итерациях

    'labelspreadingexact'Используйте точную формулу для распространения меток. Для получения дополнительной информации см. Раздел «Расширение метки».

    'Alpha' - Относительный вес соседних меток к исходной метке

    Пример: 'Method','labelspreading'

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

    Относительный вес соседних меток к начальной метке для маркированных наблюдений в X или Tbl, заданная как разделенная разделенными запятой парами, состоящая из 'Alpha' и скалярное значение в области значений (0,1). Значение, близкое к 0, указывает, что fitsemigraph обрабатывает метки первоначально маркированных наблюдений почти как основную истину. Значение, близкое к 1, указывает, что fitsemigraph обрабатывает метки первоначально маркированных наблюдений почти как шум.

    Примечание

    Этот аргумент действителен только, когда Method значение 'labelspreading' или 'labelspreadingexact'.

    Пример: 'Alpha',0.05

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

    Максимальное количество итераций, заданное как разделенная разделенными запятой парами, состоящая из 'IterationLimit' и положительный целочисленный скаляр. fitsemigraph функция возвращает Mdl, который содержит подгоняемые метки и счета, когда этот предел достигнут, даже если алгоритм не сходится.

    Примечание

    Этот аргумент действителен только, когда Method значение 'labelpropagation' или 'labelspreading'.

    Пример: 'IterationLimit',2e3

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

    Допуск для абсолютного различия счетов в последующих итерациях, заданный как разделенная разделенными запятой парами, состоящая из 'Tolerance' и неотрицательный скаляр.

    Примечание

    Этот аргумент действителен только, когда Method значение 'labelpropagation' или 'labelspreading'.

    Пример: 'Tolerance',1e-4

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

    Опции классификации

    свернуть все

    Категориальный список предикторов, заданный как одно из значений в этой таблице.

    ЗначениеОписание
    Вектор положительных целых чисел

    Каждая запись в векторе является индексом значением, соответствующим столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся между 1 и p, где p - количество предикторов, используемых для обучения модели.

    Если fitsemigraph использует подмножество входа переменных в качестве предикторов, затем функция индексирует предикторы, используя только подмножество. The 'CategoricalPredictors' значения не подсчитывают переменную отклика, переменную веса наблюдения и любые другие переменные, которые функция не использует.

    Логический вектор

    A true запись означает, что соответствующий столбец данных предиктора является категориальной переменной. Длина вектора p.

    Матрица символовКаждая строка матрицы является именем переменной. Имена должны совпадать с записями в PredictorNames. Дополните имена дополнительными пробелами, чтобы каждая строка матрицы символов имела одинаковую длину.
    Строковые массивы или массив ячеек векторов символовКаждый элемент массива является именем переменной. Имена должны совпадать с записями в PredictorNames.
    'all'Все предикторы категоричны.

    По умолчанию, если данные предиктора находятся в таблице, fitsemigraph принимает, что переменная категориальна, если это логический вектор, категориальный вектор, символьный массив, строковые массивы или массив ячеек из векторов символов. Порядковые категориальные переменные не поддерживаются. Если данные предиктора являются матрицей, fitsemigraph принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их с помощью 'CategoricalPredictors' аргумент пары "имя-значение".

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

    Пример: 'CategoricalPredictors','all'

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

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

    Если ClassNames является символьный массив, тогда каждый элемент должен соответствовать одной строке массива.

    Использование 'ClassNames' кому:

    • Закажите классы.

    • Задайте порядок любой размерности входного или выходного аргумента, которая соответствует порядку классов. Для примера используйте 'ClassNames' для определения порядка классификационных оценок столбцов в Mdl.LabelScores.

    • Выберите подмножество классов для маркировки. Например, предположим, что набор всех различных имен классов в Y является {'a','b','c'}. Чтобы использовать наблюдения из классов 'a' и 'c' только, задайте 'ClassNames',{'a','c'}.

    Значение по умолчанию для ClassNames - набор всех различных имен классов в Y.

    Пример: 'ClassNames',{'b','g'}

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

    Имена переменных предиктора, заданные как разделенная разделенными запятой парами, состоящая из 'PredictorNames' и строковые массивы уникальных имен или массивов ячеек из уникальных векторов символов. Функциональность 'PredictorNames' зависит от способа предоставления данных предиктора.

    • Если вы поставляете X, Y, и UnlabeledX, тогда можно использовать 'PredictorNames' для назначения имен переменным предиктора в X и UnlabeledX.

      • Порядок имен в PredictorNames должен соответствовать порядку столбцов X. То есть PredictorNames{1} - имя X(:,1), PredictorNames{2} - имя X(:,2)и так далее. Кроме того, size(X,2) и numel(PredictorNames) должно быть равным.

      • По умолчанию PredictorNames является {'x1','x2',...}.

    • Если вы поставляете Tbl и UnlabeledTbl, тогда можно использовать 'PredictorNames' чтобы выбрать, какие переменные предиктора использовать. То есть, fitsemigraph использует только переменные предиктора в PredictorNames и переменную отклика для маркировки немаркированных данных.

      • PredictorNames должен быть подмножеством Tbl.Properties.VariableNames и не может включать имя переменной отклика.

      • По умолчанию PredictorNames содержит имена всех переменных предиктора.

      • Хорошей практикой является определение предикторов, использующих любой из 'PredictorNames' или formula, но не то и другое.

    Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}

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

    Имя переменной отклика, заданное как разделенная разделенными запятой парами, состоящая из 'ResponseName' и вектор символов или строковый скаляр.

    • Если вы поставляете Y, тогда можно использовать 'ResponseName' чтобы задать имя для переменной отклика.

    • Если вы поставляете ResponseVarName или formula, тогда вы не можете использовать 'ResponseName'.

    Пример: 'ResponseName','response'

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

    Флаг для стандартизации данных предиктора, заданный как разделенная разделенными запятой парами, состоящая из 'Standardize' и числовое или логическое 0 (false) или 1 (true). Если вы задаете 'Standardize',trueпрограммное обеспечение объединяет маркированные и немеченые данные предиктора, а затем центрирует и масштабирует каждую числовую переменную предиктора на соответствующее среднее значение столбца и стандартное отклонение. Программное обеспечение не стандартизирует категориальные предикторы.

    Пример: 'Standardize',true

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

    Опции метрики расстояния

    свернуть все

    Метрика расстояния, заданная как разделенная разделенными запятой парами, состоящая из 'Distance' и вектор символов или строковый скаляр.

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

      ЗначениеОписание
      'euclidean'

      Евклидово расстояние

      'seuclidean'

      Стандартизированное евклидово расстояние - Каждое различие координат между наблюдениями масштабируется путем деления на соответствующий элемент стандартного отклонения S = std(PD,'omitnan'), где PD - данные предиктора, как маркированные, так и немаркированные. Чтобы задать другой параметр шкалы, используйте 'Scale' аргумент пары "имя-значение".

      'mahalanobis'

      Расстояние Махаланобиса - по умолчанию расстояние вычисляется с помощью C = cov(PD,'omitrows'), ковариация PD. Чтобы изменить значение ковариационной матрицы, используйте 'Cov' аргумент пары "имя-значение".

      'minkowski'

      Расстояние Минковского - показатель по умолчанию является 2. Чтобы задать другую экспоненту, используйте 'P' аргумент пары "имя-значение".

      'chebychev'

      Расстояние Чебычева (максимальное различие координат)

      'cityblock'

      Расстояние между блоками

      'correlation'

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

      'cosine'

      Один минус косинус включенного угла между наблюдениями (обрабатывается как векторы)

      'spearman'

      Один минус выборки корреляции ранга Спирмена между наблюдениями (рассматриваются как последовательности значений)

      Примечание

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

    • Если все переменные предиктора являются категориальными переменными, то можно задать одну из этих метрик расстояния.

      ЗначениеОписание
      'hamming'

      Расстояние Хемминга, которое является процентом координат, которые различаются

      'jaccard'

      Один минус коэффициент Жаккарда, который является процентом ненулевых координат, которые различаются

      Примечание

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

    • Если переменные-предикторы являются смесью непрерывных (числовых) и категориальных переменных, то можно задать одну из этих метрик расстояния.

      ЗначениеОписание
      'goodall3'

      Измененное расстояние Goodall

      'ofd'

      Частотное расстояние вхождения

    Значение по умолчанию 'euclidean' если все переменные предиктора непрерывны, и 'goodall3' если какая-либо из переменных предиктора категориальна. Для получения дополнительной информации о различных метриках расстояния, см. «Метрики расстояния».

    Пример: 'Distance','ofd'

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

    Масштабный параметр для стандартизированной метрики Евклидова расстояния, заданный как разделенная разделенными запятой парами, состоящая из 'Scale' и неотрицательный вектор. Длина Scale равен количеству предикторов. Каждое различие координат между двумя наблюдениями масштабируется соответствующим элементом Scale.

    Параметр шкалы по умолчанию std(PD,'omitnan'), где PD - данные предиктора, как маркированные, так и немаркированные.

    Примечание

    Этот аргумент действителен только в том случае, если Distance является 'seuclidean'.

    Пример: 'Scale',iqr(X)

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

    Ковариационная матрица для метрики расстояния Махаланобиса, заданная как разделенная разделенными запятой парами, состоящая из 'Cov' и a p -by p положительно определенная матрица, где p - количество предикторов.

    Ковариационная матрица по умолчанию cov(PD,'omitrows'), где PD - данные предиктора, как маркированные, так и немаркированные.

    Примечание

    Этот аргумент действителен только в том случае, если Distance является 'mahalanobis'.

    Пример: 'Cov',eye(3)

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

    Экспонента для метрики расстояния Минковского, заданная как разделенная разделенными запятой парами, состоящая из 'P' и положительная скалярная величина.

    Примечание

    Этот аргумент действителен только в том случае, если Distance является 'minkowski'.

    Пример: 'P',3

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

    Опции графика

    свернуть все

    Тип графика подобия, используемого в алгоритме маркировки, заданный как разделенная разделенными запятой парами, состоящая из 'SimilarityGraph' и одно из этих значений.

    ЗначениеОписаниеАргументы в виде пар имя-значение для конкретного графа
    'knn'Создайте график с помощью ближайших соседей.

    'NumNeighbors' - Количество ближайших соседей, используемых для построения графика подобия

    'KNNGraphType' - Тип графа ближайшего соседа

    'epsilon'Построение графика осуществляется с помощью поиска по радиусу. Вы должны задать значение для Radius если вы используете эту опцию.'Radius' - Радиус поиска для ближайших соседей, используемых для построения графика подобия

    Для получения дополнительной информации см. «График подобия».

    Пример: 'SimilarityGraph','epsilon','Radius',2

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

    Количество ближайших соседей, используемых для построения графика подобия, заданное как разделенная разделенными запятой парами, состоящая из 'NumNeighbors' и положительный целочисленный скаляр.

    Количество соседей по умолчанию log(n), где n - количество наблюдений в данных предиктора, как маркированных, так и немеченых.

    Примечание

    Этот аргумент действителен только в том случае, если SimilarityGraph является 'knn'.

    Пример: 'NumNeighbors',10

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

    Тип ближайшего соседнего графика, заданный как разделенная запятой пара, состоящий из 'KNNGraphType' и одно из этих значений.

    ЗначениеОписание
    'complete'

    Соединяет две точки i и j, когда или i является ближайшим соседом j или j является ближайшим соседом i.

    Эта опция приводит к более плотному представлению матрицы подобия.

    'mutual'

    Соединяет две точки i и j, когда i является ближайшим соседом j и j является ближайшим соседом i.

    Эта опция приводит к более разреженному представлению матрицы подобия.

    Примечание

    Этот аргумент действителен только в том случае, если SimilarityGraph является 'knn'.

    Пример: 'KNNGraphType','mutual'

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

    Радиус поиска для ближайших соседей, используемых для построения графика подобия, заданный как разделенная разделенными запятой парами, состоящая из 'Radius' и неотрицательный скаляр.

    Примечание

    Вы должны задать этот аргумент, если SimilarityGraph является 'epsilon'.

    Пример: 'Radius',5

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

    Масштабный коэффициент для ядра, заданный как разделенная разделенными запятой парами, состоящая из 'KernelScale' и 'auto' или положительная скалярная величина. Программа использует коэффициент шкалы, чтобы преобразовать расстояния к измерениям подобия.

    • The 'auto' опция поддерживается только для 'euclidean' и 'seuclidean' метрики расстояния.

    • Если вы задаете 'auto'затем программа выбирает соответствующий масштабный коэффициент с помощью эвристической процедуры. Эта эвристическая процедура использует субдискретизацию, поэтому оценки могут варьироваться от одного вызова к другому. Чтобы воспроизвести результаты, установите начальное число случайных чисел используя rng перед вызовом fitsemigraph.

    Пример: 'KernelScale','auto'

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

    Выходные аргументы

    свернуть все

    Полууправляемый классификатор на основе графов, возвращенный как SemiSupervisedGraphModel объект. Используйте запись через точку для доступа к свойствам объекта. Для примера, чтобы получить подобранные метки для немаркированных данных и их соответствующих счетов, введите Mdl.FittedLabels и Mdl.LabelScores, соответственно.

    Подробнее о

    свернуть все

    Метрики расстояния

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

    Учитывая mx n матрицей данных X, который рассматривает как mx (1-by-<reservedrangesplaceholder13>) векторы - строки x1, x2..., xmx, и my n матрица данных Y, который рассматривают как my (1-by-<reservedrangesplaceholder5>) векторы - строки y1, y2..., ymy, различные расстояния между вектором xs и yt определены следующим образом:

    • Метрики расстояния для непрерывных (числовых) переменных

      • Евклидово расстояние

        dst2=(xsyt)(xsyt).

        Евклидово расстояние является частным случаем расстояния Минковского, где p = 2.

      • Стандартизированное Евклидово расстояние

        dst2=(xsyt)V1(xsyt),

        где V - n -by n диагональная матрица, j-й диагональный элемент которой (S (j))2, где S является вектором масштабирующих коэффициентов для каждой размерности.

      • Расстояние Махаланобиса

        dst2=(xsyt)C1(xsyt),

        где C - ковариационная матрица.

      • Расстояние Минковского

        dst=j=1n|xsjytj|pp.

        Для особого случая p = 1 расстояние Минковского даёт городскую блочную дистанцию. Для особого случая p = 2 расстояние Минковского даёт евклидово расстояние. Для особого случая p = ∞ дистанция Минковского даёт дистанцию Чебычева.

      • Чебычевская дистанция

        dst=maxj{|xsjytj|}.

        Дистанция Чебычева является частным случаем дистанции Минковского, где p = ∞.

      • Расстояние между блоками

        dst=j=1n|xsjytj|.

        Расстояние городского блока является частным случаем расстояния Минковского, где p = 1.

      • Расстояние корреляции

        dst=1(xsx¯s)(yty¯t)(xsx¯s)(xsx¯s)(yty¯t)(yty¯t),

        где

        x¯s=1njxsj

        и

        y¯t=1njytj.

      • Косинусоидальное расстояние

        dst=(1xsyt(xsxs)(ytyt)).

      • Расстояние копьеносца

        dst=1(rsr¯s)(rtr¯t)(rsr¯s)(rsr¯s)(rtr¯t)(rtr¯t),

        где

        • rsj - это ранг xsj, занятый x 1 j, x 2 j,... xmx,j, как вычисляетсяtiedrank.

        • rtj - это ранг ytj, занятый y 1 j, y 2 j,... ymy,j, как вычисляетсяtiedrank.

        • rs и rt являются координатно-ранговыми векторами xs и yt, то есть rs = (rs 1, rs 2,... rsn) и rt = (r t 1, r t 2,... rtn).

        • r¯s=1njrsj=(n+1)2.

        • r¯t=1njrtj=(n+1)2.

    • Метрики расстояния для категориальных переменных

      • Расстояние Хемминга

        dst=(#(xsjytj)/n).

      • Расстояние Жаккара

        dst=#[(xsjytj)((xsj0)(ytj0))]#[(xsj0)(ytj0)].

    • Метрики расстояния для смеси непрерывных (числовых) и категориальных переменных

      • Измененное расстояние Goodall

        Это расстояние является вариантом расстояния Goodall, которое присваивает небольшое расстояние, если совпадающие значения нечасты независимо от частот других значений. Для несоответствий вклад предиктора в расстояние равен 1/( количество переменных).

      • Частотное расстояние вхождения

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

    График подобия

    График подобия моделирует отношения локального соседства между наблюдениями в данных предиктора, как маркированных, так и не маркированных, как неориентированный график. Узлы в графике представляют наблюдения, а ребра, которые не имеют направления, представляют связи между наблюдениями.

    Если попарное расстояние Disti,j между любыми двумя узлами i и j положительно (или больше определенного порога), то график подобия соединяет эти два узла с помощью ребра. Ребро между этими двумя узлами взвешивается попарным Si,j подобия, где Si,j=exp((Disti,jσ)2), для заданного значения σ шкалы ядра.

    fitsemigraph поддерживает эти два метода построения графика подобия:

    • Метод ближайшего соседа (если SimilarityGraph является 'knn' (по умолчанию)): fitsemigraph соединяет наблюдения в данных предиктора, как маркированных, так и немеченых, которые являются ближайшими соседями.

      • Используйте 'NumNeighbors' аргумент пары "имя-значение" для определения количества ближайших соседей.

      • Используйте 'KNNGraphType' аргумент пары "имя-значение", чтобы указать, делать ли 'complete' или 'mutual' соединение точек.

    • Метод поиска радиуса (если SimilarityGraph является 'epsilon'): fitsemigraph соединяет наблюдения, парные расстояния которых меньше заданного радиуса поиска. Необходимо задать радиус поиска для ближайших соседей, используемых для построения графика подобия при помощи 'Radius' аргумент пары "имя-значение".

    Матрица подобия

    Матрица подобия является матричным представлением графика подобия. Матрица n -by n S=(Si,j)i,j=1,,n содержит попарные значения подобия между связанными узлами в графике подобия. Матрица подобия графика также называется матрицей смежности.

    Матрица подобия симметрична, потому что ребра графика подобия не имеют направления. Значение Si,j = 0 означает, что узлы < reservedrangesplaceholder1 > и < reservedrangesplaceholder0 > графика подобия не связаны.

    Алгоритмы

    свернуть все

    Программа создает график подобия (SimilarityGraph) с маркированными и немаркированными наблюдениями в качестве узлов и распределяет информацию о метках от маркированных наблюдений к немаркированным наблюдениям с помощью распространения метки или распространения метки.

    Распространение меток

    Чтобы распространить метки между узлами в графике подобия, итерационный алгоритм распространения метки (где Method является 'labelpropagation') выполните следующие шаги:

    1. Инициализируйте n -by K матрицу F (0), где n - количество узлов (или наблюдений) и K - количество классов.

      • Первые l строки соответствуют маркированным наблюдениям. Каждая строка содержит 1 в столбце, соответствующем истинной метке класса для этого наблюдения, и 0 в каждом другом столбце.

      • Последние u строки соответствуют немаркированным наблюдениям и содержат 0 во всех столбцах.

    2. В t итерации (начиная с t = 1) обновляйте матрицу F с помощью вероятностного P матрицы перехода, так что F(t)=PF(t1), где Pi,j=Si,jk=1nSi,k.

      • Pi,j - вероятность передачи информации о метке от узла i к узлу j.

      • Si,j - вес ребра между узлом i и узлом j. Для определения Si,j см. «График подобия».

    3. Чтобы завершить t итерации, зажимайте метки для маркированных наблюдений. То есть оставьте первые l строки F (t) равными их начальным значениям в F (0).

    4. Повторите второй и третий шаги, пока значения F не сойдутся. Можно использовать IterationLimit и Tolerance значения для управления сходимостью.

      Итоговая матрица F соответствует счетам для маркированных данных и немаркированных данных (LabelScores). Для каждого наблюдения или строки в F столбец с максимальным счетом соответствует установленной метке класса (FittedLabels).

    Для получения дополнительной информации см. раздел [2].

    Вместо использования итерационного алгоритма распространения меток можно использовать точный метод распространения меток (где Method является 'labelpropagationexact'). В этом случае u -by - K матрица информации о метке для немаркированных данных является FU = (I - PUU)-1PUL FL, где:

    • I - матрица тождеств.

    • PUU и PUL являются маркированными (L) и немечеными (U) подматрицами P, такими что P=[PLLPLUPULPUU].

    • FL - l -by - K матрица информации о метках для маркированных данных. Каждая строка содержит 1 в столбце, соответствующем истинной метке класса для этого наблюдения, и 0 в каждом другом столбце.

    Матрица FU соответствует счетам для немаркированных данных (LabelScores). Для каждого наблюдения или строки в FU столбец с максимальным счетом соответствует установленной метке класса (FittedLabels). Для получения дополнительной информации см. раздел [3].

    Распределение меток

    Чтобы распределить метки по узлам в графике подобия, итеративном алгоритме распространения расширения (где Method является 'labelspreading') выполните следующие шаги:

    1. Создайте n -by - K матричный Y, где n - количество узлов (или наблюдений) и K - количество классов.

      • Первые l строки соответствуют маркированным наблюдениям. Каждая строка содержит 1 в столбце, соответствующем истинной метке класса для этого наблюдения, и 0 в каждом другом столбце.

      • Последние u строки соответствуют немаркированным наблюдениям и содержат 0 во всех столбцах.

    2. Создайте матрицу A, который является нормализованной версией n n матрицей подобия S с попарными значениями подобия Si,j, как определено в Графике Подобия. Предположим A = D-1/2S D-1/2, где D является n -by n диагональной матрицейD=[j=1nS1,n00j=1nSn,n].

    3. При t итерации (начиная с t = 1) обновляйте матрицу F с помощью матрицы A и соседнего параметра веса метки α (Alpha), так, чтобы F (<reservedrangesplaceholder8>) = <reservedrangesplaceholder7> <reservedrangesplaceholder6> <reservedrangesplaceholder5> (t - 1) + (1 - α) Y. Допустим F (0) равным Y.

    4. Повторите третий шаг, пока значения F не сойдутся. Можно использовать IterationLimit и Tolerance значения для управления сходимостью.

    5. Примите предел последовательности {F(t)}t=1,..,T. Эта итоговая матрица соответствует счетам для маркированных данных и немаркированных данных (LabelScores). Для каждого наблюдения или строки в матрице столбец с максимальным счетом соответствует установленной метке класса (FittedLabels).

    Вместо использования итерационного алгоритма расширения меток можно использовать точный метод расширения меток (где Method является 'labelspreadingexact'). В этом случае, n K матрицей информации о метке для маркированных и немаркированных данных F = (I - <reservedrangesplaceholder1> <reservedrangesplaceholder0>)-1Y, где I является матрицей тождеств. Матрица F соответствует счетам для маркированных данных и немеченых данных (LabelScores). Для каждого наблюдения или строки в F столбец с максимальным счетом соответствует установленной метке класса (FittedLabels).

    Для получения дополнительной информации см. раздел [1].

    Ссылки

    [1] Чжоу, Денгён, Оливье Буске, Томас Навин Лал, Джейсон Вестон и Бернхард Шёлкопф. «Обучение с локальной и глобальной согласованностью». Усовершенствования в системах обработки нейронной информации 16 (NIPS). 2003.

    [2] Чжу, Сяоцзинь и Зубин Храмани. «Изучение маркированных и немаркированных данных с распространением меток». Технический отчет CMU CALD CMU-CALD-02-107. 2002.

    [3] Zhu, Xiaojin, Zoubin Ghahramani, and John Lafferty. «Полууправляемое обучение с использованием Гауссовых полей и гармонических функций». Двадцатая Международная конференция по машинному обучению (МКММ). 2003.

    Введенный в R2020b