Predicciones de matemáticos. Analizamos los principales métodos para detectar anomalías.

En el extranjero, el uso de inteligencia artificial en la industria para el mantenimiento predictivo de varios sistemas está ganando popularidad. El propósito de esta técnica es identificar el mal funcionamiento de la operación del sistema durante la fase de operación antes de que se descomponga para una respuesta oportuna.

¿Cuán relevante es este enfoque en nuestro país y en Occidente? La conclusión puede hacerse, por ejemplo, en artículos sobre Habré y en Medium. Casi no hay artículos sobre Habré sobre la resolución de problemas de mantenimiento predictivo. En Medium hay un conjunto completo. Aquí, aquí y aquí se describe bien cuáles son los objetivos y las ventajas de este enfoque.

De este artículo aprenderás:

  • ¿Por qué se necesita esta técnica?
  • qué enfoques de aprendizaje automático se usan más comúnmente para el mantenimiento predictivo,
  • cómo probé uno de los trucos con un simple ejemplo.

Fuente

¿Qué características ofrece el servicio predictivo?

  • un proceso controlado de trabajos de reparación, que se lleva a cabo según sea necesario, ahorrando dinero y sin prisas, lo que mejora la calidad de estos trabajos;
  • identificación de un mal funcionamiento específico en la operación del equipo (la capacidad de comprar una pieza específica para reemplazarla cuando el equipo está en funcionamiento brinda enormes ventajas);
  • optimización del funcionamiento del equipo, cargas, etc.
  • reducción de costos por apagado regular de equipos.

El siguiente artículo sobre Medium describe bien las preguntas que deben responderse para comprender cómo abordar este problema en un caso particular.

Al recopilar datos o al elegir datos para construir un modelo, es importante responder tres grupos de preguntas:

  1. ¿Se pueden predecir todos los problemas del sistema? ¿Qué predicción es especialmente importante?
  2. ¿Qué es un proceso de falla? ¿Todo el sistema deja de funcionar o solo está cambiando el modo operativo? ¿Es un proceso rápido, degradación instantánea o gradual?
  3. ¿El rendimiento del sistema refleja adecuadamente su rendimiento? ¿Se relacionan con partes individuales del sistema o con el sistema en su conjunto?

También es importante comprender de antemano lo que desea predecir, lo que es posible predecir y lo que no.

El artículo en Medium también enumera preguntas que ayudarán a determinar su objetivo específico:

  • ¿Qué se debe predecir? El tiempo de vida restante, comportamiento anormal o no, la probabilidad de falla en las próximas N horas / días / semanas?
  • ¿Hay suficientes datos históricos?
  • ¿Se sabe cuándo el sistema dio lecturas anómalas y cuándo no? ¿Es posible marcar tales indicaciones?
  • ¿Qué tan lejos debe ver el modelo? ¿Qué tan independientes son las lecturas que reflejan el funcionamiento del sistema en el intervalo de una hora / día / semana?
  • ¿Qué necesitas para optimizar? Si el modelo detecta tantas violaciones como sea posible, mientras da una falsa alarma, o es suficiente para detectar varios eventos sin falsos positivos.

Se espera que la situación mejore en el futuro. Hasta ahora, existen dificultades en el campo del mantenimiento predictivo: hay pocos ejemplos de mal funcionamiento del sistema, o son suficientes momentos de mal funcionamiento del sistema, pero no están marcados; El proceso de falla es desconocido.

La forma principal de superar las dificultades en el mantenimiento predictivo es utilizar métodos de búsqueda de anomalías . Dichos algoritmos no requieren marcado para el entrenamiento. Para probar y depurar algoritmos, es necesario el marcado de una forma u otra. Dichos métodos son limitados en el sentido de que no predecirán una falla específica, sino que solo señalarán anormalidades de los indicadores.

Pero esto ya no está mal.

Fuente

Métodos


Ahora quiero hablar sobre algunas características de los enfoques de detección de anomalías, y luego juntos probaremos las capacidades de algunos algoritmos simples en la práctica.

Aunque una situación particular requerirá probar varios algoritmos para buscar anomalías y elegir la mejor, es posible determinar algunas ventajas y desventajas de las principales técnicas utilizadas en esta área.

En primer lugar, es importante comprender de antemano cuál es el porcentaje de anomalías en los datos.

Si estamos hablando de una variación del enfoque semi-supervisado (estudiamos solo con datos "normales" y trabajamos (probamos) y luego con datos con anomalías), entonces la opción más óptima es el método de vector de soporte con una clase ( SVM de una clase ) . Cuando se utilizan funciones de base radial como núcleo, este algoritmo construye una superficie no lineal alrededor del origen. Cuanto más limpios sean los datos de entrenamiento, mejor funcionará.

En otros casos, la necesidad de conocer la proporción de puntos anormales y "normales" también permanece, para determinar el umbral de corte.

Si el número de anomalías en los datos es superior al 5% y son bastante separables de la muestra principal, se pueden utilizar métodos de búsqueda de anomalías estándar.

En este caso, el método del bosque de aislamiento es el más estable en términos de calidad: el bosque de aislamiento son datos aleatorios. Es más probable que una indicación más característica sea más profunda, mientras que los indicadores inusuales se separarán del resto de la muestra en las primeras iteraciones.

Otros algoritmos funcionan mejor si se "ajustan" a los detalles de los datos.

Cuando los datos tienen una distribución normal, el método de envoltura elíptica es adecuado, aproximando los datos con una distribución normal multidimensional. Cuanto menos probable sea que el punto pertenezca a la distribución, mayor será la probabilidad de que sea anómalo.

Si los datos se presentan de tal manera que la posición relativa de diferentes puntos refleja bien sus diferencias, entonces los métodos métricos parecen ser una buena opción: por ejemplo, k vecinos más cercanos, k-ésimo vecino más cercano, ABOD (detección de valores atípicos basados ​​en ángulos) o LOF (factor de valores atípicos locales) )

Todos estos métodos sugieren que los indicadores "correctos" se concentran en un área del espacio multidimensional. Si entre los vecinos más cercanos k (o k-ésimo) todo está lejos del objetivo, entonces el punto es una anomalía. Para ABOD, el razonamiento es similar: si todos los k puntos más cercanos están en el mismo sector de espacio en relación con el considerado, entonces el punto es una anomalía. Para LOF: si la densidad local (predeterminada para cada punto por k vecinos más cercanos) es menor que la de k vecinos más cercanos, entonces el punto es una anomalía.

Si los datos están bien agrupados, los métodos basados ​​en el análisis de grupos son una buena opción. Si el punto es equidistante de los centros de varios grupos, entonces es anómalo.

Si las direcciones de la mayor variación en la varianza se distinguen bien en los datos, entonces parece ser una buena opción buscar anomalías basadas en el método del componente principal . En este caso, las desviaciones del valor promedio para n1 (la mayoría de los componentes "principales") y n2 (la menor "principal") se consideran una medida de anomalía.

Por ejemplo, se sugiere mirar el conjunto de datos de The Prognostics and Health Management Society (PHM Society) . Esta organización sin fines de lucro organiza la competencia todos los años. En 2018, por ejemplo, se requería predecir errores en la operación y el tiempo antes de la falla de la planta de grabado de haz de iones . Tomaremos el conjunto de datos para 2015 . Contiene las lecturas de varios sensores para 30 instalaciones (muestra de entrenamiento), y se requiere para predecir cuándo y qué error ocurrirá.

No encontré las respuestas para la muestra de prueba en la red, por lo que solo jugaremos con la capacitación.

En general, todos los ajustes son similares, pero difieren, por ejemplo, en el número de componentes, en el número de anomalías, etc. Por lo tanto, aprender en los primeros 20 y probar en otros no tiene mucho sentido.

Por lo tanto, elegiremos una de las instalaciones, la cargaremos y echaremos un vistazo a estos datos. El artículo no se referirá a la ingeniería de características , por lo que no analizaremos mucho.

import pandas as pd import matplotlib.pyplot as plt %matplotlib inline import seaborn as sns from sklearn.covariance import EllipticEnvelope from sklearn.neighbors import LocalOutlierFactor from sklearn.ensemble import IsolationForest from sklearn.svm import OneClassSVM dfa=pd.read_csv('plant_12a.csv',names=['Component number','Time','S1','S2','S3','S4','S1ref','S2ref','S3ref','S4ref']) dfa.head(10) 


Como puede ver, hay siete componentes para cada uno de los cuales hay lecturas de cuatro sensores que se toman cada 15 minutos. S1ref-S4ref en la descripción de la competencia se enumeran como valores de referencia, pero los valores son muy diferentes de las lecturas de los sensores. Para no perder el tiempo pensando en lo que significan, los eliminamos. Si observa la distribución de valores para cada característica (S1-S4), resulta que las distribuciones son continuas para S1, S2 y S4, y discretas para S3. Además, si observa la distribución conjunta de S2 y S4, resulta que son inversamente proporcionales.


Aunque una desviación de una dependencia directa puede indicar un error, no lo comprobaremos, sino que simplemente eliminaremos S4.

Una vez más, procesamos el conjunto de datos. Deje S1, S2 y S3. Escale S1 y S2 con StandardScaler (restamos el promedio y dividimos por la desviación estándar), traduzca S3 en OHE (One Hot Encoding). Cosemos lecturas de todos los componentes de instalación en una línea. Total de 89 características. 2 * 7 = 14 - lecturas S1 y S2 para 7 componentes y 75 valores únicos de R3. Solo 56 mil de esas líneas.

Sube el archivo con errores.

 dfc=pd.read_csv('plant_12c.csv',names=['Start Time', 'End Time','Type']) dfc.head() 


Antes de probar estos algoritmos en nuestro conjunto de datos, me permitiré otra pequeña digresión. Necesitas ser probado. Para esto, se propone tomar la hora de inicio del error y la hora de finalización. Y todas las indicaciones dentro de este intervalo se consideran anormales y fuera de lo normal. Este enfoque tiene muchas desventajas. Pero especialmente uno: el comportamiento anormal probablemente ocurre antes de que se solucione el error. Por fidelidad, cambiemos la ventana de anomalías hace media hora a tiempo. Evaluaremos la medida F1, la precisión y el recuerdo.

