exponenta event banner

createns

Создание ближайшего соседнего объекта поиска

Описание

пример

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

пример

NS = createns(X,Name,Value) указывает дополнительные параметры, использующие один или несколько аргументов пары имя-значение. Например, можно указать NSMethod для определения типа создаваемого объекта.

Примеры

свернуть все

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

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.

Вырастите четырехмерное 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.

Вырастите дерево Kd, которое использует расстояние Минковского с показателем степени пять.

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

load fisheriris
X = meas(:,3:4);

Вырастите дерево Kd. Укажите расстояние Минковского с показателем степени пять.

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

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

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

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

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

свернуть все

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

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

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

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

Пример: NS = createns(X,'Distance','mahalanobis') создает ExhaustiveSearcher объект модели, использующий метрику расстояния Махаланобиса при поиске ближайших соседей.
Для исчерпывающих и Kd-Tree ближайших соседних поисковиков

свернуть все

Метод поиска ближайшего соседа, используемый для определения типа создаваемого объекта, указанного как разделенная запятыми пара, состоящая из 'NSMethod' и 'kdtree' или 'exhaustive'.

  • 'kdtree'createns создает KDTreeSearcher объект модели с использованием алгоритма Kd-tree.

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

Значение по умолчанию: 'kdtree' когда эти три условия верны:

  • Количество столбцов X (K) меньше или равно 10 (то есть K ≤ 10).

  • X не разрежен.

  • Distance является 'euclidean', 'cityblock', 'chebychev', или 'minkowski'.

В противном случае значением по умолчанию является 'exhaustive'.

Пример: 'NSMethod','exhaustive'

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

Для обоих типов ближайших соседних поисковиков, createns поддерживает эти метрики расстояния.

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

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

СтоимостьОписание
'correlation'Один минус выборочная линейная корреляция между наблюдениями (обрабатываемая как последовательности значений)
'cosine'Один минус косинус включенного угла между наблюдениями (рассматривается как векторы строк)
'hamming'Расстояние хэмминга, которое представляет собой процент различающихся координат
'jaccard'Один минус коэффициент Jaccard, который является процентом ненулевых координат, которые отличаются
'mahalanobis'Расстояние Махаланобиса
'seuclidean'Стандартизированное евклидово расстояние
'spearman'Один минус выборка ранговой корреляции Спирмена между наблюдениями (рассматривается как последовательности значений)

Если createns использует исчерпывающий алгоритм поиска ('NSMethod' является 'exhaustive'), то можно также указать дескриптор функции для пользовательской метрики расстояния с помощью @ (например, @distfun). Пользовательская функция расстояния должна:

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

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

    • Вектор 1-by-K ZI содержащий одну строку из X или из точек запроса Y, где K - количество столбцов в X.

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

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

Дополнительные сведения см. в разделе Метрики расстояния.

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

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

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

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

Для исчерпывающих поисковиков ближайшего соседа

свернуть все

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

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

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

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

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

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

Поиск ближайших соседей с использованием дерева Kd

свернуть все

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

Этот аргумент допустим только при создании KDTreeSearcher объект модели.

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

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

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

свернуть все

Ближайший соседний поисковик, возвращенный как ExhaustiveSearcher объект модели или KDTreeSearcher объект модели.

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

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