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.

sparsefilt

Extracción de características mediante el filtrado disperso

Descripción

Mdl = sparsefilt(X,q) Devuelve un objeto de modelo de filtrado disperso que contiene los resultados de aplicar el filtrado disperso a la tabla o matriz de Datos predictores que contienen variables. es el número de entidades para extraer de, por lo tanto, aprende una por matriz de pesos de transformación.XpqXsparsefiltpq Para las representaciones de entidades subcompletas o sobrecompletas, puede ser menor o mayor que el número de variables predictoras, respectivamente.q

  • Para acceder a los pesos de transformación aprendidos, utilice.Mdl.TransformWeights

  • Para transformarse en el nuevo conjunto de entidades mediante la transformación aprendida, pase y a.XMdlXtransform

ejemplo

Mdl = sparsefilt(X,q,Name,Value) utiliza opciones adicionales especificadas por uno o más argumentos de par.Name,Value Por ejemplo, puede estandarizar los Datos predictores o aplicarL2 Regularización.

Ejemplos

contraer todo

Cree un objeto mediante la función.SparseFilteringsparsefilt

Cargue los parches de imagen.caltech101

data = load('caltech101patches'); size(data.X)
ans = 1×2

      100000         363

Hay 100.000 parches de imagen, cada uno conteniendo 363 características.

Extraiga 100 características de los datos.

rng default % For reproducibility Q = 100; obj = sparsefilt(data.X,Q,'IterationLimit',100)
Warning: Solver LBFGS was not able to converge to a solution. 
obj =    SparseFiltering             ModelParameters: [1x1 struct]               NumPredictors: 363          NumLearnedFeatures: 100                          Mu: []                       Sigma: []                     FitInfo: [1x1 struct]            TransformWeights: [363x100 double]     InitialTransformWeights: []     Properties, Methods  

emite una advertencia porque se detuvo debido a que alcanzó el límite de iteración, en lugar de alcanzar un límite de tamaño de paso o un límite de tamaño de degradado.sparsefilt Todavía puede usar las características aprendidas en el objeto devuelto mediante una llamada a la función.transform

Continúe optimizando un filtro disperso.

Cargue los parches de imagen.caltech101

data = load('caltech101patches'); size(data.X)
ans = 1×2

      100000         363

Hay 100.000 parches de imagen, cada uno conteniendo 363 características.

Extraiga 100 características de los datos y utilice un límite de iteración de 20.

rng default % For reproducibility q = 100; Mdl = sparsefilt(data.X,q,'IterationLimit',20);
Warning: Solver LBFGS was not able to converge to a solution. 

Visualice la matriz de transformación resultante como parches de imagen.

wts = Mdl.TransformWeights; W = reshape(wts,[11,11,3,q]); [dx,dy,~,~] = size(W); for f = 1:q     Wvec = W(:,:,:,f);     Wvec = Wvec(:);     Wvec =(Wvec - min(Wvec))/(max(Wvec) - min(Wvec));     W(:,:,:,f) = reshape(Wvec,dx,dy,3); end m   = ceil(sqrt(q)); n   = m; img = zeros(m*dx,n*dy,3); f   = 1; for i = 1:m     for j = 1:n         if (f <= q)             img((i-1)*dx+1:i*dx,(j-1)*dy+1:j*dy,:) = W(:,:,:,f);             f = f+1;         end     end end imshow(img,'InitialMagnification',300);

Los parches de imagen aparecen ruidosos. Para limpiar el ruido, intente más iteraciones. Reinicia la optimización desde donde se detuvo para otras 40 iteraciones.

Mdl = sparsefilt(data.X,q,'IterationLimit',40,'InitialTransformWeights',wts);
Warning: Solver LBFGS was not able to converge to a solution. 

Visualice la matriz de transformación actualizada como parches de imagen.

wts = Mdl.TransformWeights; W = reshape(wts,[11,11,3,q]); [dx,dy,~,~] = size(W); for f = 1:q     Wvec = W(:,:,:,f);     Wvec = Wvec(:);     Wvec =(Wvec - min(Wvec))/(max(Wvec) - min(Wvec));     W(:,:,:,f) = reshape(Wvec,dx,dy,3); end m   = ceil(sqrt(q)); n   = m; img = zeros(m*dx,n*dy,3); f   = 1; for i = 1:m     for j = 1:n         if (f <= q)             img((i-1)*dx+1:i*dx,(j-1)*dy+1:j*dy,:) = W(:,:,:,f);             f = f+1;         end     end end imshow(img,'InitialMagnification',300);

Estas imágenes son mucho menos ruidosas.

Argumentos de entrada

contraer todo

Datos de predictor, especificados como una tabla o matriz numérica.np Las filas corresponden a observaciones individuales y las columnas corresponden a variables predictoras individuales. Si es una tabla, todas sus variables deben ser vectores numéricos.X

Tipos de datos: single | double | table