El código para distinguir características y determinar la calidad del modelo:

 def load_and_preprocess(plant_num):   #      ,       dfa=pd.read_csv('plant_{}a.csv'.format(plant_num),names=['Component number','Time','S1','S2','S3','S4','S1ref','S2ref','S3ref','S4ref'])   dfc=pd.read_csv('plant_{}c.csv'.format(plant_num),names=['Start Time','End Time','Type']).drop(0,axis=0)   N_comp=len(dfa['Component number'].unique())   #  15    dfa['Time']=pd.to_datetime(dfa['Time']).dt.round('15min')   #  6    (  ,    )   dfc=dfc[dfc['Type']!=6]   dfc['Start Time']=pd.to_datetime(dfc['Start Time'])   dfc['End Time']=pd.to_datetime(dfc['End Time'])   #      ,       OHE  3-    dfa=pd.concat([dfa.groupby('Time').nth(i)[['S1','S2','S3']].rename(columns={"S1":"S1_{}".format(i),"S2":"S2_{}".format(i),"S3":"S3_{}".format(i)}) for i in range(N_comp)],axis=1).dropna().reset_index()   for k in range(N_comp):       dfa=pd.concat([dfa.drop('S3_'+str(k),axis=1),pd.get_dummies(dfa['S3_'+str(k)],prefix='S3_'+str(k))],axis=1).reset_index(drop=True)   #          df_train,df_test=train_test_split(dfa,test_size=0.25,shuffle=False)   cols_to_scale=df_train.filter(regex='S[1,2]').columns   scaler=preprocessing.StandardScaler().fit(df_train[cols_to_scale])   df_train[cols_to_scale]=scaler.transform(df_train[cols_to_scale])   df_test[cols_to_scale]=scaler.transform(df_test[cols_to_scale])   return df_train,df_test,dfc #       def get_true_labels(measure_times,dfc,shift_delta):   idxSet=set()   dfc['Start Time']-=pd.Timedelta(minutes=shift_delta)   dfc['End Time']-=pd.Timedelta(minutes=shift_delta)   for idx,mes_time in tqdm_notebook(enumerate(measure_times),total=measure_times.shape[0]):       intersect=np.array(dfc['Start Time']<mes_time).astype(int)*np.array(dfc['End Time']>mes_time).astype(int)       idxs=np.where(intersect)[0]       if idxs.shape[0]:           idxSet.add(idx)   dfc['Start Time']+=pd.Timedelta(minutes=shift_delta)   dfc['End Time']+=pd.Timedelta(minutes=shift_delta)   true_labels=pd.Series(index=measure_times.index)   true_labels.iloc[list(idxSet)]=1   true_labels.fillna(0,inplace=True)   return true_labels #          def check_model(model,df_train,df_test,filt='S[123]'):   model.fit(df_train.drop('Time',axis=1).filter(regex=(filt)))   y_preds = pd.Series(model.predict(df_test.drop(['Time','Label'],axis=1).filter(regex=(filt)))).map({-1:1,1:0})   print('F1 score: {:.3f}'.format(f1_score(df_test['Label'],y_preds)))   print('Precision score: {:.3f}'.format(precision_score(df_test['Label'],y_preds)))   print('Recall score: {:.3f}'.format(recall_score(df_test['Label'],y_preds)))   score = model.decision_function(df_test.drop(['Time','Label'],axis=1).filter(regex=(filt)))   sns.distplot(score[df_test['Label']==0])   sns.distplot(score[df_test['Label']==1]) df_train,df_test,anomaly_times=load_and_preprocess(12) df_test['Label']=get_true_labels(df_test['Time'],dfc,30) 

Resultados de la prueba para algoritmos de búsqueda de anomalías simples en el conjunto de datos PHM 2015 Data Challenge

De vuelta a los algoritmos. Probemos One Class SVM (OCSVM), IsolationForest (IF), EllipticEnvelope (EE) y LocalOutlierFactor (LOF) en nuestros datos. Para empezar, no estableceremos ningún parámetro. Observo que LOF puede funcionar en dos modos. Si novedad = Falso puede buscar anomalías solo en el conjunto de entrenamiento (solo hay fit_predict), si es Verdadero, está dirigido a buscar anomalías fuera del conjunto de entrenamiento (puede ajustarse y predecir por separado). IF tiene un modo de comportamiento antiguo y nuevo. Usamos nuevo. Él da mejores resultados.

OCSVM detecta bien las anomalías, pero hay demasiados falsos positivos. Para otros métodos, el resultado es aún peor.

Pero supongamos que conocemos el porcentaje de anomalías en los datos. En nuestro caso, 27%. OCSVM tiene nu: la estimación superior para el porcentaje de errores y la inferior para el porcentaje de vectores de soporte. Otros métodos de contaminación tienen un porcentaje de errores de datos. En los métodos IF y LOF, se determina automáticamente, mientras que para OCSVM y EE se establece en 0.1 de forma predeterminada. Intentemos establecer la contaminación (nu) en 0.27. Ahora el mejor resultado para EE.

