KDTreeSearcher

Создайте d-дерево K самый близкий соседний искатель

Описание

Объекты модели KDTreeSearcher хранят результаты самого близкого соседнего поиска, который использует алгоритм d-дерева K. Результаты включают данные тренировки, метрику расстояния и ее параметры и максимальное количество точек данных в каждой вершине (то есть, размер блока). Алгоритм d-дерева K делит n-by-K набор данных путем рекурсивного разделения точек n в K - мерное пространство в двоичное дерево.

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

Создание

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

Синтаксис

Mdl = KDTreeSearcher(X)
Mdl = KDTreeSearcher(X,Name,Value)

Описание

пример

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

пример

Mdl = KDTreeSearcher(X,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Можно задать максимальное количество точек данных в каждой вершине (то есть, размер блока) и метрика расстояния, и установить метрическое свойство (DistParameter) параметра расстояния. Например, KDTreeSearcher(X,'Distance','minkowski','BucketSize',10) задает, чтобы использовать расстояние Минковскего при поиске самых близких соседей и использовать 10 для размера блока. Чтобы задать DistParameter, используйте аргумент пары "имя-значение" P.

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

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

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

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

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

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

Пример: 'Distance','minkowski','P',3,'BucketSize',10 задает, чтобы использовать следующее при поиске самых близких соседей: расстояние Минковскего, 3 для метрической экспоненты расстояния Минковскего и 10 для размера блока.

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

ЗначениеОписание
'chebychev'Расстояние Чебычева (максимум координируют различие).
'cityblock'Расстояние городского квартала.
'euclidean'Евклидово расстояние.
'minkowski'Расстояние Минковскего. Экспонента по умолчанию равняется 2. Чтобы задать различную экспоненту, используйте аргумент пары "имя-значение" 'P'.

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

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

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

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

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

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

Максимальное количество точек данных в каждой вершине d-дерева K, заданного как пара, разделенная запятой, состоящая из 'BucketSize' и положительного целого числа.

Пример: 'BucketSize',10

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

Свойства

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

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

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

Входной параметр X createns или KDTreeSearcher устанавливает это свойство.

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

Метрика расстояния использовала, когда вы вызываете knnsearch или rangesearch, чтобы найти самых близких соседей к точкам будущего запроса, заданным как 'chebychev', 'cityblock', 'euclidean' или 'minkowski'.

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

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

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

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

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

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

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

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

Максимальное количество точек данных в каждой вершине d-дерева K, заданного как положительное целое число.

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

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

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

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

Примеры

свернуть все

Вырастите четырехмерное Kd-дерево, которое использует Евклидово расстояние.

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

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

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

Вырастите четырехмерное Kd-дерево с помощью целого набора данных в качестве данных тренировки.

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

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

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

Также можно вырастить Kd-дерево при помощи createns.

Mdl2 = createns(X)
Mdl2 = 
  KDTreeSearcher with properties:

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

Mdl2 является также объектом модели KDTreeSearcher, и это эквивалентно Mdl1. Поскольку X имеет четыре столбца, и метрика расстояния по умолчанию является Евклидовой, createns создает модель KDTreeSearcher по умолчанию.

Чтобы найти самых близких соседей в X к пакету данных о запросе, передайте объект модели KDTreeSearcher и данные о запросе к knnsearch или rangesearch.

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

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

Вырастите двумерное Kd-дерево с помощью createns и данных тренировки. Задайте метрику расстояния Минковскего.

Mdl = createns(X,'Distance','Minkowski')
Mdl = 
  KDTreeSearcher with properties:

       BucketSize: 50
         Distance: 'minkowski'
    DistParameter: 2
                X: [150x2 double]

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

Доступ к свойствам Mdl при помощи записи через точку. Например, используйте Mdl.DistParameter, чтобы получить доступ к экспоненте расстояния Минковскего.

Mdl.DistParameter
ans = 2

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

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

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

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

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

load fisheriris
X = meas;

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

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

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

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

Mdl.Distance = 'minkowski'
Mdl = 
  KDTreeSearcher with properties:

       BucketSize: 50
         Distance: 'minkowski'
    DistParameter: 2
                X: [150x4 double]

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

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

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

load fisheriris

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

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

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

Mdl = createns(X,'Distance','minkowski')
Mdl = 
  KDTreeSearcher with properties:

       BucketSize: 50
         Distance: 'minkowski'
    DistParameter: 2
                X: [145x4 double]

Поскольку X имеет четыре столбца, и метрикой расстояния является Минковский, createns создает объект модели KDTreeSearcher по умолчанию. Экспонентой расстояния Минковскего является 2 по умолчанию.

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

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

    17     4
     6     2
     1    12
    89    66
   124   100

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

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

Представленный в R2010a