Optimización del rendimiento
Estrategias de ajuste de hiperparámetros
1. Búsqueda en cuadrícula con validación cruzada (Grid Search Cross-Validation)
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [5, 10, 15, None],
'min_samples_split': [2, 5, 10],
'min_samples_leaf': [1, 2, 4]
}
rf_model = RandomForestClassifier(random_state=42)
grid_search = GridSearchCV(
estimator=rf_model,
param_grid=param_grid,
cv=5,
scoring='accuracy',
n_jobs=-1
)
grid_search.fit(X_train, y_train)
best_params = grid_search.best_params_
Impacto de los hiperparámetros
Hiperparámetro |
Impacto en el modelo |
n_estimators |
Número de árboles |
max_depth |
Complejidad del árbol |
min_samples_split |
Previene el sobreajuste |
min_samples_leaf |
Reduce la varianza del modelo |
2. Técnicas de optimización avanzadas
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint, uniform
random_param_dist = {
'n_estimators': randint(50, 500),
'max_depth': [None] + list(randint(10, 100).rvs(5)),
'min_samples_split': randint(2, 20),
'max_features': uniform(0.1, 0.9)
}
random_search = RandomizedSearchCV(
estimator=rf_model,
param_distributions=random_param_dist,
n_iter=100,
cv=5,
scoring='accuracy',
n_jobs=-1
)
random_search.fit(X_train, y_train)
Flujo de trabajo de monitoreo del rendimiento
graph TD
A[Initial Model] --> B[Hyperparameter Tuning]
B --> C{Performance Improved?}
C -->|Yes| D[Validate Model]
C -->|No| E[Adjust Strategy]
D --> F[Deploy Model]
E --> B
3. Técnicas de conjunto (Ensemble) y refuerzo (Boosting)
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.model_selection import cross_val_score
## Voting Classifier
from sklearn.ensemble import VotingClassifier
rf_classifier = RandomForestClassifier(random_state=42)
gb_classifier = GradientBoostingClassifier(random_state=42)
voting_classifier = VotingClassifier(
estimators=[
('rf', rf_classifier),
('gb', gb_classifier)
],
voting='soft'
)
## Cross-validation
cv_scores = cross_val_score(
voting_classifier,
X_train,
y_train,
cv=5
)
Técnicas de optimización del rendimiento
- Selección de características
- Reducción de dimensionalidad
- Métodos de conjunto
- Regularización
- Manejo del desequilibrio de clases
Eficiencia de memoria y computación
## Use n_jobs for parallel processing
rf_model = RandomForestClassifier(
n_estimators=100,
n_jobs=-1, ## Utilize all CPU cores
random_state=42
)
Métricas clave de optimización
Métrica |
Propósito |
Precisión (Accuracy) |
Rendimiento general del modelo |
Precisión (Precision) |
Precisión de las predicciones positivas |
Exhaustividad (Recall) |
Capacidad de encontrar todas las instancias positivas |
Puntuación F1 (F1-Score) |
Precisión y exhaustividad equilibradas |
Por parte de LabEx, estas técnicas de optimización ayudan a crear modelos de Bosques Aleatorios robustos y eficientes.