Código para verificar modelos:

 def check_model(model,df_train,df_test,filt='S[123]'):   model_type,model = model   model.fit(df_train.drop('Time',axis=1).filter(regex=(filt)))   y_preds = pd.Series(model.predict(df_test.drop(['Time','Label'],axis=1).filter(regex=(filt)))).map({-1:1,1:0})   print('F1 score for {}: {:.3f}'.format(model_type,f1_score(df_test['Label'],y_preds)))   print('Precision score for {}: {:.3f}'.format(model_type,precision_score(df_test['Label'],y_preds)))   print('Recall score for {}: {:.3f}'.format(model_type,recall_score(df_test['Label'],y_preds)))   score = model.decision_function(df_test.drop(['Time','Label'],axis=1).filter(regex=(filt)))   sns.distplot(score[df_test['Label']==0])   sns.distplot(score[df_test['Label']==1])   plt.title('Decision score distribution for {}'.format(model_type))   plt.show() 

Es interesante observar la distribución de los indicadores de anomalías para diferentes métodos. Se puede ver que LOF no funciona bien para estos datos. EE tiene puntos que el algoritmo considera extremadamente anormales. Sin embargo, los puntos normales caen allí. IsoFor y OCSVM muestran que la elección del umbral de corte (contaminación / nu) es importante, lo que cambiará la compensación entre precisión e integridad.


Es lógico que las lecturas de los sensores tengan una distribución cercana a la normal, cerca de valores estacionarios. Si realmente tenemos una muestra de prueba etiquetada, y preferiblemente también una de validación, entonces el valor de contaminación puede teñirse. La siguiente pregunta es, ¿qué errores están más orientados: falso positivo o falso negativo?

El resultado LOF es muy bajo. No muy impresionante Pero recuerde que las variables OHE van a la entrada junto con las variables transformadas por StandardScaler. Y las distancias predeterminadas son euclidianas. Pero si solo cuenta las variables de acuerdo con S1 y S2, la situación se corrige y el resultado es comparable con otros métodos. Sin embargo, es importante comprender que uno de los parámetros clave de los clasificadores métricos enumerados es el número de vecinos. Afecta significativamente la calidad y debe ajustarse. La métrica de distancia en sí también sería agradable de recoger.

Ahora intenta combinar los dos modelos. Al comienzo de uno, eliminamos las anomalías del conjunto de entrenamiento. Y luego entrenaremos a OCSVM en un conjunto de entrenamiento "más limpio". Según los resultados anteriores, observamos la mayor integridad en EE. Borramos la muestra de entrenamiento a través de EE, entrenamos OCSVM en ella y obtenemos F1 = 0.50, Precisión = 0.34, integridad = 0.95. No es impresionante Pero acabamos de preguntar nu = 0.27. Y los datos que tenemos son más o menos "limpios". Si suponemos que la plenitud de la EE en la muestra de entrenamiento es la misma, entonces permanecerá el 5% de los errores. Nos establecemos como nu y obtenemos F1 = 0.69, Precisión = 0.59, integridad = 0.82. Genial Es importante tener en cuenta que en otros métodos dicha combinación no funcionará, ya que implican que el número de anomalías en el conjunto de entrenamiento y el número de prueba es el mismo. Al entrenar estos métodos en un conjunto de datos de entrenamiento puro, deberá especificar menos contaminación que en los datos reales y no cerca de cero, pero es mejor seleccionarlo para la validación cruzada.

Es interesante observar el resultado de la búsqueda en la secuencia de indicaciones:


La figura muestra un segmento de las lecturas del primer y segundo sensor para 7 componentes. En la leyenda, el color de los errores correspondientes (el principio y el final se muestran mediante líneas verticales del mismo color). Los puntos indican las predicciones: verde - predicciones verdaderas, rojo - falso positivo, púrpura - falso negativo. De la figura se puede ver que es difícil determinar visualmente el tiempo de error, y el algoritmo hace frente a esta tarea bastante bien. Aunque es importante entender que las lecturas del tercer sensor no se dan aquí. Además, hay lecturas de falsos positivos después del final del error. Es decir el algoritmo ve que también hay valores erróneos y marcamos esta área como libre de errores. El lado derecho de la figura muestra el área antes del error, que marcamos como errónea (media hora antes del error), que se reconoció como libre de errores, lo que conduce a errores de modelo falso negativo. En el centro de la figura, se reconoce una pieza coherente, reconocida como un error. La conclusión se puede extraer de la siguiente manera: al resolver el problema de la búsqueda de anomalías, debe interactuar estrechamente con los ingenieros que entienden la esencia de los sistemas cuya salida necesita predecir, ya que verificar los algoritmos utilizados en el marcado no refleja completamente la realidad y no simula las condiciones en las que dichos algoritmos podrían ser utilizado

