3 votos

Encontrar la variable de entrada a la que es más sensible la salida

Tengo un sistema físico que toma una serie de entradas $x_i$ y produce una salida $error$ .

$$ Y = f(x_1, x_2, x_3, .. x_{1000}) $$

La función $f()$ puede evaluarse realizando una simulación informática intensiva de un modelo.

Quiero encontrar el $x_i$ al que $Y$ es más sensible. En la práctica, quiero optimizar los valores de las pocas variables de entrada que darían el máximo rendimiento (en términos de mejora del rendimiento del sistema).

Se me ocurre cambiar aleatoriamente cada una de las $x_i$ en una pequeña cantidad alrededor del valor existente y registre el resultado. Repite el experimento varios cientos de veces y calcula la correlación entre $x_i$ a $Y$ y elegir las entradas con alta correlación.

Me pregunto si existe un método más formal para conseguirlo.

Una restricción importante en mi problema particular es que cada evaluación del modelo requiere una simulación computacionalmente intensiva de unos 10 minutos y $x_i$ es de tamaño $1000$ a $2000$ .

6voto

Florian Margaine Puntos 158

La función es básicamente una superficie en su espacio de 100 dimensiones más o menos. Y en cualquier punto dado en el espacio, es más sensible a las entradas para las que tiene el valor más alto en las derivadas parciales para esa entrada.

Esto significa que su función puede ser sensible a una entrada en un punto de su espacio de alta dimensión, y sensible a otra entrada en otro lugar de su espacio.

Matemáticamente hablando, deberías calcular las derivadas parciales de tu función para cada entrada, y luego analizar esas derivadas para ver cuál es normalmente más alto que los demás, si eso es lo que te interesa.

En otras palabras, puede darse el caso de que su función sea muy sensible a $x_1$ si $x_2 = 5$ y extremadamente sensible a $x_{10}$ si $x_2 = 100$ .

Puede calcular esas derivadas analíticamente si tiene la forma cerrada de la función, o estimar esas derivadas en puntos de entrada dados aleatoriamente utilizando algoritmos numéricos.

En la práctica, no se suele disponer de la forma analítica de la función. Lo que puede hacer es elegir al azar de su conjunto de datos (una muestra iid), y estimar numéricamente las derivadas de cada característica de entrada. Con una muestra lo suficientemente grande, se obtiene una buena representación de la distribución de las derivadas parciales, y entonces usted puede decidir qué hacer con ellos en función de sus conjuntos de valores calculados (un conjunto por característica de entrada).

Es muy posible que para algunos se obtenga una bonita distribución gaussiana, para otros ruido blanco, para otros una distribución más bien uniforme, etc. Realmente depende de tus datos Y de tu función.

3voto

mindss Puntos 1

Si el resultado está relacionado linealmente con las entradas, puede probar el análisis de regresión en el contexto de la sensibilidad. Podemos calcular el coeficiente beta estandarizado como medida directa de la sensibilidad, porque en el cálculo de los coeficientes beta estandarizados, cada entrada se estandariza primero con la media y la desviación estándar, y es muy fácil de interpretar.

como referencia, https://www.listendata.com/2015/04/standardized-vs-unstandardized.html https://en.wikipedia.org/wiki/Standardized_coefficient

1voto

user153170 Puntos 88

Creo que podría estudiar el campo del análisis de sensibilidad: https://en.wikipedia.org/wiki/Sensitivity_analysis . En su caso, le aconsejo que calcule los índices de Sobol ( https://en.wikipedia.org/wiki/Variance-based_sensitivity_analysis ).

Estos índices representan la fracción de varianza transportada por una variable y/o un conjunto de variables. Existen varios paquetes de R para calcular índices de primer y segundo orden de forma bastante eficiente, utilizando diseños específicos.

En su caso, como el número de modelos de evaluación es bastante pequeño y el número de entradas es grande, podría intentar realizar un análisis de sensibilidad basado en sustitutos (véase por ejemplo https://doi.org/10.1016/j.apm.2013.01.019 ): Tome un diseño inicial que se comporte bien (Latin Hypersquare u otros diseños de relleno de espacio) y, basándose en estas evaluaciones, construya un modelo sustituto (utilizando Kriging). Este modelo sustitutivo se utilizará para cálculos intensivos y puede ofrecer resultados reveladores.

Sin embargo, hay que tener en cuenta que, debido al elevado número de entradas, es probable que se necesiten muchas ejecuciones iniciales para generar un sustituto preciso. Una regla general es tomar $10d$ puntos de diseño iniciales, donde $d$ es la dimensión de entrada.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X