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 = ExhaustiveSearcher(X,Name,Value)

Описание

пример

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

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

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

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

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

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

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

Аргумент пары "имя-значение" '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 = nanstd(Mdl.X)

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

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

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

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

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

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

knnsearchНайдите соседей k-nearest, использующих объект искателя
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-nearest.

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

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