¿Cómo realizo la selección de funciones?

El método más simple es probablemente la Selección de características univariadas, donde se aplica una prueba estadística a cada característica individualmente. Solo conserva las mejores características de acuerdo con los puntajes de resultados de la prueba; Consulte la documentación de scikit-learn para ver la lista de las pruebas estadísticas más utilizadas:

http://scikit-learn.org/modules/…

Un método más robusto pero más de “fuerza bruta” donde el impacto de las características combinadas se evalúan juntas se denomina “Eliminación de características recursivas”:

  1. Primero, capacite a un modelo con todas las características y evalúe su desempeño en los datos retenidos.
  2. Luego deje caer, digamos las características 10% más débiles (por ejemplo, la característica con coeficientes absolutos mínimos en un modelo lineal) y vuelva a entrenar las características restantes.
  3. Itere hasta que observe una fuerte caída en la precisión predictiva del modelo.

Aquí hay un ejemplo, nuevamente usando scikit-learn:

http://scikit-learn.org/auto_exa…

Y aquí está la implementación:

https://github.com/scikit-learn/…

Si desea entrenar un modelo (generalizado) ya sea para clasificaciones (p. Ej., Regresión logística) o regresión (p. Ej., Regresión de cresta, también conocida como mínimo cuadrado penalizado l2), debe considerar agregar un regularizador L1 que promueva la selección de características * mientras * aprendizaje: coeficiente para las características más débiles se establece en cero por el algoritmo de aprendizaje en sí. El nombre habitual para el método lineal penalizado L1 es “el lazo”:

http://scikit-learn.org/modules/…

El valor óptimo de la fuerza del regularizador se puede encontrar mediante validación cruzada. Para hacer esto de manera eficiente, puede usar el método LARS como se describe aquí:

http://scikit-learn.org/modules/…

LARS permite calcular los valores de todos los coeficientes para diferentes valores de la fuerza de penalización (también conocida como la ruta de regularización) de manera muy eficiente:

http://scikit-learn.org/auto_exa…

También es posible calcular una ruta de regularización de manera eficiente con otros algoritmos como Descenso de coordenadas (y quizás también Descenso de gradiente estocástico) utilizando el truco “reinicios en caliente”:

http://scikit-learn.org/auto_exa…

Para tener en cuenta la inestabilidad de Lasso cuando se trata de características altamente correlacionadas, debe considerar combinar la penalización L1 con L2 (la penalización compuesta se llama Elastic Net) que aplastará globalmente los coeficientes pero evitará poner a cero aleatoriamente uno de los 2 relevantes altamente correlacionados caracteristicas:

http://scikit-learn.org/auto_exa…

La estabilidad en los modelos de selección de características para el Lasso puro también se puede lograr mediante el arranque de varios modelos de Lazo en los pliegues del conjunto de datos y seleccionando la intersección (o unión, no estoy seguro) de las características que no son de edición cero. Este método se llama BoLasso y aún no se implementa en el scikit (siempre se agradece la solicitud de extracción): el documento de referencia es:

http://www.di.ens.fr/~fbach/fbac…

Otras formas de “arreglar el lazo” (tomado del tutorial de F. Bach NIPS 2009):

  • Lazo adaptativo (Zou, 2006),
  • Lazo relajado (Meinshausen, 2008),
  • umbralización (Lounici, 2008),
  • selección de estabilidad (Meinshausen Buhlmann, 2008), Wasserman y Roeder (2009)

Editar : la selección de estabilidad se ha implementado en scikit-learn más recientemente.

Finalmente, si usted está en un estado de ánimo bayesiano, los antecedentes inteligentes como el utilizado en la Determinación automática de relevancia (ARD) deberían brindarle resultados similares:

http://scikit-learn.org/modules/…

Oliver y Shameek ya han dado respuestas bastante completas, así que haré una descripción general de alto nivel de la selección de funciones

La comunidad de aprendizaje automático clasifica la selección de características en 3 categorías diferentes: métodos de filtro, métodos basados ​​en envoltorios y métodos integrados.

Métodos de filtro
Estos incluyen una prueba estadística simple para determinar si una característica es estadísticamente significativa, por ejemplo, el valor de p en la prueba para determinar si la hipótesis nula debe ser aceptada y la característica rechazada. Esto no tiene en cuenta las interacciones de las funciones y, por lo general, no es una forma muy recomendada de hacer la selección de funciones, ya que puede conducir a la pérdida de información.

Métodos basados ​​en envoltorios
Esto implica el uso de un algoritmo de aprendizaje para informar el subconjunto óptimo de características. Un ejemplo sería cómo RandomForest es ampliamente utilizado por la comunidad competitiva de ciencia de datos para determinar la importancia de las características al observar la ganancia de información. Esto puede proporcionar una visión general bastante rápida y sucia de las características importantes que pueden ayudar a proporcionar una validación informal de las características de ingeniería. Los modelos basados ​​en árboles como RandomForest también son robustos frente a problemas como la multicolinealidad, valores perdidos, valores atípicos, etc., además de poder descubrir algunas interacciones entre características. Sin embargo, esto puede ser bastante costoso computacionalmente.

Métodos Embebidos
Esto implica llevar a cabo la selección de características y el ajuste del modelo al mismo tiempo. Algunos métodos incluyen algoritmos codiciosos como la selección hacia adelante y hacia atrás, así como modelos basados ​​en Lasso (L1) y Elastic Net (L1 + L2). Esto probablemente requerirá algo de experiencia para saber dónde detenerse para la selección hacia atrás y hacia adelante, así como para ajustar los parámetros para los modelos basados ​​en regularización.

Los métodos de selección de características pueden clasificarse como filtros y envoltorios. Los métodos basados ​​en pruebas estadísticas mencionadas por Olivier Grisel son filtros. Uno puede usar Weka para obtener dichos rankings por métodos de Infogain, Chisquare, CFS. Los envoltorios, por otro lado, pueden usar un algoritmo de aprendizaje con un clasificador como SVM o bosques aleatorios para buscar e informar subconjuntos de características óptimas. Por ej. uno puede usar un algoritmo genético (GA) para construir una población de soluciones aleatorias (subconjuntos de características). Cada uno de estos subconjuntos genera internamente un conjunto de datos reducido que se puede alimentar a SVM que devuelve una precisión de clasificación de validación cruzada (CVA) de 10 veces. El CVA de 10 veces puede estar asociado con la función de condición física del subconjunto correspondiente. Después de que se construye la población, GA toma el control y sigue mejorando el panorama de la condición física. Después de varias iteraciones, uno puede esperar obtener un subconjunto de características óptimo.

More Interesting

¿Dónde puedo encontrar los mejores tutoriales de aprendizaje automático como principiante?

¿Qué es más poderoso, la red neuronal convolucional o la red artificial? ¿Cuál es más conveniente de usar?

¿Cuáles son algunos excelentes boletines semanales de Data Science?

¿Qué piensa Yoshua Bengio sobre la idea de un algoritmo de aprendizaje único?

¿Por qué los investigadores de IA se centran solo en problemas de regresión y clasificación?

¿Qué es una explicación intuitiva del impulso en el entrenamiento de redes neuronales?

¿Es necesario un MS o PhD en Machine Learning para trabajar en este campo en alguna empresa?

¿Cómo puede beneficiarse el sector financiero con el uso de LD y AI?

¿Cómo podemos interpretar el coeficiente para cierta variable independiente en regresión lineal simple y para el mismo en regresión lineal múltiple?

¿Cuál es la mejor manera para que un principiante completo aprenda el aprendizaje automático?

¿Qué tan importante es la optimización de hiperparámetros en los modelos gráficos bayesianos, como la asignación de Dirichlet latente?

¿Cuáles son los conceptos básicos de los campos aleatorios condicionales?

¿Qué medida de evaluación fuera de línea para los sistemas de recomendación se correlaciona mejor con los resultados de la prueba AB en línea?

¿Es un SVM o un clasificador MaxEnt apropiado para este escenario de clasificación de texto y por qué?

¿En qué debería concentrarme después de aprender el aprendizaje automático si no estoy interesado en el aprendizaje profundo?