Número de entidades que se extraen de los datos del predictor, especificadas como un entero positivo.

sparsefilt almacena una matriz de peso a-by-Transform en.pqMdl.TransformWeights Por lo tanto, establecer valores muy grandes para puede resultar en un mayor consumo de memoria y un mayor tiempo de cálculo.q

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: Estandariza los Datos predictores y aplica una penalización de la matriz de peso de transformación.'Standardize',true,'Lambda',11

Número máximo de iteraciones, especificadas como el par separado por comas y que consta de un entero positivo.'IterationLimit'

Ejemplo: 'IterationLimit',1e6

Tipos de datos: single | double

Nivel de verbosidad para monitorear la convergencia del algoritmo, especificado como el par separado por comas que consta de y un valor en esta tabla.'VerbosityLevel'

ValorDescripción
0sparsefilt no muestra información de convergencia en la línea de mandatos.
Entero positivosparsefilt muestra información de convergencia en la línea de mandatos.

Información de convergencia

encabezadoSignificado
FUN VALUEValor de la función objetiva.
NORM GRADNorma del gradiente de la función objetiva.
NORM STEPNorma del paso iterativo, es decir, la distancia entre el punto anterior y el punto actual.
CURVsignifica que se satisface la condición débil de Wolfe.OK Esta condición es una combinación de una disminución suficiente de la función objetiva y una condición de curvatura.
GAMMAProducto interno del paso multiplicado por la diferencia de gradiente, dividido por el producto interno de la diferencia de gradiente consigo mismo. La diferencia de degradado es el degradado en el punto actual menos el degradado en el punto anterior. Proporciona información de diagnóstico sobre la curvatura de la función objetiva.
ALPHAMultiplicador de dirección de paso, que difiere de cuando el algoritmo realizó una búsqueda de línea.1
ACCEPTsignifica que el algoritmo encontró un paso aceptable a tomar.YES

Ejemplo: 'VerbosityLevel',1

Tipos de datos: single | double

L2 valor del coeficiente de regularización para la matriz de peso de transformación, especificado como el par separado por comas que consta de un escalar numérico positivo y un resultado.'Lambda' Si especifica, el valor predeterminado, no hay ningún término de regularización en la función objetiva.0

Ejemplo: 'Lambda',0.1

Tipos de datos: single | double

Marque para estandarizar los datos del predictor, especificados como el par separado por comas que consiste en y () o ().'Standardize'true1false0

Si es, entonces:Standardizetrue

  • sparsefilt centra y escala cada columna de los Datos predictores () por la media de la columna y la desviación estándar, respectivamente.X

  • sparsefilt Extrae nuevas características mediante la matriz predictora estandarizada y almacena los medios de las variables predictoras y las desviaciones estándar en las propiedades y de.MuSigmaMdl

Ejemplo: 'Standardize',true

Tipos de datos: logical

Ponderaciones de transformación que inicializan la optimización, especificadas como el par separado por comas y que consta de una matriz numérica. debe ser el número de columnas o variables en y es el valor de.'InitialTransformWeights'pqpXqq

Sugerencia

Puede seguir optimizando una matriz de ponderación de transformación devuelta anteriormente pasándolo como un valor inicial en otra llamada a sparsefilt. El objeto de modelo de salida almacena una matriz de ponderación de transformación aprendida en la propiedad.MdlTransformWeights

Ejemplo: 'InitialTransformWeights',Mdl.TransformWeights

Tipos de datos: single | double

Tolerancia de convergencia relativa en la norma de degradado, especificada como el par separado por comas que consta de un escalar numérico positivo.'GradientTolerance' Este degradado es el degradado de la función objetiva.

Ejemplo: 'GradientTolerance',1e-4

Tipos de datos: single | double

Tolerancia de convergencia absoluta en el tamaño del paso, especificada como el par separado por comas que consta de un escalar numérico positivo.'StepTolerance'

Ejemplo: 'StepTolerance',1e-4

Tipos de datos: single | double

Argumentos de salida

contraer todo

Modelo de filtrado disperso aprendido, devuelto como un objeto de modelo.SparseFiltering

Para acceder a las propiedades de, utilice la notación de puntos.Mdl Por ejemplo:

  • Para acceder a los pesos de transformación aprendidos, utilice.Mdl.TransformWeights

  • Para acceder a la estructura de información de empalme, utilice.Mdl.FitInfo

Para encontrar los coeficientes de filtrado dispersos para los nuevos datos, utilice la función.transform

Algoritmos

La función crea una transformación no lineal de entidades de entrada en entidades de salida.sparsefilt La transformación se basa en la optimización de una función objetiva que fomenta la representación de cada ejemplo por el mínimo de características de salida posibles, mientras que al mismo tiempo mantiene las características de salida igualmente activas en todos los ejemplos.

Para obtener más información, consulte.Algoritmo de filtrado disperso

Introducido en R2017a