¿Qué es Random Search y por qué es crucial en el ML?

| Última modificación: 16 de septiembre de 2024 | Tiempo de Lectura: 4 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Puede que te encuentres en el dilema de cómo encontrar los mejores hiperparámetros para un modelo, lo cual resulta entendible porque usar el mejor hiperparámetro puede marcar la diferencia entre un modelo eficiente y uno que no generaliza bien. Por eso, vamos a explicarte una de las técnicas más populares para lograrlo: el Random Search. Si te interesa saber qué es y cómo funciona, en este post te hablaremos sobre él y por qué deberías considerar usarlo si trabajas con proyectos de Machine Learning.

qué es Random Search

¿Qué es Random Search?

Random Search es una técnica que se usa para encontrar los mejores valores que hagan que un modelo de machine learning funcione del modo más eficaz posible. Entonces, en lugar de probar todas las combinaciones posibles de parámetros, como lo hace el método Grid Search, Random Search selecciona los valores al azar. Esto quiere decir que, en vez de revisar cada opción minuciosamente, Random Search toma “muestras” de combinaciones, así es como te ahorra tiempo y esfuerzo sin sacrificar mucho la calidad del modelo.

¿Cómo funciona?

El Random Search en machine learning funciona de una manera bastante simple. Básicamente, el proceso consiste en elegir puntos de forma aleatoria dentro de un conjunto de posibles opciones (llamado “espacio de búsqueda”) y luego ver si esos puntos ayudan a mejorar el rendimiento del modelo. Después, repites el mismo procedimiento varias veces hasta que se cumpla alguna condición que hayas establecido previamente, como un número máximo de intentos o que se haya logrado un resultado específico.

Ventajas de Random Search

Tienes que saber que, su principal ventaja es que suele ser más eficiente cuando el número de hiperparámetros y su dimensionalidad es alto. Estas son algunas de sus otras ventajas:

  • Ahorra tiempo y recursos: En lugar de probar todas las combinaciones posibles, se prueban solo algunas de forma aleatoria, lo que reduce significativamente el tiempo de computación.
  • Mayor exploración del espacio de hiperparámetros: El hecho de seleccionar valores al azar permite explorar áreas del espacio de búsqueda que un enfoque más exhaustivo como el Grid Search podría pasar por alto.
  • Resultados eficientes en menos iteraciones: A menudo, Random Search en machine learning logra mejores resultados con menos iteraciones en comparación con otros métodos, lo que lo hace ideal para proyectos que no cuentan con mucho tiempo y recursos.

Algoritmo de Random Search

Para que logres entender cómo funciona el algoritmo de Random Search, vas a imaginar que estás ajustando un modelo de machine learning y tienes que decidir algunos parámetros importantes, como cuán profundo puede ser un árbol de decisión o cuántas divisiones mínimas debe haber en cada nodo. Estos son los famosos hiperparámetros, es decir, los que vas a estar buscando con el Random Search para mejorar el rendimiento de tu modelo.

Pasos del algoritmo:

  1. Selecciona un punto aleatorio en el espacio de búsqueda, que será tu punto inicial (llamémoslo x).
  2. Calcula el valor de la función de coste en ese punto.
  3. Elige otro punto aleatorio en el espacio de búsqueda (llamémoslo y) y calcula el valor de la función de coste para ese nuevo punto.
  4. Si el valor de y es mejor que el de x, entonces actualiza x = y y repite el proceso.
  5. El algoritmo continúa iterando hasta que se cumplen las condiciones establecidas (por ejemplo, un número máximo de iteraciones o un valor objetivo).

Ejemplo de Random Search en Python

Con este ejemplo usando Python y Scikit-learn, te harás una mejor idea de cómo funciona Random Search en machine learning. Asumamos que estamos trabajando con el dataset de enfermedades del corazón y queremos ajustar un modelo de árbol de decisión.

from sklearn.model_selection import RandomizedSearchCV
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import pandas as pd

# Cargar el dataset
df = pd.read_csv("heart_disease.csv")
X = df.drop(columns="target")
y = df["target"]

# Separar en conjunto de entrenamiento y prueba
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Definir el modelo
dtclf = DecisionTreeClassifier()

# Definir el espacio de búsqueda de hiperparámetros
param_distributions = {
'max_depth': [3, 5, 10, None],
'min_samples_split': [2, 5, 10],
'min_samples_leaf': [1, 2, 4]
}

# Configurar RandomizedSearchCV
rs = RandomizedSearchCV(estimator=dtclf, param_distributions=param_distributions,
n_iter=10, random_state=42, scoring='accuracy', cv=5)

# Ajustar el modelo
rs.fit(X_train, y_train)

# Evaluar el modelo
best_model = rs.best_estimator_
y_pred = best_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)

print(f"Mejores hiperparámetros: {rs.best_params_}")
print(f"Precisión en el conjunto de prueba: {accuracy:.2f}")

Lo que hicimos fue usar RandomizedSearchCV para buscar la mejor combinación de hiperparámetros en un modelo de árbol de decisión. Puedes ver que nos dio como resultado un modelo ajustado con mejor rendimiento que el modelo base.

Random Search es un método imprescindible para optimizar los hiperparámetros en modelos de machine learning. Es la mejor alternativa para explorar amplios espacios de búsqueda, especialmente cuando tienes poco tiempo o recursos. En caso de que quieras saber más sobre estas técnicas, el Bootcamp de Big Data, Data Science, Machine Learning e IA creado por KeepCoding es perfecto para potenciar tu trayectoria profesional. No solo dominarás estas herramientas, sino que también te prepararás para aprovechar las grandes oportunidades del sector tecnológico, con sueldos altos y estabilidad laboral. ¡Es tu momento para cambiar tu vida!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado