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.

Regularice un clasificador de análisis discriminante

En este ejemplo se muestra cómo crear un modelo más robusto y sencillo al intentar quitar los predictores sin perjudicar la potencia predictiva del modelo. Esto es especialmente importante cuando tiene muchos predictores en sus datos. El análisis discriminante lineal utiliza los dos parámetros de regularización, gamma y Delta (véase), para identificar y eliminar predictores redundantes.Más acerca de El método ayuda a identificar la configuración adecuada para estos parámetros.cvshrink

Cargue datos y cree un clasificador.

Cree un clasificador de análisis discriminante lineal para los datos.ovariancancer Establezca los argumentos de par nombre-valor para mantener el modelo resultante razonablemente pequeño.SaveMemoryFillCoeffs Para facilitar la computación, en este ejemplo se utiliza un subconjunto aleatorio de aproximadamente un tercio de los predictores para entrenar el clasificador.

load ovariancancer rng(1); % For reproducibility numPred = size(obs,2); obs = obs(:,randsample(numPred,ceil(numPred/3))); Mdl = fitcdiscr(obs,grp,'SaveMemory','on','FillCoeffs','off'); 

Cross valida el clasificador.

Utilice 25 niveles de y 25 niveles de para buscar buenos parámetros.GammaDelta Esta búsqueda consume mucho tiempo. Se establece en para ver el progreso.Verbose1

[err,gamma,delta,numpred] = cvshrink(Mdl,...     'NumGamma',24,'NumDelta',24,'Verbose',1); 
Done building cross-validated model. Processing Gamma step 1 out of 25. Processing Gamma step 2 out of 25. Processing Gamma step 3 out of 25. Processing Gamma step 4 out of 25. Processing Gamma step 5 out of 25. Processing Gamma step 6 out of 25. Processing Gamma step 7 out of 25. Processing Gamma step 8 out of 25. Processing Gamma step 9 out of 25. Processing Gamma step 10 out of 25. Processing Gamma step 11 out of 25. Processing Gamma step 12 out of 25. Processing Gamma step 13 out of 25. Processing Gamma step 14 out of 25. Processing Gamma step 15 out of 25. Processing Gamma step 16 out of 25. Processing Gamma step 17 out of 25. Processing Gamma step 18 out of 25. Processing Gamma step 19 out of 25. Processing Gamma step 20 out of 25. Processing Gamma step 21 out of 25. Processing Gamma step 22 out of 25. Processing Gamma step 23 out of 25. Processing Gamma step 24 out of 25. Processing Gamma step 25 out of 25. 

Examine la calidad de los clasificadores regularizados.

Graficar el número de predictores contra el error.

figure; plot(err,numpred,'k.') xlabel('Error rate'); ylabel('Number of predictors'); 

Examine la parte inferior izquierda de la parcela más de cerca.

axis([0 .1 0 1000]) 

Hay un equilibrio claro entre el menor número de predictores y el error más bajo.

Elija un equilibrio óptimo entre el tamaño del modelo y la precisión.

Varios pares de y valores producen sobre el mismo error mínimo.GammaDelta Mostrar los índices de estos pares y sus valores.

minerr = min(min(err)) [p,q] = find(err < minerr + 1e-4); % Subscripts of err producing minimal error numel(p) idx = sub2ind(size(delta),p,q); % Convert from subscripts to linear indices [gamma(p) delta(idx)] 
 minerr =      0.0139   ans =       4   ans =      0.7202    0.1145     0.7602    0.1131     0.8001    0.1128     0.8001    0.1410  

Estos puntos tienen tan solo un 20% de los predictores totales que tienen coeficientes distintos de cero en el modelo.

numpred(idx)/ceil(numPred/3)*100 
 ans =     39.8051    38.9805    36.8066    28.7856  

Para reducir aún más el número de predictores, debe aceptar tasas de error más grandes. Por ejemplo, para elegir el y que dan la tasa de error más baja con 200 o menos predictores.GammaDelta

low200 = min(min(err(numpred <= 200))); lownum = min(min(numpred(err == low200))); [low200 lownum] 
 ans =      0.0185  173.0000  

Necesita 195 predictores para lograr una tasa de error de 0,0185, y esta es la tasa de error más baja entre los que tienen 200 predictores o menos.

Visualice el y que logre este error/número de predictores.GammaDelta

[r,s] = find((err == low200) & (numpred == lownum)); [gamma(r); delta(r,s)] 
 ans =      0.6403     0.2399  

Establezca los parámetros de regularización.

Para establecer el clasificador con estos valores y, utilice la notación de puntos.GammaDelta

Mdl.Gamma = gamma(r); Mdl.Delta = delta(r,s); 

Gráfico de mapa térmico

Para comparar el cálculo con el de Guo, Hastie y Tibshirani, trace mapas de calor de error y número de predictores en contra y el índice del parámetro.cvshrink[1]GammaDelta (El rango de parámetros depende del valor del parámetro.DeltaGamma Por lo tanto, para obtener una gráfica rectangular, utilice el índice, no el propio parámetro.)Delta

% Create the Delta index matrix indx = repmat(1:size(delta,2),size(delta,1),1); figure subplot(1,2,1) imagesc(err); colorbar; colormap('jet') title 'Classification error'; xlabel 'Delta index'; ylabel 'Gamma index';  subplot(1,2,2) imagesc(numpred); colorbar; title 'Number of predictors in the model'; xlabel 'Delta index' ; ylabel 'Gamma index' ; 

Verá el mejor error de clasificación cuando es pequeño, pero el menor número de predictores cuando es grande.DeltaDelta

Referencias

[1] Guo, Y., T. Hastie, and R. Tibshirani. Regularized Discriminant Analysis and Its Application in Microarray. Biostatistics, Vol. 8, No. 1, pp. 86–100, 2007.

Consulte también

Funciones

Objetos

Temas relacionados