ExhaustiveSearcher

Создайте исчерпывающего самого близкого соседнего искателя

Описание

ExhaustiveSearcher объекты модели хранят обучающие данные, метрику расстояния и значения параметров метрики расстояния для исчерпывающего самого близкого соседнего поиска. Алгоритм исчерпывающего поиска находит расстояние от каждого наблюдения запроса до всех наблюдений n в обучающих данных, которое является n-by-K числовая матрица.

Если вы создаете ExhaustiveSearcher объект модели, найдите соседние точки в обучающих данных к данным о запросе путем выполнения самого близкого соседнего поискового использования knnsearch или использование поиска радиуса rangesearch. Алгоритм исчерпывающего поиска более эффективен, чем алгоритм d-дерева K, когда K является большим (то есть, K> 10), и это более гибко, чем алгоритм d-дерева K относительно метрического выбора расстояния. ExhaustiveSearcher объект модели также поддерживает разреженные данные.

Создание

Используйте любого createns функционируйте или ExhaustiveSearcher функция (описанный здесь), чтобы создать ExhaustiveSearcher объект. Обе функции используют тот же синтаксис за исключением того, что createns функция имеет 'NSMethod' аргумент пары "имя-значение", который вы используете, чтобы выбрать самый близкий соседний метод поиска. createns функция также создает KDTreeSearcher объект. Задайте 'NSMethod','exhaustive' создать ExhaustiveSearcher объект. Значением по умолчанию является 'exhaustive' если K> 10, обучающие данные разреженны, или метрика расстояния не является Евклидовым, городским кварталом, Чебычевым или Минковским.

Описание

пример

Mdl = ExhaustiveSearcher(X) создает исчерпывающий самый близкий соседний объект искателя (Mdl) использование n-by-K числовая матрица обучающих данных (X).

пример

Mdl = ExhaustiveSearcher(X,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Можно задать метрику расстояния и установить метрический параметр расстояния (DistParameterСвойство. Например, ExhaustiveSearcher(X,'Distance','chebychev') создает исчерпывающий самый близкий соседний объект искателя, который использует расстояние Чебычева. Задавать DistParameter, используйте CovP, или Scale аргумент пары "имя-значение".

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

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

Обучающие данные, который готовит исчерпывающий алгоритм искателя в виде числовой матрицы. X имеет строки n, каждый соответствующий наблюдению (то есть, экземпляр или пример), и столбцы K, каждый соответствующий предиктору (то есть, функция).

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

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

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

Пример: 'Distance','mahalanobis','Cov',eye(3) задает, чтобы использовать расстояние Mahalanobis при поиске самых близких соседей и 3х3 единичной матрицы для ковариационной матрицы в метрике расстояния Mahalanobis.

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

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

ЗначениеОписание
'chebychev'Расстояние Чебычева (максимум координируют различие).
'cityblock'Расстояние городского квартала.
'correlation'Один минус демонстрационная линейная корреляция между наблюдениями (обработанный как последовательности значений).
'cosine'Один минус косинус включенного угла между наблюдениями (обработанный как векторы-строки).
'euclidean'Евклидово расстояние.
'hamming'Расстояние Хемминга, которое является процентом координат, которые отличаются.
'jaccard'Один минус коэффициент Jaccard, который является процентом ненулевых координат, которые отличаются.
'minkowski'Расстояние Минковскего. Экспонента по умолчанию равняется 2. Чтобы задать различную экспоненту, используйте 'P' аргумент пары "имя-значение".
'mahalanobis'Расстояние Mahalanobis, вычисленное использование положительной определенной ковариационной матрицы. Чтобы изменить значение ковариационной матрицы, используйте 'Cov' аргумент пары "имя-значение".
'seuclidean'Стандартизированное Евклидово расстояние. Каждое координатное различие между строками в Mdl.X и матрица запроса масштабируется путем деления на соответствующий элемент стандартного отклонения, вычисленного из Mdl.X. Чтобы задать другое масштабирование, используйте 'Scale' аргумент пары "имя-значение".
'spearman'Один минус порядковая корреляция демонстрационного Копьеносца между наблюдениями (обработанный как последовательности значений).

Для получения дополнительной информации смотрите Метрики Расстояния.

Можно задать указатель на функцию для пользовательской метрики расстояния при помощи @ (например, @distfun). Пользовательская функция расстояния должна:

  • Имейте форму function D2 = distfun(ZI, ZJ).

  • Возьмите в качестве аргументов:

    • 1 K векторным ZI содержа одну строку от X или от точек запроса Y, где K является количеством столбцов в X.

    • m-by-K матричный ZJ содержа несколько строк X или Y, где m является положительным целым числом.

  • Возвратите m-by-1 вектор из расстояния D2, где D2 (j) расстояние между наблюдениями ZI и ZJ (j,:).

Программное обеспечение не использует метрику расстояния для создания ExhaustiveSearcher объект модели, таким образом, можно изменить метрику расстояния при помощи записи через точку после создания объекта.

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

Ковариационная матрица для метрики расстояния Mahalanobis в виде разделенной запятой пары, состоящей из 'Cov' и K-by-K положительная определенная матрица, где K является количеством столбцов в X. Этот аргумент допустим только если 'Distance' 'mahalanobis'.

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

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

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

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

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

Значение масштабного коэффициента для стандартизированной Евклидовой метрики расстояния в виде разделенной запятой пары, состоящей из 'Scale' и неотрицательный числовой вектор из длины K, где K является количеством столбцов в X. Программное обеспечение масштабирует каждое различие между обучением и данными о запросе с помощью соответствующего элемента Scale. Этот аргумент допустим только если 'Distance' 'seuclidean'.

Пример: 'Scale',quantile(X,0.75) - quantile(X,0.25)

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

Свойства

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

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

Обучающие данные, который готовит исчерпывающий алгоритм искателя в виде числовой матрицы. X имеет строки n, каждый соответствующий наблюдению (то есть, экземпляр или пример), и столбцы K, каждый соответствующий предиктору (то есть, функция).

Входной параметр X из createns или ExhaustiveSearcher наборы это свойство.

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

Метрика расстояния использовала, когда вы вызываете knnsearch или rangesearch найти самых близких соседей к будущему запросу указывает в виде вектора символов или строкового скаляра ('chebychev', 'cityblock'Корреляция, 'cosine', 'euclidean', 'hamming', 'jaccard', 'minkowski', 'mahalanobis', 'seuclidean', или 'spearman'), или указатель на функцию.

'Distance' аргумент пары "имя-значение" createns или ExhaustiveSearcher наборы это свойство.

Программное обеспечение не использует метрику расстояния для создания ExhaustiveSearcher объект модели, таким образом, можно изменить его при помощи записи через точку.

Метрические значения параметров расстояния в виде пустого ([]) или положительная скалярная величина.

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

Метрика расстоянияОписание параметра
'mahalanobis'

Положительная определенная матрица, представляющая ковариационную матрицу, используемую в вычислениях расстояние Mahalanobis. По умолчанию программное обеспечение устанавливает ковариацию с помощью cov(Mdl.X,'omitrows').

'Cov' аргумент пары "имя-значение" createns или ExhaustiveSearcher наборы это свойство.

Можно изменить DistParameter при помощи записи через точку, например, Mdl.DistParameter = CovNew, где CovNew K-by-K положительная определенная числовая матрица.

'minkowski'

Положительная скалярная величина, указывающая на экспоненту расстояния Минковскего. По умолчанию экспонентой является 2.

'P' аргумент пары "имя-значение" createns или ExhaustiveSearcher наборы это свойство.

Можно изменить DistParameter при помощи записи через точку, например, Mdl.DistParameter = PNew, где PNew положительная скалярная величина.

'seuclidean'

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

  1. Оценивает стандартное отклонение каждого предиктора (столбец) X использование scale = std(Mdl.X,'omitnan')

  2. Шкалы каждое координатное различие между строками в X и матрица запроса путем деления на соответствующий элемент scale

'Scale' аргумент пары "имя-значение" createns или ExhaustiveSearcher наборы это свойство.

Можно изменить DistParameter при помощи записи через точку, например, Mdl.DistParameter = sNew, где sNew K - размерный положительный числовой вектор.

Если Mdl.Distance не один из параметров, перечисленных в этой таблице, затем Mdl.DistParameter [], что означает, что заданная метрическая формула расстояния не имеет никаких параметров.

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

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

knnsearchНайдите k - самые близкие соседи, использующие объект искателя
rangesearchНайдите всех соседей на заданном расстоянии с помощью объекта искателя

Примеры

свернуть все

Загрузите ирисовый набор данных Фишера.

load fisheriris
X = meas;
[n,k] = size(X)
n = 150
k = 4

X имеет 150 наблюдений и 4 предиктора.

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

Mdl1 = ExhaustiveSearcher(X)
Mdl1 = 
  ExhaustiveSearcher with properties:

         Distance: 'euclidean'
    DistParameter: []
                X: [150x4 double]

Mdl1 ExhaustiveSearcher объект модели и его свойства появляются в Командном окне. Объект содержит информацию об обученном алгоритме, таком как метрика расстояния. Можно изменить значения свойств с помощью записи через точку.

В качестве альтернативы можно подготовить исчерпывающего самого близкого соседнего искателя при помощи createns и определение 'exhaustive' как метод поиска.

Mdl2 = createns(X,'NSMethod','exhaustive')
Mdl2 = 
  ExhaustiveSearcher with properties:

         Distance: 'euclidean'
    DistParameter: []
                X: [150x4 double]

Mdl2 также ExhaustiveSearcher объект модели, и это эквивалентно Mdl1.

Искать X для самых близких соседей пакета данных о запросе передайте ExhaustiveSearcher объект модели и данные о запросе к knnsearch или rangesearch.

Загрузите ирисовый набор данных Фишера. Фокусируйтесь на лепестковых размерностях.

load fisheriris
X = meas(:,[3 4]); % Predictors

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

Mdl = createns(X,'Distance','mahalanobis')
Mdl = 
  ExhaustiveSearcher with properties:

         Distance: 'mahalanobis'
    DistParameter: [2x2 double]
                X: [150x2 double]

Поскольку метрикой расстояния является Mahalanobis, createns создает ExhaustiveSearcher объект модели по умолчанию.

Доступ к свойствам Mdl при помощи записи через точку. Например, используйте Mdl.DistParameter получить доступ к параметру ковариации Mahalanobis.

Mdl.DistParameter
ans = 2×2

    3.1163    1.2956
    1.2956    0.5810

Можно передать данные о запросе и Mdl к:

  • knnsearch найти индексы и расстояния самых близких соседей

  • rangesearch найти индексы всех самых близких соседей на расстоянии, которое вы задаете

Создайте ExhaustiveSearcher объект модели и изменяет Distance свойство при помощи записи через точку.

Загрузите ирисовый набор данных Фишера.

load fisheriris
X = meas;

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

Mdl = ExhaustiveSearcher(X)
Mdl = 
  ExhaustiveSearcher with properties:

         Distance: 'euclidean'
    DistParameter: []
                X: [150x4 double]

Укажите, что соседний искатель использует метрику Mahalanobis, чтобы вычислить расстояния между данными о запросе и обучением.

Mdl.Distance = 'mahalanobis'
Mdl = 
  ExhaustiveSearcher with properties:

         Distance: 'mahalanobis'
    DistParameter: [4x4 double]
                X: [150x4 double]

Можно передать Mdl и данные о запросе к любому knnsearch или rangesearch найти самых близких соседей точек в данных о запросе на основе расстояния Mahalanobis.

Создайте исчерпывающий объект искателя при помощи createns функция. Передайте объект и запросите данные к knnsearch функционируйте, чтобы найти k - ближайших соседей.

Загрузите ирисовый набор данных Фишера.

load fisheriris

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

rng('default');             % For reproducibility
n = size(meas,1);           % Sample size
qIdx = randsample(n,5);     % Indices of query data
X = meas(~ismember(1:n,qIdx),:);
Y = meas(qIdx,:);

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

Mdl = createns(X,'Distance','mahalanobis')
Mdl = 
  ExhaustiveSearcher with properties:

         Distance: 'mahalanobis'
    DistParameter: [4x4 double]
                X: [145x4 double]

Поскольку метрикой расстояния является Mahalanobis, createns создает ExhaustiveSearcher объект модели по умолчанию.

Программное обеспечение использует ковариационную матрицу предикторов (столбцы) в обучающих данных для вычисления расстояния Mahalanobis. Чтобы отобразить это значение, используйте Mdl.DistParameter.

Mdl.DistParameter
ans = 4×4

    0.6547   -0.0368    1.2320    0.5026
   -0.0368    0.1914   -0.3227   -0.1193
    1.2320   -0.3227    3.0671    1.2842
    0.5026   -0.1193    1.2842    0.5800

Найдите индексы обучающих данных (Mdl.X) это - два самых близких соседа каждой точки в данных о запросе (Y).

IdxNN = knnsearch(Mdl,Y,'K',2)
IdxNN = 5×2

     5     6
    98    95
   104   128
   135    65
   102   115

Каждая строка IdxNN соответствует наблюдению данных о запросе. Порядок следования столбцов соответствует порядку самых близких соседей относительно возрастающего расстояния. Например, на основе метрики Mahalanobis, второго самого близкого соседа Y(3,:) X(128,:).

Расширенные возможности

Введен в R2010a