Necesito predecir el impacto de un conjunto de fallos de nodos en una red, basándome en 2 características: la fracción de nodos fallidos y una medida de su centralidad de red.
El fallo de los nodos menos importantes tendrá poca o ninguna repercusión, mientras que el fallo de los nodos importantes puede hacer caer toda la red.
La salida prevista debe ser un número en el rango [0, 1], donde 0 es "ningún daño", y "1" es "fallo de todos los nodos". El 0 es inclusivo ya que lo uso para cubrir el caso "sin daños" cuando la fracción de nodos fallados es 0.
Este es un ejemplo de asignación de 2 características (ejes x e y) al resultado real de la simulación (eje z). He trazado la dispersión y la proyección de los puntos. Parece que es algo que se puede aprender, ¿verdad?
Estoy utilizando la regresión lineal multivariante en scikit-learn para entrenar un predictor. Tomo mi conjunto de entrenamiento, elijo las 2 características que quiero, las uso para hacer un polinomio de 4to grado, que luego estandarizo y uso para entrenar mi modelo.
El problema es que, para algunas combinaciones de mis 2 valores de características, el predictor arroja valores negativos o valores mayores que 1. Puedo publicar una imagen si es necesario.
He probado a cambiar el grado del polinomio, a utilizar la regularización (lasso, ridge y ElasticNet) y a aplicar la normalización. Nada soluciona completamente el problema, especialmente para las predicciones >1.
¿Es la regresión lineal la herramienta equivocada para predecir valores en un rango?
¿Alguna sugerencia para un sustituto de la misma? Estoy tentado de probar la regresión logística, pero no parece la herramienta adecuada, ya que es para la clasificación, y da salida a las probabilidades, mientras que mis valores tienen un significado diferente (no una "oportunidad", sino un grado de daño).
0 votos
¿Puede ser más preciso sobre cuál es el formato de sus datos? Podría simplemente asignar la salida a $[0,1]$ de la manera más obvia.
0 votos
Tengo dos características, una es la fracción inicial de nodos fallidos (entre 0 y 1) mientras que la otra es una suma de la centralidad de esos nodos (esto podría ser normalizado, en realidad). Puedo hacer que la segunda característica sea también una fracción, como "fracción de centralidad perdida" (según una métrica específica). ¿Ayudaría eso?
0 votos
El resultado para (0, 0) es siempre 0, es decir (0 atacado, 0 pérdida de centralidad) -> 0 daño. Puede haber algunos puntos en los que el mismo valor (x, y) tenga diferentes valores z, pero no deberían ser tantos. Convertir esto en un problema de clasificación es una posibilidad, sí, pero me gustaría hacer alguna predicción también. ¿No hay forma de informar al predictor de que el valor sólo tiene sentido cuando está en un rango específico? Hacer un mapa de ellos después suena como una oportunidad perdida.
0 votos
En x se tiene el tamaño inicial de la falla (fracción de nodos fallados), mientras que en z se tiene el tamaño final de la falla (nuevamente, fracción de nodos fallados). Se trata de una predicción del efecto de los fallos en cascada. Cuando un daño inicial resulta en un fallo total tienes z=1. Sobre la regresión restringida, ¿podrías indicarme un ejemplo usando scikit-learn?
0 votos
Puedo intentar considerar más de 2 características para diferenciar, aunque puede que aún no sea suficiente. Sin embargo, no entiendo del todo lo que propones. ¿Podría añadir algo de información?
0 votos
@Agostino He borrado mis comentarios que hice en una respuesta.