ExhaustiveSearcher

Создайте исчерпывающий поиск по ближайшему соседу

Описание

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

Как только вы создаете ExhaustiveSearcher объект модели, найти соседние точки в обучающих данных к данным запроса путем выполнения ближайшего поиска соседа с помощью knnsearch или радиус поиска с помощью rangesearch. Алгоритм исчерпывающего поиска более эффективен, чем алгоритм K d-tree, когда K большой (то есть K > 10), и он более гибок, чем алгоритм K d-tree относительно выбора метрики расстояния. The 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, используйте Cov, P, или Scale аргумент пары "имя-значение".

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

расширить все

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

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

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

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

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

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

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

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

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

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

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

  • Примите за аргументы:

    • Вектор A 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'

Ковариационная матрица для метрики расстояния Махаланобиса, заданная как разделенная разделенными запятой парами, состоящая из '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', 'correlation', 'cosine', 'euclidean', 'hamming', 'jaccard', 'minkowski', 'mahalanobis', 'seuclidean', или 'spearman'), или указатель на функцию.

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

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

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

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

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

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

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

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

'minkowski'

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

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

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

'seuclidean'

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

Загрузите набор данных радужки Фишера.

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

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

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

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

Потому что метрика расстояния Махаланобис, 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]

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

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

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

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

Создайте исчерпывающий объект поиска при помощи 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,:);

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

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

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

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

Программа использует ковариационную матрицу предикторов (столбцов) в обучающих данных для вычисления расстояния Махаланобиса. Чтобы отобразить это значение, используйте 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 соответствует наблюдению данных запроса. Порядок столбцов соответствует порядку ближайших соседей относительно возрастающего расстояния. Например, на основе метрики Махаланобиса, второго ближайшего соседа Y(3,:) является X(128,:).

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

.
Введенный в R2010a