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.

sequentialfs

Selección secuencial de características

Sintaxis

inmodel = sequentialfs(fun,X,y)
inmodel = sequentialfs(fun,X,Y,Z,...)
[inmodel,history] = sequentialfs(fun,X,...)
[] = sequentialfs(...,param1,val1,param2,val2,...)

Descripción

inmodel = sequentialfs(fun,X,y) selecciona un subconjunto de entidades de la matriz de datos que mejor predice los datos mediante la selección secuencial de entidades hasta que no haya ninguna mejora en la predicción.Xy Filas de corresponden a observaciones; columnas corresponden a variables o características. es un vector de columna de valores de respuesta o etiquetas de clase para cada observación en. y debe tener el mismo número de filas. es un identificador de función para una función que define el criterio utilizado para seleccionar entidades y determinar cuándo detenerse.XyXXyfun La salida es un vector lógico que indica qué entidades se eligen finalmente.inmodel

A partir de un conjunto de entidades vacío, crea subconjuntos de entidades candidatas añadiendo secuencialmente cada una de las entidades aún no seleccionadas.sequentialfs Para cada subconjunto de características candidatas, realiza una validación cruzada de 10 veces al llamar repetidamente con diferentes subconjuntos de entrenamiento y, y, y los subconjuntos de prueba de y, y, como sigue:sequentialfsfunXyXTRAINytrainXyXTESTytest

criterion = fun(XTRAIN,ytrain,XTEST,ytest)

y contienen el mismo subconjunto de filas y, mientras, contienen el subconjunto complementario de filas. y contienen los datos tomados de las columnas que corresponden al conjunto de características candidatas actuales.XTRAINytrainXYXTESTytestXTRAINXTESTX

Cada vez que se llama, debe devolver un valor escalar.funcriterion Normalmente, utiliza y para entrenar o ajustar un modelo, a continuación, predice los valores para el uso de ese modelo y, finalmente, devuelve alguna medida de distancia, ofunXTRAINytrainXTEST , de los valores previstos de.Pérdidaytest En el cálculo de validación cruzada de un conjunto de características candidatas determinado, suma los valores devueltos por y divide esa suma por el número total de observaciones de prueba.sequentialfsfun A continuación, utiliza ese valor medio para evaluar cada subconjunto de entidades candidatas.

Las medidas de pérdida típicas incluyen la suma de errores cuadrados para los modelos de regresión (calcula el error cuadrático medio en este caso) y el número de observaciones mal clasificadas para los modelos de clasificación (calcula la tasa de clasificación errónea en este caso).sequentialfssequentialfs

Nota

divide la suma de los valores devueltos en todos los conjuntos de pruebas por el número total de observaciones de prueba.sequentialfsfun En consecuencia, no debe dividir su valor de salida por el número de observaciones de ensayo.fun

Después de calcular los valores de media para cada subconjunto de entidades candidatas, elige el subconjunto de características candidatas que minimiza el valor del criterio medio.criterionsequentialfs Este proceso continúa hasta que la adición de más características no disminuye el criterio.

inmodel = sequentialfs(fun,X,Y,Z,...) permite cualquier número de variables de entrada,,,.... elige las características (columnas) sólo de, pero de lo contrario no impone ninguna interpretación,,,....XYZsequentialfsXXYZ Todas las entradas de datos, ya sean vectores de columna o matrices, deben tener el mismo número de filas. llamadas con los subconjuntos de entrenamiento y prueba de,,,... como sigue:sequentialfsfunXYZ

criterion = fun(XTRAIN,YTRAIN,ZTRAIN,...,                 XTEST,YTEST,ZTEST,...)

Crea...... seleccionando subconjuntos de las filas de,,,.... debe devolver un valor escalar, pero puede calcular ese valor de cualquier manera.sequentialfsXTRAINYTRAINZTRAINXTESTYTESTZTESTXYZfuncriterion Los elementos del vector lógico corresponden a columnas de e indican qué entidades se eligen finalmente.inmodelX

[inmodel,history] = sequentialfs(fun,X,...) Devuelve información sobre qué característica se elige en cada paso. es una estructura escalar con los siguientes campos:history

  • — Un vector que contiene los valores de criterio calculados en cada paso.Crit

  • — Una matriz lógica en la que la fila indica las entidades seleccionadas en el paso.Inii

[] = sequentialfs(...,param1,val1,param2,val2,...) especifica los pares de nombre/valor de parámetro opcionales de la tabla siguiente.

ParámetroValor
'cv'

