Hola, buenas tardes.
Estoy teniendo dificultades en definir qué valor del parámetro C (equivalente a 1λ) de la función LogisticRegression()
utilizar. Ya probé su funcionamiento con los siguientes valores: C = {1, 1e-1, 1e-2, 1e-3, 1e-4}. En todos los casos, obtuve casi la misma accuracy en el set de testeo, aproximadamente entre 64% y 65%. Tampoco afectaba notoriamente el desempeño en el set de entrenamiento.
Aclaro por las dudas: para hacer la regresión logística, armo el siguiente pipeline:
Definir modelo polinómico de grado 2 →
PolynomialFeatures(degree=2, include_bias=False)
.Aplicar una normalización, ya que los términos cuadráticos suelen tener escalas diferentes a la original. Además, esto ayuda a que la regresión logística converja mejor →
StandardScaler()
.Regresión logística →
LogisticRegression(penalty='l2', C=C_value, max_iter=N, random_state=42, tol=1e-3)
.
Al establecer un valor alto de max_iter
y/o un valor de tol
no tan bajo (tol < 1e-3
), logro que el modelo converja correctamente y evito el mensaje de error ConvergenceWarning
.
Hay dos cosas que me generan dudas respecto a los resultados que estoy obteniendo:
Como mencioné antes, es extraño que la accuracy en el set de testeo casi no varíe cuando cambio drásticamente el valor del parámetro C.
Sí noté cambios en la accuracy del set de entrenamiento al modificar la tolerancia o
max_iter
. Mientras mayor sea el valor demax_iter
o menor sea el valor detol
, la predicción para el set de entrenamiento mejora (lo cual tiene sentido), pero me resulta raro que esto no afecte negativamente la predicción en el set de testeo.
Inicialmente, usé un valor alto de tol
, lo que hacía que el ajuste se detuviera más rápido, obteniendo aproximadamente un 75% de accuracy en el set de entrenamiento y un 65% en el de testeo. Luego, al disminuir tol
, el algoritmo tardaba más en ejecutarse y la accuracy en el set de entrenamiento mejoraba notoriamente, alcanzando un 94% de acierto en la predicción. Lo que me resulta extraño es que, a pesar de esta diferencia, no parece haber problemas de overfitting, ya que la accuracy en el set de testeo se mantiene prácticamente constante (64%-65%).
El mayor problema de todo esto es que cada prueba demora casi 30 minutos, así que no puedo hacer muchas simulaciones para analizar en detalle cómo se comporta el modelo al cambiar los parámetros.
Agradezco cualquier comentario o sugerencia que me puedan dar.
Saludos.