python - run - scikit voting classifier
¿Cómo ajustar los parámetros en Random Forest usando Scikit Learn? (4)
class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=''gini'', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=''auto'', max_leaf_nodes=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)
Estoy usando un modelo de bosque aleatorio con 9 muestras y alrededor de 7000 atributos. De estas muestras, hay 3 categorías que mi clasificador reconoce.
Sé que esto está lejos de las condiciones ideales, pero estoy tratando de averiguar qué atributos son los más importantes en las predicciones de funciones. ¿Qué parámetros serían los mejores para optimizar la importancia de la función?
Intenté diferentes n_estimators
y noté que la cantidad de "características significativas" (es decir, valores distintos de cero en la matriz feature_importances_
) aumentó drásticamente.
He leído la documentación pero si alguien tiene alguna experiencia en esto, me gustaría saber qué parámetros son los mejores para sintonizar y una breve explicación de por qué.
Las partes cruciales suelen ser tres elementos:
- número de estimadores - usualmente más grande es el bosque, mejor, hay pocas posibilidades de sobreajuste aquí
- profundidad máxima de cada árbol (por defecto ninguno, lo que lleva al árbol completo) - la reducción de la profundidad máxima ayuda a luchar con el sobreajuste
- características máximas por división (sqrt (d) predeterminado): es posible que juegue un poco, ya que altera significativamente el comportamiento de todo el árbol. La heurística sqrt suele ser un buen punto de partida, pero un punto dulce real podría ser otro
Desde mi experiencia, hay tres características que vale la pena explorar con el sklearn RandomForestClassifier, en orden de importancia:
n_estimators
max_features
criterion
n_estimators
realmente no vale la pena optimizarlo. Cuantos más estimadores le dé, mejor será. 500 o 1000 es generalmente suficiente.
max_features
vale la pena explorar para muchos valores diferentes. Puede tener un gran impacto en el comportamiento de la RF porque decide cuántas características considera cada árbol en la RF en cada división.
criterion
puede tener un impacto pequeño, pero generalmente el valor predeterminado es correcto. Si tienes tiempo, pruébalo.
Asegúrese de utilizar sklearn''s GridSearch (preferiblemente GridSearchCV, pero su tamaño de conjunto de datos es demasiado pequeño) al probar estos parámetros.
Si entiendo tu pregunta correctamente, sin embargo, ¿solo tienes 9 muestras y 3 clases? Presumiblemente 3 muestras por clase? Es muy, muy probable que su RF se sobreponga con esa pequeña cantidad de datos, a menos que sean buenos, registros representativos.
Este maravilloso artículo tiene una explicación detallada de los parámetros ajustables, cómo hacer un seguimiento de la relación entre rendimiento y velocidad, algunos consejos prácticos y cómo realizar una búsqueda en cuadrícula.
n_estimators
es bueno, como dijeron otros. También es bueno para lidiar con el sobreajuste al aumentarlo.
Pero creo que min_sample_split
también es útil cuando se trata de sobreajuste en un conjunto de datos pequeño pero de grandes características.