Código para trazar el gráfico:

 def plot_time_course(df_test,dfc,y_preds,start,end,vert_shift=4):   plt.figure(figsize=(15,10))   cols=df_train.filter(regex=('S[12]')).columns   add=0   preds_idx=y_preds.iloc[start:end][y_preds[0]==1].index   true_idx=df_test.iloc[start:end,:][df_test['Label']==1].index   tp_idx=set(true_idx.values).intersection(set(preds_idx.values))   fn_idx=set(true_idx.values).difference(set(preds_idx.values))   fp_idx=set(preds_idx.values).difference(set(true_idx.values))   xtime=df_test['Time'].iloc[start:end]   for col in cols:       plt.plot(xtime,df_test[col].iloc[start:end]+add)       plt.scatter(xtime.loc[tp_idx].values,df_test.loc[tp_idx,col]+add,color='green')       plt.scatter(xtime.loc[fn_idx].values,df_test.loc[fn_idx,col]+add,color='violet')       plt.scatter(xtime.loc[fp_idx].values,df_test.loc[fp_idx,col]+add,color='red')       add+=vert_shift   failures=dfc[(dfc['Start Time']>xtime.iloc[0])&(dfc['Start Time']<xtime.iloc[-1])]   unique_fails=np.sort(failures['Type'].unique())   colors=np.array([np.random.rand(3) for fail in unique_fails])   for fail_idx in failures.index:       c=colors[np.where(unique_fails==failures.loc[fail_idx,'Type'])[0]][0]       plt.axvline(failures.loc[fail_idx,'Start Time'],color=c)       plt.axvline(failures.loc[fail_idx,'End Time'],color=c)   leg=plt.legend(unique_fails)   for i in range(len(unique_fails)):       leg.legendHandles[i].set_color(colors[i]) 

Si el porcentaje de anomalías es inferior al 5% y / o están mal separados de los indicadores "normales", los métodos anteriores funcionan mal y vale la pena usar algoritmos basados ​​en redes neuronales. En el caso más simple, estos serían:

  • codificadores automáticos (un error alto de un codificador automático capacitado indicará una anomalía en la lectura);
  • redes recurrentes (aprender por secuencia para predecir la última lectura. Si la diferencia es grande, el punto es anormal).

Por separado, vale la pena señalar los detalles de trabajar con series de tiempo. Es importante comprender que la mayoría de los algoritmos anteriores (excepto los autocodificadores y el aislamiento de bosques) probablemente darán una peor calidad al agregar características de retraso (lecturas de puntos anteriores en el tiempo).

Intentemos agregar características de retraso en nuestro ejemplo. La descripción de la competencia dice que los valores 3 horas antes del error no están relacionados con el error de ninguna manera. Luego agregue las señales en 3 horas. Total 259 signos.

Como resultado, los resultados para OCSVM y IsolationForest se mantuvieron casi sin cambios, mientras que los de Elliptic Envelope y LOF cayeron.

Para usar información sobre la dinámica del sistema, se deben usar codificadores automáticos con redes neuronales recurrentes o convolucionales. O, por ejemplo, una combinación de codificadores automáticos, información de compresión y enfoques convencionales para buscar anomalías basadas en información comprimida. El enfoque inverso también parece prometedor. Detección primaria de los puntos más poco característicos por algoritmos estándar, y luego entrenando el codificador automático ya en datos más limpios.

Fuente

