Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

ExhaustiveSearcher

Crear buscador de vecino más cercano exhaustivo

Descripción

objetos de modelo almacenan los datos de entrenamiento, la métrica de distancia y los valores de parámetro de la métrica de distancia para una búsqueda de vecino más cercano exhaustiva.ExhaustiveSearcher El algoritmo de búsqueda exhaustiva encuentra la distancia de cada observación de consulta a todas las observaciones de los datos de entrenamiento, que es una matriz numérica.nnK

Una vez que cree un objeto de modelo, busque los puntos vecinos en los datos de entrenamiento en los datos de la consulta realizando una búsqueda de vecino más cercano utilizando o una búsqueda de radio.ExhaustiveSearcherknnsearchrangesearch El algoritmo de búsqueda exhaustiva es más eficiente que el algoritmo de árbol d cuando es grande (es decir, > 10), y es más flexible que el algoritmo de árbol d con respecto a las opciones de métrica de distancia.KKKK El objeto de modelo también admite datos dispersos.ExhaustiveSearcher

Creación

Utilice la función o la función (descrita aquí) para crear un objeto.creatensExhaustiveSearcherExhaustiveSearcher Ambas funciones usan la misma sintaxis excepto que la función tiene el argumento de par nombre-valor, que se usa para elegir el método de búsqueda de vecino más cercano.createns'NSMethod' La función también crea un objeto.creatensKDTreeSearcher Especifique para crear un objeto.'NSMethod','exhaustive'ExhaustiveSearcher El valor predeterminado es si > 10, los datos de entrenamiento son escasos, o la métrica de distancia no es el euclidiano, el bloque de la ciudad, Chebychev o Minkowski.'exhaustive'K

Descripción

ejemplo

Mdl = ExhaustiveSearcher(X) crea un objeto buscador de vecino más cercano () utilizando la matriz-por-numérica de datos de entrenamiento ().MdlnKX

ejemplo

Mdl = ExhaustiveSearcher(X,Name,Value) especifica opciones adicionales mediante uno o varios argumentos de par nombre-valor. Puede especificar la métrica de distancia y establecer la propiedad de parámetro de métrica de distancia ().DistParameter Por ejemplo, crea un objeto buscador de vecino más cercano que utiliza la distancia Chebychev.ExhaustiveSearcher(X,'Distance','chebychev') Para especificar, utilice el argumento de par nombre-valor.DistParameterCovPScale

Argumentos de entrada

expandir todo

Datos de entrenamiento que preparan el algoritmo de buscador exhaustivo, especificado como una matriz numérica. tiene filas, cada una correspondiente a una observación (es decir, una instancia o un ejemplo) y columnas, cada una correspondiente a un predictor (es decir, una característica).XnK

Tipos de datos: single | double

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: especifica utilizar la distancia de Mahalanobis al buscar vecinos más cercanos y una matriz de identidad de 3 por 3 para la matriz de covarianza en la métrica de distancia de Mahalanobis.'Distance','mahalanobis','Cov',eye(3)

Métrica de distancia utilizada al llamar o buscar los vecinos más cercanos para los puntos de consulta futuros, especificados como el par separado por comas que consta de un vector de caracteres, un escalar de cadena o un identificador de función.knnsearchrangesearch'Distance'

En esta tabla se describen las métricas de distancia admitidas especificadas como vectores de caracteres o escalares de cadena.

ValorDescripción
'chebychev'Chebychev distancia (diferencia máxima de coordenadas).
'cityblock'Distancia de bloque de ciudad.
'correlation'Uno menos la correlación lineal de muestra entre las observaciones (tratadas como secuencias de valores).
'cosine'Uno menos el coseno del ángulo incluido entre las observaciones (tratado como vectores de fila).
'euclidean'Distancia euclidiana.
'hamming'Distancia de Hamming, que es el porcentaje de coordenadas que difieren.
'jaccard'Uno menos el coeficiente Jaccard, que es el porcentaje de coordenadas distintas de cero que difieren.
'minkowski'Distancia Minkowski. El exponente predeterminado es 2. Para especificar un exponente diferente, utilice el argumento de par nombre-valor.'P'
'mahalanobis'Distancia de Mahalanobis, calculada utilizando una matriz de covarianza definida positiva. Para cambiar el valor de la matriz de covarianza, utilice el argumento de par nombre-valor.'Cov'
'seuclidean'Distancia euclidiana estandarizada. Cada diferencia de coordenadas entre las filas y la matriz de consulta se escala dividiendo por el elemento correspondiente de la desviación estándar calculada desde.Mdl.XMdl.X Para especificar otro escalado, use el argumento de par nombre-valor.'Scale'
'spearman'Uno menos la correlación de rango de Spearman de muestra entre las observaciones (tratadas como secuencias de valores).

Para obtener más información, consulte.Las métricas de distancia