El método de validación utilizado para calcular el criterio para cada subconjunto de entidades candidatas.

  • Cuando el valor es un entero positivo, se utiliza-se dobla la validación cruzada sin estratificación.ksequentialfsk

  • Cuando el valor es un objeto de la cvpartition clase, se pueden especificar otras formas de validación cruzada.

  • Cuando el valor es, los datos originales se pasan como datos de entrenamiento y de prueba para calcular el criterio.'resubstitution'fun

  • Cuando el valor es, llama como, sin separar los conjuntos de prueba y entrenamiento.'none'sequentialfsfuncriterion = fun(X,Y,Z,...)

El valor predeterminado es, es decir, la validación cruzada de 10 veces sin estratificación.10

Los llamados utilizar una función que implemente un algoritmo de aprendizaje.métodos de envolturafun Estos métodos suelen aplicar la validación cruzada para seleccionar entidades. Los llamados utilizar una función que mide las características de los datos (como la correlación) para seleccionar entidades.métodos de filtrofun

'mcreps'

Un entero positivo que indica el número de repeticiones de Montecarlo para la validación cruzada. El valor predeterminado es.1 El valor debe ser si el valor de is o.1'cv''resubstitution''none'

'direction'

La dirección de la búsqueda secuencial. El valor predeterminado es.'forward' Un valor de especifica un conjunto candidato inicial que incluye todas las entidades y un algoritmo que quita las entidades secuencialmente hasta que aumenta el criterio.'backward'

'keepin'

Un vector lógico o un vector de números de columna que especifican características que deben incluirse. El valor predeterminado está vacío.

'keepout'

Un vector lógico o un vector de números de columna que especifican entidades que deben excluirse. El valor predeterminado está vacío.

'nfeatures'

El número de características en las que debe detenerse. incluye exactamente estas muchas características.sequentialfsinmodel El valor predeterminado está vacío, lo que indica que debe detenerse cuando se encuentra un mínimo local del criterio.sequentialfs Un valor no vacío invalida los valores de y en.'MaxIter''TolFun''options'

'nullmodel'

Un valor lógico, que indica si el modelo nulo (que no contiene entidades de) debe incluirse en la selección de características y en la salida.Xhistory El valor predeterminado es.false

'options'

Estructura de opciones para el algoritmo de búsqueda secuencial iterativo, creado por.statset

utiliza los siguientes parámetros:sequentialfsstatset

  • — Cantidad de información mostrada por el algoritmo.Display El valor predeterminado es.'off'

  • — Número máximo de iteraciones permitidas.MaxIter El valor predeterminado es.Inf

  • — Tolerancia de terminación para el valor de la función objetiva.TolFun El valor predeterminado es if; Si es.1e-6'direction''forward'0'direction''backward'

  • : Utilice tolerancias de función objetivas absolutas o relativas.TolTypeFun El valor predeterminado es.'rel'

  • : Se configura para que se calcule en paralelo.UseParalleltrue El valor predeterminado es.false

  • : Se configura para que se calcule en paralelo de forma reproducible.UseSubstreamstrue El valor predeterminado es.false Para calcular reproduciblemente, establezca un tipo que permita subsecuencias: o.Streams'mlfg6331_64''mrg32k3a'

  • — Un objeto o matriz de celdas que consta de un objeto de este tipo.StreamsRandStream Si no se especifica, utiliza la secuencia predeterminada.Streamssequentialfs

Para calcular en paralelo, es necesario.Parallel Computing Toolbox™

Ejemplos

Realice una selección secuencial de funciones para clasificar las características ruidosas:

load fisheriris; X = randn(150,10); X(:,[1 3 5 7 ])= meas; y = species;  c = cvpartition(y,'k',10); opts = statset('display','iter'); fun = @(XT,yT,Xt,yt)...       (sum(~strcmp(yt,classify(Xt,XT,yT,'quadratic'))));  [fs,history] = sequentialfs(fun,X,y,'cv',c,'options',opts)  Start forward sequential feature selection: Initial columns included: none Columns that cannot be included: none Step 1, added column 7, criterion value 0.04 Step 2, added column 5, criterion value 0.0266667 Final columns included:  5 7   fs =      0  0  0  0  1  0  1  0  0  0 history =        In: [2x10 logical]     Crit: [0.0400 0.0267]  history.In ans =      0  0  0  0  0  0  1  0  0  0      0  0  0  0  1  0  1  0  0  0 

Capacidades ampliadas

Introducido en R2008a