Hay un conjunto de técnicas para trabajar con series de tiempo unidimensionales. Todos ellos están destinados a predecir lecturas futuras, y los puntos que divergen de la predicción se consideran anomalías.

Modelo Holt-Winters


El suavizado exponencial triple divide la serie en 3 componentes: nivel, tendencia y estacionalidad. En consecuencia, si la serie se presenta de esta forma, el método funciona bien. Facebook Prophet opera con un principio similar, pero evalúa los componentes en sí mismos de una manera diferente. Se pueden leer más detalles, por ejemplo, aquí .

S (ARIMA)


En este método, el modelo predictivo se basa en la autorregresión y la media móvil. Si estamos hablando de la expansión de S (ARIMA), entonces nos permite evaluar la estacionalidad. Lea más sobre el enfoque aquí , aquí y aquí .

Otros enfoques de servicio predictivo


Cuando se trata de series de tiempo y hay información sobre los tiempos de ocurrencia de errores, puede aplicar métodos de enseñanza con un maestro. Además de la necesidad de datos etiquetados, en este caso es importante comprender que la predicción del error dependerá de la naturaleza del error. Si hay muchos errores y de una naturaleza diferente, lo más probable es que sea necesario predecir cada uno por separado, lo que requerirá aún más datos etiquetados, pero las perspectivas serán más atractivas.

Existen formas alternativas de utilizar el aprendizaje automático en el mantenimiento predictivo. Por ejemplo, prediciendo una falla del sistema en los próximos N días (tarea de clasificación). Es importante comprender que este enfoque requiere que la ocurrencia de un error en la operación del sistema esté precedida por un período de degradación (no necesariamente gradual). En este caso, el enfoque más exitoso parece ser el uso de redes neuronales con capas convolucionales y / o recurrentes. Por separado, vale la pena señalar los métodos para aumentar las series de tiempo. Dos enfoques me parecen los más interesantes y al mismo tiempo simples:

  • Se selecciona la parte continua de la fila (por ejemplo, 70% y se elimina el resto) y se estira al tamaño original
  • Se selecciona y estira o comprime una parte continua de la fila (por ejemplo, 20%). Después de eso, toda la fila se comprime o estira en consecuencia a su tamaño original.

También hay una opción para predecir la vida útil restante del sistema (tarea de regresión). Aquí podemos distinguir un enfoque separado: la predicción no es de la vida útil, sino de los parámetros de distribución de Weibull.

Puede leer sobre la distribución en sí aquí , y aquí sobre su uso junto con mallas recurrentes. Esta distribución tiene dos parámetros α y β. α indica cuándo ocurrirá el evento, y β indica qué tan seguro es el algoritmo. Aunque la aplicación de este enfoque es prometedora, en este caso surgen dificultades para entrenar la red neuronal, ya que al principio es más fácil que el algoritmo sea inseguro que predecir una vida útil adecuada.

Por separado, vale la pena señalar la regresión de Cox . Le permite predecir la tolerancia a fallas del sistema para cada punto en el tiempo después del diagnóstico, presentándolo como un producto de dos funciones. Una función es la degradación del sistema, independientemente de sus parámetros, es decir. común a cualquiera de estos sistemas. Y el segundo es una dependencia exponencial de los parámetros de un sistema particular. Entonces, para una persona, hay una función común asociada con el envejecimiento, más o menos la misma para todos. Pero el deterioro de la salud también se asocia con el estado de los órganos internos, que es diferente para todos.

Espero que ahora sepa un poco más sobre el mantenimiento predictivo. Estoy seguro de que tendrá preguntas sobre los métodos de aprendizaje automático que se utilizan con mayor frecuencia para esta tecnología. Estaré encantado de responder a cada uno de ellos en los comentarios. Si está interesado en no solo preguntar sobre lo que está escrito, sino que quiere hacer algo similar, nuestro equipo CleverDATA siempre está encantado de contar con profesionales talentosos y entusiastas.

¿Hay vacantes? Por supuesto!

Source: https://habr.com/ru/post/447190/


All Articles