exponenta event banner

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

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

      Примечание

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

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

      СтоимостьОписание
      'goodall3'

      Измененное расстояние гудолла

      'ofd'

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

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

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

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

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

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

    Примечание

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

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

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

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

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

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

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

    свернуть все

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

    Подробнее

    свернуть все

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

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

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

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

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

        dst2 = (xs yt) (xs − yt) ′.

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

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

        dst2 = (xs yt) V 1 (xs − yt) ′,

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

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

        dst2 = (xs yt) C 1 (xs − yt) ′,

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

      • Минковская дистанция

        dst=∑j=1n'xsj−ytj'pp.

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

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

        dst = maxj {| xsj ytj |}.

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

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

        dst=∑j=1n'xsj−ytj|.

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

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

        dst=1− (xs−x¯s) (yt−y¯t) (xs−x¯s) (xs−x¯s) (yt−y¯t) (yt−y¯t) ′,

        где

        x¯s=1n∑jxsj

        и

        y¯t=1n∑jytj.

      • Расстояние косинуса

        dst = (1−xsy′t (xsx′s) (yty′t)).

      • Расстояние Спирмена

        dst=1− (rs−r¯s) (rt−r¯t) (rs−r¯s) (rs−r¯s) (rt−r¯t) (rt−r¯t) ′,

        где

        • rsj - ранг xsj, принимаемый над x1j, x2j,... xmx, j, как вычислено tiedrank.

        • rtj - ранг ytj, взятый над y1j, y2j,... ymy, j, как вычислено tiedrank.

        • rs и rt являются координатными ранговыми векторами xs и yt, то есть rs = (rs1, rs2,... rsn) и rt = (rt1, rt2,... rtn).

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

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

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

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

        dst = (# (xsj≠ytj )/n).

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

        dst = # [(xsj≠ytj) ((xsj≠0) (ytj≠0))] # [(xsj≠0) ∪ (ytj≠0)].

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

      • Измененное расстояние гудолла

        Это расстояние является вариантом расстояния Гудолла, которое назначает небольшое расстояние, если совпадающие значения встречаются нечасто независимо от частот других значений. Для несовпадений вклад предиктора в расстояние равен 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-на-n S = (Si, j) i, j = 1,..., n содержит попарные значения подобия между связными узлами в графе подобия. Матрица подобия графа также называется матрицей смежности.

    Матрица подобия симметрична, потому что рёбра графа подобия не направлены. Значение Si,j = 0 означает, что узлы i и j графа подобия не связаны.

    Алгоритмы

    свернуть все

    Программное обеспечение строит граф подобия (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 (t − 1), где Pi,j=Si,j∑k=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) -1PULFL где:

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

    • 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, которая является нормализованной версией матрицы S n-на-n подобия, со значениями Si, j парного подобия, как определено в графике подобия. Пусть A = D-1/2SD-1/2, где D - диагональная матрица n-на-n D=[∑j=1nS1,n⋯0⋮⋱⋮0... ∑j=1nSn,n].

    3. При итерации t (начиная с t = 1) обновите матрицу F, используя матрицу A и соседний весовой параметр метки α (Alpha), так что F (t) = αAF (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] Чжоу, Денгён, Оливье Буске, Томас Навин Лал, Джейсон Уэстон и Бернхард Шёлькопф. «Обучение с локальной и глобальной последовательностью». Достижения в системах 16 обработки нейронной информации (NIPS). 2003.

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

    [3] Чжу, Сяоцзинь, Цзубинь Гахрамани и Джон Лафферти. «Полууправляемое обучение с использованием гауссовых полей и гармонических функций». Двадцатая международная конференция по машинному обучению (ИКМЛ). 2003.

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