2012-09-17 8 views
13

Esto es más una pregunta "teórica". Estoy trabajando con el paquete scikit-learn para realizar algunas tareas NLP. Sklearn proporciona muchos métodos para realizar tanto la selección de funciones como la configuración de los parámetros de un modelo. Me pregunto qué debería hacer primero.Qué hacer primero: ¿Selección de características o configuración de parámetros del modelo?

Si utilizo univariate feature selection, es bastante obvio que primero debo seleccionar las características y, con las características seleccionadas, luego ajustar los parámetros del estimador.

¿Pero y si quiero usar recursive feature elimination? ¿Debo primero configurar los parámetros con grid search usando TODAS las características originales y solo entonces realizar la selección de características? ¿O tal vez debería seleccionar las características primero (con los parámetros predeterminados del estimador) y luego establecer los parámetros con las características seleccionadas?

Gracias de antemano por cualquier ayuda que pueda darme.

EDITAR

Estoy teniendo más o menos el mismo problema planteado here. Para ese momento, no había una solución para eso. ¿Alguien sabe si existe uno ahora?

Respuesta

16

Personalmente creo que RFE es excesivo y demasiado caro en la mayoría de los casos. Si desea seleccionar una característica en modelos lineales, utilice la selección de funciones univariadas, por ejemplo con pruebas chi2 o modelos normalizados L1 o L1 + L2 con parámetros de regularización buscados en la grilla (generalmente llamados C o alpha en modelos sklearn).

Para problemas altamente no lineales con una gran cantidad de muestras que debe tratar RandomForestClassifier, ExtraTreesClassifier o GBRT modelos y la red buscado parámetros de selección (posiblemente utilizando estimaciones de puntuación fuera de banda) y utilizar el interruptor compute_importances para encontrar una clasificación de características de importancia y utilízalo para la selección de características.

Para problemas altamente no lineales con pocas muestras, no creo que haya una solución. Debe estar haciendo neurociencias :)

+0

Gracias por la sugerencia. Como solo planeo usar LogistRegression y SVC, creo que chi2 y/o L1 serían suficientes. – feralvam

Cuestiones relacionadas