Configuración del modelo

El motivo de que el modelo no haya convergido aun tratándose de un conjunto de datos linealmente separable es debido a la configuración del algoritmo, que podemos visualizar con el método .get_params() del modelo:

model.get_params()
{'alpha': 0.0001,
 'class_weight': None,
 'early_stopping': False,
 'eta0': 1.0,
 'fit_intercept': True,
 'l1_ratio': 0.15,
 'max_iter': 1000,
 'n_iter_no_change': 5,
 'n_jobs': None,
 'penalty': None,
 'random_state': 0,
 'shuffle': True,
 'tol': 0.001,
 'validation_fraction': 0.1,
 'verbose': 0,
 'warm_start': False}

En la configuración anterior vemos, por ejemplo, que la tasa de aprendizaje es de 1.0 (parámetro eta0), que el número máximo de epochs es de 1.000 (parámetro max_iter) y que el número de iteraciones (epochs) sin que se produzcan mejoras antes de que el algoritmo pare el entrenamiento es de 5 (parámetro n_iter_no_change). Todos estos parámetros tienen una influencia directa en el comportamiento del modelo.

Debemos recordar que nuestras características predictivas no son valores próximos a cero, lo que supone que, muy probablemente, los valores de los pesos necesarios para asegurar que el 100% de las muestras se clasifiquen correctamente van a ser elevados también (recordemos que el valor z no es más que una combinación lineal de los valores de entrada. Si éstos son elevados, probablemente los coeficientes de dicha combinación lineal también lo sean). Esto significa que es posible que 1.000 epochs no sean suficientes para que los pesos tiendan a valores estables.

Por otro lado, al tratarse de datos de entrada y pesos presumiblemente grandes y una función de activación tipo escalón, es posible que un cambio en los pesos suponga una mejora en el estado de la neurona sin que esto se refleje en una mejora de las predicciones. Por ejemplo, si la etiqueta de una muestra es 1, el valor de z antes de los cambios en los pesos es -5 (con lo que la predicción es 0) y, tras los cambios en los pesos, z pasa a ser -4 (con lo que la predicción sigue siendo 0), podemos deducir que el cambio en los pesos ha sido positivo, pues la neurona ha tendido hacia un estado más próximo a aquel que la llevaría a realizar una predicción correcta, pero la predicción sigue siendo errónea. Si esto se repite durante 5 epochs consecutivas, el algoritmo pararía el entrenamiento creyendo que ya se ha alcanzado la convergencia.