Puede especificar un identificador de función para una métrica de distancia personalizada mediante (por ejemplo,).@@distfun Una función de distancia personalizada debe:

  • Tenga el formulario.function D2 = distfun(ZI, ZJ)

  • Tome como argumentos:

    • Un 1 por vector que contiene una sola fila desde o hacia los puntos de consulta, donde es el número de columnas en.KZIXYKX

    • Una-por-matriz que contiene varias filas de o, donde es un entero positivo.mKZJXYm

  • Devuelve un vector de distancia de-por-1, dondemD2 D2(j) es la distancia entre las observaciones yZI ZJ(j,:).

El software no utiliza la métrica de distancia para crear un objeto de modelo, por lo que puede alterar la métrica de distancia utilizando la notación de puntos después de crear el objeto.ExhaustiveSearcher

Ejemplo: 'Distance','mahalanobis'

Matriz de covarianza para la métrica de distancia de Mahalanobis, especificada como el par separado por comas que consta de una matriz definida y una por positivo, donde está el número de columnas.'Cov'KKKX Este argumento sólo es válido si es.'Distance''mahalanobis'

Ejemplo: 'Cov',eye(3)

Tipos de datos: single | double

Exponente de la métrica de distancia Minkowski, especificada como el par separado por comas que consta de un escalar positivo.'P' Este argumento sólo es válido si es.'Distance''minkowski'

Ejemplo: 'P',3

Tipos de datos: single | double

Valor de parámetro de escala para la métrica de distancia euclidiana estandarizada, especificada como el par separado por comas que consta de un vector numérico de longitud no negativo, donde es el número de columnas.'Scale'KKX El software escala cada diferencia entre los datos de entrenamiento y consulta utilizando el elemento correspondiente de.Scale Este argumento sólo es válido si es.'Distance''seuclidean'

Ejemplo: 'Scale',quantile(X,0.75) - quantile(X,0.25)

Tipos de datos: single | double

Propiedades

expandir todo

Esta propiedad es de solo lectura.

Datos de entrenamiento que preparan el algoritmo de buscador exhaustivo, especificado como una matriz numérica. tiene filas, cada una correspondiente a una observación (es decir, una instancia o un ejemplo) y columnas, cada una correspondiente a un predictor (es decir, una característica).XnK

El argumento de entrada de o establece esta propiedad.XcreatensExhaustiveSearcher

Tipos de datos: single | double

Métrica de distancia utilizada cuando se llama o para buscar los vecinos más cercanos para los puntos de consulta futuros, especificado como un vector de caracteres o escalar de cadena (,,,,,,,,, o), o un identificador de función.knnsearchrangesearch'chebychev''cityblock''correlation''cosine''euclidean''hamming''jaccard''minkowski''mahalanobis''seuclidean''spearman'

El argumento de par nombre-valor de o establece esta propiedad.'Distance'creatensExhaustiveSearcher

El software no utiliza la métrica de distancia para crear un objeto de modelo, por lo que puede alterarlo utilizando la notación de puntos.ExhaustiveSearcher

Distancia valores de parámetros métricos, especificados como Empty () o un escalar positivo.[]

En esta tabla se describen los parámetros de distancia de las métricas de distancia admitidas.

Distancia métricaDescripción del parámetro
'mahalanobis'

Una matriz definida positiva que representa la matriz de covarianza utilizada para calcular la distancia de Mahalanobis. De forma predeterminada, el software establece la covarianza utilizando.nancov(Mdl.X)

El argumento de par nombre-valor de o establece esta propiedad.'Cov'creatensExhaustiveSearcher

Puede alterar utilizando la notación de puntos, por ejemplo,, donde es una matriz numérica definida por positivo.DistParameterMdl.DistParameter = CovNewCovNewKK

'minkowski'

Un escalar positivo que indica el exponente de la distancia Minkowski. De forma predeterminada, el exponente es.2

El argumento de par nombre-valor de o establece esta propiedad.'P'creatensExhaustiveSearcher

Puede modificar mediante la notación de puntos, por ejemplo,, donde es un escalar positivo.DistParameterMdl.DistParameter = PNewPNew

'seuclidean'

Un vector numérico positivo que indica los valores utilizados por el software para escalar los predictores al calcular la distancia euclidiana estandarizada. Por defecto, el software:

  1. Estima la desviación estándar de cada predictor (columna) de usarXscale = nanstd(Mdl.X)

  2. Escala cada diferencia de coordenadas entre las filas y la matriz de consulta dividiendo por el elemento correspondiente deXscale

El argumento de par nombre-valor de o establece esta propiedad.'Scale'creatensExhaustiveSearcher

Puede alterar utilizando la notación de puntos, por ejemplo,, donde es un vector numérico positivo-dimensional.DistParameterMdl.DistParameter = sNewsNewK

Si no es uno de los parámetros enumerados en esta tabla, entonces es, lo que significa que la fórmula de la métrica de distancia especificada no tiene parámetros.Mdl.DistanceMdl.DistParameter[]

Tipos de datos: single | double

Funciones del objeto

knnsearchBuscar-vecinos más cercanos mediante el objeto buscadork
rangesearchBuscar todos los vecinos dentro de la distancia especificada mediante el objeto buscador

Ejemplos

contraer todo

