Selección de características con bosques aleatorios


16

Tengo un conjunto de datos con variables financieras en su mayoría (120 características, ejemplos de 4k) que en su mayoría están altamente correlacionadas y son muy ruidosas (indicadores técnicos, por ejemplo), por lo que me gustaría seleccionar un máximo de 20-30 para su uso posterior con entrenamiento modelo (clasificación binaria - aumentar Disminuir).

Estaba pensando en usar bosques aleatorios para la clasificación de características. ¿Es una buena idea usarlos recursivamente? Por ejemplo, supongamos que en la primera ronda elimino el peor 20%, la segunda también, y así sucesivamente hasta obtener la cantidad deseada de funciones. ¿Debo usar validación cruzada con RF? (Es intuitivo para mí no usar CV porque eso es más o menos lo que RF ya hace).

Además, si voy con bosques aleatorios, ¿debería usarlos como clasificadores para el binario o el regresor para el aumento / disminución real para obtener las características importantes?

Por cierto, los modelos que me gustaría probar después de la selección de características son: SVM, redes neuronales, regresiones ponderadas localmente y bosque aleatorio. Estoy trabajando principalmente en Python.


2
quisiera conectarse para intercambiar ideas. Estoy trabajando en algo similar
user670186

¿Hay alguna razón por la cual nadie sugirió usar el built-inatributo de RandomForestClassifier en sklearnllamado feature_importances_...? Lo verás en el enlace.
Candic3

Tenga cuidado porque multicollinearitypuede distorsionar la importancia de las características y la selección de características. échale un vistazo aquí
Candic3

Tenga cuidado con los algoritmos predeterminados: parrt.cs.usfca.edu/doc/rf-importance/index.html
Tim

Respuestas:


12

Para la selección de características, necesitamos una función de puntuación , así como un método de búsqueda para optimizar la función de puntuación.

Puede usar RF como método de clasificación de características si define algún puntaje de importancia relevante. RF seleccionará características basadas en aleatorio con método de reemplazo y agrupará cada subconjunto en un subespacio separado (llamado subespacio aleatorio). Una función de puntuación de importancia podría basarse en asignar la precisión de cada árbol para cada característica en ese subespacio aleatorio. Luego, haces esto para cada árbol por separado. Como la fuente de generación de los subespacios es aleatoria, puede establecer un umbral para calcular el puntaje de importancia.

Resumen:

Paso 1 : Si la característica X2 aparece en el 25% de los árboles, puntúelo. De lo contrario, no considere clasificar la función porque no tenemos suficiente información sobre su rendimiento.

Paso 2 : Ahora, asigne la puntuación de rendimiento de cada árbol en el que X2 aparece a X2 y promedie la puntuación. Por ejemplo: perf (Tree1) = 0.85 perf (Tree2) = 0.70 perf (Tree3) = 0.30

Entonces, la importancia de la característica X2 = (0.85 + 0.70 + 0.30) / 3 = 0.6167

Puede considerar una configuración más avanzada al incluir la profundidad dividida de la función o el valor de ganancia de información en el árbol de decisión. Puede haber muchas formas de diseñar una función de puntuación basada en árboles de decisión y RF.

En cuanto al método de búsqueda , su método recursivo parece razonable como una forma de seleccionar los que están mejor clasificados.

Finalmente, puede usar RF como un clasificador o un modelo de regresión al seleccionar sus características, ya que ambas le proporcionarían una puntuación de rendimiento. El puntaje es indicativo, ya que se basa en las muestras OOB de la bolsa y no puede considerar la validación cruzada en una configuración más simple.


Gracias por el aporte. Quería señalar eso (0.85+0.70+0.30)/3 = 0.6167.
Hendy

55
Si está trabajando con python, puede usar directamente la importancia variable calculada en sklearn al llamar a un bosque aleatorio.
Scratch

5

Tengo un conjunto de datos con variables financieras en su mayoría (120 características, ejemplos de 4k) que en su mayoría están altamente correlacionadas y son muy ruidosas (indicadores técnicos, por ejemplo), por lo que me gustaría seleccionar un máximo de 20-30 para su uso posterior con entrenamiento modelo (clasificación binaria - aumentar Disminuir).

Los ejemplos de 4k realmente no son suficientes para estimar algo muy sofisticado: debe usar los modelos más simples posibles (regresión lineal / logística, svm lineal) y un pequeño número de variables

Dado que sus datos son ruidosos y correlacionados, PCA es probablemente su mejor opción [está identificando efectivamente las señales comunes promediando sobre los indicadores individuales]

La regularización L2 (para un modelo lineal) también ayudará a promediar el ruido [por ejemplo, si tiene n copias ruidosas de la misma señal, la regularización l2 fomentará que los pesos sean iguales, promediando esas n variables]

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.