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 mislabeled.

    Подгонка помечает к непомеченным данным при помощи полуконтролируемого основанного на графике метода. Задайте тип самого близкого соседнего графика.

    Загрузите 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,:);

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

    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 представляет переменную отклика и X1x2 , и 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) задает, чтобы использовать метод маркировки распространения метки и запустить максимум 2 000 итераций.
    Маркировка опций алгоритма

    свернуть все

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

    ЗначениеОписаниеСпецифичные для метода Аргументы в виде пар имя-значение
    'labelpropagation'Итеративно распространите метки через узлы в графике подобия. Для получения дополнительной информации смотрите, Маркируют Propagation.

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

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

    'labelpropagationexact'Используйте точную формулу, чтобы распространить метки. Для получения дополнительной информации смотрите, Маркируют Propagation.'none'
    'labelspreading'Итеративно распространите метки через узлы в графике подобия. Для получения дополнительной информации смотрите, Маркируют Spreading.

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

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

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

    'labelspreadingexact'Используйте точную формулу, чтобы распространить метки. Для получения дополнительной информации смотрите, Маркируют Spreading.

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

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

    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' зависит от способа, которым вы снабжаете данными о предикторе.

    • Если вы предоставляете XY, и 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 ложь) или 1 TRUE). Если вы устанавливаете 'Standardize',true, программное обеспечение комбинирует помеченные и непомеченные данные о предикторе, и затем сосредотачивает и масштабирует каждый числовой переменный предиктор соответствующим столбцом среднее и стандартное отклонение. Программное обеспечение не стандартизирует категориальные предикторы.

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

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

    Метрические опции расстояния

    свернуть все

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

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

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

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

      'seuclidean'

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

      'mahalanobis'

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

      'minkowski'

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

      'chebychev'

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

      'cityblock'

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

      'correlation'

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

      'cosine'

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

      'spearman'

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

      Примечание

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

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

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

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

      'jaccard'

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

      Примечание

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

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

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

      Модифицированное расстояние Гудолла

      'ofd'

      Расстояние частоты вхождения

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

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

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

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

    Масштабным коэффициентом по умолчанию является std(PD,'omitnan'), где PD данные о предикторе, оба помеченные и непомеченные.

    Примечание

    Этот аргумент допустим только если Distance 'seuclidean'.

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

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

    Ковариационная матрица для метрики расстояния Mahalanobis в виде разделенной запятой пары, состоящей из 'Cov' и 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' или положительная скалярная величина. Программное обеспечение использует масштабный коэффициент, чтобы преобразовать расстояния до мер по подобию.

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

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

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

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

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

    свернуть все

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

    Больше о

    свернуть все

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

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

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

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

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

        dst2=(xsyt)(xsyt).

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

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

        dst2=(xsyt)V1(xsyt),

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

      • Расстояние Mahalanobis

        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 1j, x 2j... xmx,j, как вычислено tiedrank.

        • rtj является рангом ytj, принятого y 1j, y 2j... 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).

      • Расстояние Jaccard

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

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

      • Модифицированное расстояние Гудолла

        Это расстояние является вариантом расстояния Гудолла, которое присваивает маленькое расстояние, если совпадающие значения являются нечастыми независимо от частот других значений. Для несоответствий вклад расстояния предиктора равняется 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 средние значения, что узлы i и j графика подобия не соединяются.

    Алгоритмы

    свернуть все

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

    Маркируйте Propagation

    Распространить метки через узлы в графике подобия, итеративном алгоритме распространения метки (где 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 = (IPUU)-1PULFL где:

    • I является единичной матрицей.

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

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

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

    Маркируйте Spreading

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

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

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

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

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

    3. В итерации t (начиная с t = 1), обновите матрицу F при помощи матричного A и соседнего параметра веса метки α (Alpha), так, чтобы F (t) = α A F (t – 1) + (1 – α) Y. Позвольте F (0) равный Y.

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

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

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

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

    Ссылки

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

    [2] Чжу, Xiaojin и Zoubin Ghahramani. “Извлекая уроки из Помеченных и Непомеченных Данных с Распространением Метки”. Технология CMU CALD сообщает о CMU CALD 02-107. 2002.

    [3] Чжу, Xiaojin, Зубин Гэхрэмани и Джон Лэфферти. “Полуконтролируемое изучение Используя гауссовы поля и гармонические функции”. Двадцатая международная конференция по вопросам машинного обучения (ICML). 2003.

    Введенный в R2020b