Cargue el conjunto de datos de iris de Fisher.

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

tiene 150 observaciones y 4 predictores.X

Prepare un buscador de vecinos exhaustivo más cercano utilizando todo el conjunto de datos como datos de entrenamiento.

Mdl1 = ExhaustiveSearcher(X)
Mdl1 =    ExhaustiveSearcher with properties:           Distance: 'euclidean'     DistParameter: []                 X: [150x4 double]  

es un objeto de modelo y sus propiedades aparecen en la ventana de comandos.Mdl1ExhaustiveSearcher El objeto contiene información sobre el algoritmo entrenado, como la métrica de distancia. Puede modificar los valores de propiedad mediante la notación de puntos.

Como alternativa, puede preparar un buscador de vecino más cercano exhaustivo utilizando y especificando como el método de búsqueda.createns'exhaustive'

Mdl2 = createns(X,'NSMethod','exhaustive')
Mdl2 =    ExhaustiveSearcher with properties:           Distance: 'euclidean'     DistParameter: []                 X: [150x4 double]  

es también un objeto de modelo, y es equivalente a.Mdl2ExhaustiveSearcherMdl1

Para buscar los vecinos más cercanos a un lote de datos de consulta, pase el objeto de modelo y los datos de la consulta a o.XExhaustiveSearcherknnsearchrangesearch

Cargue el conjunto de datos de iris de Fisher. Concéntrese en las dimensiones del pétalo.

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

Prepare un buscador de vecinos exhaustivo más cercano. Especifique la métrica de distancia de Mahalanobis.

Mdl = createns(X,'Distance','mahalanobis')
Mdl =    ExhaustiveSearcher with properties:           Distance: 'mahalanobis'     DistParameter: [2x2 double]                 X: [150x2 double]  

Dado que la métrica de distancia es Mahalanobis, crea un objeto de modelo de forma predeterminada.creatensExhaustiveSearcher

Acceda a las propiedades mediante la notación de puntos.Mdl Por ejemplo, utilícelas para acceder al parámetro de covarianza de Mahalanobis.Mdl.DistParameter

Mdl.DistParameter
ans = 2×2

    3.1163    1.2956
    1.2956    0.5810

Puede pasar datos de consulta y:Mdl

  • para encontrar índices y distancias de los vecinos más cercanosknnsearch

  • para buscar índices de todos los vecinos más cercanos dentro de una distancia que especifiquerangesearch

Cree un objeto de modelo y modifique la propiedad mediante la notación de puntos.ExhaustiveSearcherDistance

Cargue el conjunto de datos de iris de Fisher.

load fisheriris X = meas;

Entrenar un algoritmo de buscador exhaustivo por defecto utilizando todo el conjunto de datos como datos de entrenamiento.

Mdl = ExhaustiveSearcher(X)
Mdl =    ExhaustiveSearcher with properties:           Distance: 'euclidean'     DistParameter: []                 X: [150x4 double]  

Especifique que el buscador de vecinos utilice la métrica Mahalanobis para calcular las distancias entre los datos de aprendizaje y de consulta.

Mdl.Distance = 'mahalanobis'
Mdl =    ExhaustiveSearcher with properties:           Distance: 'mahalanobis'     DistParameter: [4x4 double]                 X: [150x4 double]  

Puede pasar y los datos de consulta a cualquiera o para encontrar los vecinos más cercanos a los puntos de los datos de consulta basados en la distancia de Mahalanobis.Mdlknnsearchrangesearch

Cree un objeto de buscador exhaustivo utilizando la función.createns Pase el objeto y consulte los datos a la función para buscar los vecinos más cercanos.knnsearchk

Cargue el conjunto de datos de iris de Fisher.

load fisheriris

Quite cinco iris aleatoriamente de los datos del predictor para usarlos como conjunto de consultas.

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,:);

Prepare un buscador de vecinos exhaustivo más cercano utilizando los datos de entrenamiento. Especifique la distancia de Mahalanobis para encontrar los vecinos más cercanos.

Mdl = createns(X,'Distance','mahalanobis')
Mdl =    ExhaustiveSearcher with properties:           Distance: 'mahalanobis'     DistParameter: [4x4 double]                 X: [145x4 double]  

Dado que la métrica de distancia es Mahalanobis, crea un objeto de modelo de forma predeterminada.creatensExhaustiveSearcher

El software utiliza la matriz de covarianza de los predictores (columnas) en los datos de entrenamiento para calcular la distancia de Mahalanobis. Para mostrar este valor, utilice.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

Busque los índices de los datos de entrenamiento () que son los dos vecinos más cercanos de cada punto de la consulta Data ().Mdl.XY

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

     5     6
    98    95
   104   128
   135    65
   102   115

Cada fila de corresponde a una observación de datos de consulta.IdxNN El orden de las columnas corresponde al orden de los vecinos más cercanos con respecto a la distancia ascendente. Por ejemplo, basado en la métrica Mahalanobis, el segundo vecino más cercano de is.Y(3,:)X(128,:)

Capacidades ampliadas

Introducido en R2010a