Mai 2019

Band 34, Nummer 5

[Machine Learning]

Verwenden von Lebensdaueranalysen für Predictive Maintenance

Durch Zvi Topol | Mai 2019

Vor einigen Jahren ich die Grundlagen von lebensdaueranalysen vorgestellt und beschrieben, wie Sie einen parameterfreien Algorithmus namens Kaplan-Meier in implementieren C# (msdn.com/magazine/dn630650). Jetzt möchte ich noch einmal ansehen lebensdaueranalysen, vor allem zwei erweiterte Methoden erstellen, die auf beiden Plattformen im Bereich des Machine Learning, Spark Machine Learning-Bibliothek (MLLib) verfügbar sind und h2o.ai, die beide von Azure HDInsight unterstützt werden. Ich verwende einen Anwendungsfall für die vorbeugende Wartung als im aktuellen Beispiel.

Vorhersagbarer Wartungsbedarf für das Industrial Internet der Dinge

Die Grundidee hinter der Industrie Internet der Dinge (IIoT) besteht darin, zum Verbinden von Computern, Geräten, Sensoren und industriellen Anlagen und Anwendungen innerhalb einer Organisation und ständig Sammeln von Daten, z. B. Systemfehler und Telemetriedaten, von allen Diese mit dem Ziel, analysieren und Bearbeiten auf diese Daten, um die Betriebseffizienz optimieren.

Das Ziel der vorbeugenden Wartung ist, genau vorherzusagen, wenn ein Computer oder der Komponenten schlägt fehl. Wenn Sie dies tun können, können Sie die Wartung durchführen, kurz bevor der Fehler dieser Art auftreten vorhergesagt wird. Dies ist effizienter als die keine Wartung nicht ausführen, bis ein Fehler auftritt, in diesem Fall der Computer oder die Komponente nicht verfügbar, wird bis der Fehler behoben wurde, ist in der Tat dies behebbaren. Ungeplante Downtime ist wahrscheinlich sehr kostspielig sein.

Vorbeugende Wartung ist auch effektiver als vorbeugende Wartung in regelmäßigen Abständen, die auch der Leistungsseite sein konnte, da unnötige Wartung angewendet werden kann.

Im Beispiel und die Daten, die ich verwende, sind Sie eine angepasste Version des des Beispiels am bit.ly/2J4WnbN. Das Beispiel enthält 100 Produktionskalender Computer, auf dem keine Abhängigkeiten zwischen den Computern. Jeder Computer ist eine der vier Modelle.

Die Daten für die Computer enthält einen Verlauf der Fehler, Wartungsvorgänge und Sensor Telemetriedaten sowie Informationen über das Modell und das Alter (in Jahren) der Computer an. Diese Daten sind in CSV-Dateien, die von der Ressource, die zuvor erwähnten verfügbar. Ich gebe auch eine transformierte Datendatei (comp1_df.csv), "Survival Analysis-Ready", und erläutern, wie weiter unten auf die Durchführung der Transformationen.

Jeder Computer im ursprünglichen Beispiel besteht aus vier verschiedenen Komponenten, aber ich möchte den Fokus nur in einer Komponente. Die Komponente kann werden proaktiv vor einem Ausfall beibehalten oder verwaltet werden, nach einem Ausfall zu reparieren.

Lebensdaueranalysen

In meinem vorherigen Artikel zu lebensdaueranalysen habe ich wichtige grundlegende Konzepte, die ich verwende und erweitern in diesem Artikel vorgestellt. Sollten Sie dieses Artikels vertraut mit diesen Konzepten, wie z.B. die Funktionen Überleben und kippgefahr censoring und die parameterfreien Kaplan-Meier (KM) kann.

In diesem Artikel zeige ich, wie erweitert das Konzept der KM zu Covariates oder Variablen (auch bekannt als "Features"), die Auswirkungen auf Survival oder, in diesem Fall auf Computer Fehler bei haben kann. Im Beispiel ich Machine-Modell, Computer Alter und Telemetriedaten als Covariates verwenden und regressionsmodellen Überleben verwenden, um die Auswirkungen solcher Covariates auf Fehler bei Computern zu schätzen. 

Das Konzept der Einschätzung der Auswirkungen der Covariates auf eine Zielvariable in diesem Fall Zeit für Fehler, kippgefahr Rate oder Survival Wahrscheinlichkeiten, gilt nicht nur für lebensdaueranalysen und bildet die Grundlage für regressionsmodelle in der Regel.

Wenn statistischer Modelle zu erstellen, sehen Sie Covariates von drei primäre Datentypen: kategorische, ordinal und einen zusammenhängenden. Categorical-Datentypen sind solche, die in ein paar diskrete Kategorien fallen. Hier ist ein Machine-Modell ein Kategoriedaten – es gibt vier verschiedene Computer Modelle. Ordinal-Datentypen sind categorical-Datentypen, die eine sinnvolle Reihenfolge haben. Z. B. Bewertungen von Filme aus 10, 10, in denen die meisten unterhaltsame ist und der geringsten. Schließlich sind kontinuierliche Datentypen, die fortlaufende Nummern darstellen. Die wäre die Telemetriedaten Literatur für Computer, die fortlaufende Nummern Stichproben zu bestimmten Zeiten (in diesem Fall, stündlich) sind.

Nachdem Sie identifiziert die Datentypen und die Methodik, die verwendet werden, sollten Sie die verschiedenen Datentypen in Covariates codieren. In der Regel werden für regressionsmodelle eine kontinuierliche Variable auf natürliche Weise als fortlaufende Covariates, codiert während categorical-Datentypen auf eine Art von Codierung erforderlich sind. Eine beliebte Option für diese Codierung, die ich in diesem Artikel verwenden werde, ist, wobei für Kategoriedaten Typen mit N-Kategorien, n-1-Covariates erstellt werden, und eine Kategorie i wird dargestellt, durch Festlegen der bestimmten kovariaten für alle Werte anderen der auf 0 (null). Die n-ten Kategorie wird dargestellt, indem Sie alle Covariates auf 0 (null) festlegen. Dies ist normalerweise eine gute Wahl für regressionsmodelle mit einem explizit definierten Baseline, wobei alle Covariates gleich 0 (null) sein können. Dies ist auch das Format, das die Programmiersprache R verwendet, um kategorievariablen oder Faktoren zu codieren.

Diese Codierung für Categoricals hat eine einfache Interpretation für Bedeutung für einige oder alle Covariates auf NULL festgelegt werden. Allerdings für kontinuierliche Datentypen durch Festlegen einer bestimmten kovariaten auf 0 (null) immer sinnvoll möglicherweise nicht. Z. B., wenn eine kovariaten, Computer Höhe oder Breite, Einstellung darstellt wäre, kovariaten 0 (null) bedeutungslos, da keine solche Computer vorhanden, in der Praxis sind.

Eine Möglichkeit, um dieses Problem ist die Verwendung von Mean zentriert fortlaufende Covariates für einen bestimmten kovariaten, wird der Mittelwert für das Trainings-Dataset, in dem von seinem Wert subtrahiert. Klicken Sie dann, wenn Sie diese transformierten kovariaten auf 0 (null) festlegen, ist es identisch mit dem die ursprünglichen kovariaten auf den mittleren Wert festlegen. Diese Technik heißt "bedeutet, dass zentrieren", und ich verwende hier für die Computer-Age "und" Telemetrie Covariates.

Es ist wichtig, denken Sie daran, diese folgen diese Transformation, sollten Sie stets mittlere zentriert Covariates als Eingabe für das Modell verwenden. Dies ist auch der Fall, beim Anwenden von Modell für die Regression auf ein neues testdataset.

Nachdem die Datenwerte als Covariates codiert sind, dauern regressionsmodelle Überleben diese Covariates und eine bestimmte Form der Survival-Target-Variablen (die ich in Kürze eingehen werde) klicken Sie dann, und geben Sie ein Modell, das die Auswirkungen solcher Covariates auf Survival/Zeit-zu-Ereignis verbindet. .

Die Transformation der Daten, die Survival-Format und Featureentwicklung

Die Arbeit mit der Survival regressionsmodelle, die ich beschreibe die Daten müssen über mindestens zwei Felder enthalten: der Zeitstempel des Ereignisses von Interesse sind (in diesem Fall Computerfehler) und ein boolesches Feld, der angibt, ob censoring aufgetreten ist. (Hier wird beschrieben, censoring eine Situation, in der kein Fehler an oder vor einem bestimmten Zeitpunkt aufgetreten ist. In diesem Beispiel gilt Wartung geschieht Weise eine vorbeugende Maßnahmen zu ergreifen und nicht als Antwort auf Fehler, censoring sein.

Die Survival-regressionsmodelle erläutert haben verschiedene Annahmen, die ihre mathematischen Ableitung zu vereinfachen. Alle diese Annahmen können nicht hier speichern, aber es ist dennoch nützlich für das Überleben datenmodellierung, um dieses Beispiel gelten.

Die Sicherheitsleitfaden Analysis-Literatur ist sehr umfangreiche und viele erweiterte Survival regressionsmodelle und Techniken wurden entwickelt, um die Adresse und entspannen Sie sich einige der Annahmen. Erfahren Sie mehr über solche Modelle und Techniken, die im Buch "Der statistischen Analyse der Fehler Zeitdaten" Kalbfleisch und Prentice (Wiley-Interscience, 2002), am bit.ly/2TACdLR.

Erstellen die Annahme, dass jede Wartungsvorgang für eine Komponente des Computers vollständig diese Komponente wird zurückgesetzt, und daher unabhängig voneinander behandelt werden kann. Kann dann Survival-Regression verwenden, auf zwei Arten von Intervalle (dargestellt Abbildung 1):

  • Das Intervall zwischen einem Fehler und die vorherigen Wartungsvorgang (Time-Ereignis).
  • Das Intervall zwischen nachfolgenden Wartungsvorgänge (censoring).

Survival-Darstellung des Computerausfälle
Abbildung 1 Überleben Darstellung Computerausfälle

Jedes Intervall in Abbildung1 beginnt mit einem Vorgang zur Wartung. Der erste Typ der Intervall endet mit X, ein Fehler auftritt, während der zweite Typ mit O, eine andere Wartungsvorgang vor einem Ausfall endet (Dies ist im Wesentlichen eine proaktive Wartung-Vorgang), das in diesem Fall eine zensierten Beobachtung bedeutet, der angibt, der angibt.

Aus diesem Grund müssen die ursprünglichen Daten in dieses Format mit den zwei erforderlichen Feldern transformiert werden. Das Feld "Time_to_event" stellt dar, die Zeit in Stunden, bis entweder Fehler oder die nächste Wartung erfolgt. Das Feld "Event" wird zu einem Fehler und für einen Wartungsvorgang vor Fehler 0 (null) festgelegt.

Es ist häufig wünschenswert, dass Sie zusätzliche Transformationen für die Covariates ausführen, die häufig "Featureentwicklung" aufgerufen wird Dieser Prozess dient zum Generieren von Covariates mit besser vorhersageleistung. Beispielsweise können Sie einen anderen kovariaten erstellen, die in den 10 Stunden vor dem Fehler den Mittelwert der Druck berechnet. Es gibt viele verschiedene Optionen zum Erstellen solcher Covariates für Funktionen und mögliche Zeitfenster, und es gibt einige Tools Sie die Automatisierung dieses Prozesses, z. B. die open-Source-Python-Paket Tsfresh unterstützen können (tsfresh.readthedocs.io/en/ neueste).

Jetzt werde ich die zwei Survival regressionsmodelle erläutert: das Cox proportional kippgefahr-Modell (oder die Cox PH-Modell) in h2o.ai und die Weibull-Ausfallzeit Accelerated-Modell in Spark MLLib verfügbar.

Cox Proportional Gefahren Regression

Denken Sie daran, dass eine Funktion eines Stromschlags bestimmt die ereignisrate zur Zeit t für Objekte oder Einzelpersonen, die bei "t" Zeit aktiv sind. Sie können beispielsweise die vorbeugende Wartung als die Wahrscheinlichkeit, wenn ein in der nächsten Stunde für einen bestimmten Zeitraum t und für alle Computer, in dem die Komponente 1 seit ihrer letzten Wartungsplans Fehler noch nicht, beschrieben werden. Höhere kippgefahr Raten implizieren höheres Risiko Fehler auftreten. Die Regression Cox PH schätzt die Auswirkungen der Covariates auf die Rate kippgefahr gemäß dem folgenden Modell:

Hier ist h(t) ist die kippgefahr-Funktion zur Zeit t, h0(t) ist die Baseline-kippgefahr zum Zeitpunkt der t, Xi Variablen werden die verschiedenen Covariates und die entsprechenden Betaversionen sind die Koeffizienten, die für die Covariates (mehr dazu etwas weiter unten). Baseline besteht die Gefahr bei der alle Covariates gleich 0 (null) sind. Beachten Sie, dass dies auf das Konstante Glied in andere regressionsmodelle, z. B. linearer oder logistischer Regression eng verknüpft ist.

Nach diesem Modell besteht keine direkte Beziehung zwischen der Covariates und dem Sicherheitsleitfaden zur Verfügung. Dieses Modell wird teilweise parametrische bezeichnet, da es sich bei der kippgefahr-Rate, mit der Uhrzeit t ist eine Funktion von einer Baseline kippgefahr Rate, die aus der Daten geschätzt wird, und verfügt nicht über einen parametrischen geschlossene Form und eine multiplicative-Komponente, die parametrisiert ist.

Der Grund für den dieses Modell ein Modells proportional kippgefahr heißt ist, da es Ihnen ermöglicht, die das Verhältnis zwischen zwei kippgefahr Funktionen verglichen werden soll. In diesem Fall ist das erhält eine geschätzte Modell, das Verhältnis zwischen zwei verschiedenen Datenpunkten aus:

Die Rate der Baseline kippgefahr hebt auf, und das resultierende Verhältnis zwischen Ihnen die Gefahren ist nur eine Funktion der Koeffizienten und Covariates und wieder gilt unabhängig davon Zeit. Dies ist eng verwandte, logistische Regression, in dem das Protokoll die Chancen geschätzt wird. Darüber hinaus nicht das Regressionsmodell Cox PH direkt das Überleben angeben-Funktion und die Informationen, die es konzentriert sich auf dem Verhältnis oder Teil eines Stromschlags Funktionen bietet. Aus diesem Grund wird es hauptsächlich um die Auswirkungen der Covariates auf überlebensfähigkeit zu verstehen, sondern direkt schätzen Sie die Survival-Funktion verwendet.

Mit der Cox PH können angegebenen Modells, die Koeffizienten und die nicht parametrischen Baseline kippgefahr geschätzt werden mithilfe verschiedener Verfahren. Eine gängige Methode ist teilweise maximum-Likelihood-Schätzung (auch in h2o.ai verwendet).

Der folgende Codeausschnitt ist ein R-Skript, das eine Schätzung der Cox PH-Modell, das mithilfe von h2o.ai in der mittleren zentriert Covariates (Telemetriedaten und Alter) und das kategorische kovariaten-Machine-Modell ausgeführt wird:

library(h2o)
localH2O <- h2o.init()
inputFileName<-'comp1_df.csv'
df<-read.csv(inputFileName, header=TRUE, stringsAsFactors=TRUE)
df.hex <- as.h2o(df, key = "df.hex")
model <- h2o.coxph(x = c("age_mean_centered", "model","volt_mean_centered",
  "rotate_mean_centered","pressure_mean_centered", "vibration_mean_centered"),
  event_column = "event", stop_column ="time_to_event" ,training_frame = df.hex)
summary(model)

Zum Zeitpunkt der Erstellung dieses Dokuments nicht das Cox PH-Modell in h2o.ai aus Python verwendet werden, damit R-Code bereitgestellt wird. Anweisungen zur Installation finden Sie unter bit.ly/2z2QweL, oder für h2o.ai mit Azure HDInsight, am bit.ly/2J7nXp6.

Den Codeausschnitt ausgeführt, generiert die Ausgabe in abbildung2.

Abbildung 2: Ausgabe für die Regression Cox PH

Surv(time_to_event, event) ~ model + volt_mean_centered + rotate_mean_centered +
    pressure_mean_centered + vibration_mean_centered + age_mean_centered
  n= 709, number of events= 192
                               coef      exp(coef) se(coef)    z      Pr(>|z|)   
model.model2                  -0.066955  0.935237  0.257424 -0.260    0.795   
model.model3                  -0.021837  0.978400  0.215614 -0.101    0.919   
model.model4                   0.308878  1.361896  0.227469  1.358    0.174   
volt_mean_centered             0.031903  1.032418  0.003990  7.995    1.33e-15 ***
rotate_mean_centered           0.001632  1.001633  0.001362  1.199    0.231   
pressure_mean_centered        -0.008164  0.991869  0.005768 -1.415    0.157   
vibration_mean_centered        0.018220  1.018387  0.013866  1.314    0.189   
age_mean_centered              0.004804  1.004815  0.013293  0.361    0.718   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
                                  exp(coef) exp(-coef) lower .95 upper .95
model.model2                      0.9352     1.0692    0.5647     1.549
model.model3                      0.9784     1.0221    0.6412     1.493
model.model4                      1.3619     0.7343    0.8720     2.127
volt_mean_centered                1.0324     0.9686    1.0244     1.041
rotate_mean_centered              1.0016     0.9984    0.9990     1.004
pressure_mean_centered            0.9919     1.0082    0.9807     1.003
vibration_mean_centered           1.0184     0.9819    0.9911     1.046
age_mean_centered                 1.0048     0.9952    0.9790     1.031
Rsquare= 0.094   (max possible= 0.941 )
Likelihood ratio test= 70.1  on 8 df,   p=4.69e-12
Wald test            = 70.19  on 8 df,   p=4.514e-12

Die erste wichtig zu beachten ist der geschätzten Koeffizienten, der die Covariates. Die kovariaten Machine-Modell wird als Typ kategorische Daten codiert. Die Baseline für diese Kategorie ist Modell1, die dargestellt wird, indem Sie die drei Covariates Codierung die anderen drei Computer Modelle (model.model2 und model.model3 model.model4) 0 (null) festlegen. Jede kovariaten Ruft einen eigenen Koeffizienten ab. Es ist wichtig, zu verstehen wie die Koeffizienten zu interpretieren.

Wenn Sie den Typ der Funktion auf die Koeffizienten für den Computer Modell Covariates (exp(coeff) in der Ausgabe) anwenden, sehen Sie sich, dass diese model.model2 hat den Wert 0.9352, während model.model4 1.3619 Wert besitzt. Dies bedeutet, dass Computer model2 eine Rate kippgefahr 6.5 % niedriger als der Gefahr von der Baseline-Machine-Modell (Model-1) ist, und Computer model.model4 Gefahr deutlich mehr durch 36.2 Prozent im Vergleich zu Computern des model.model1 verfügen. Das heißt, verfügen über Computer model.model4 das höchste Risiko eines Ausfalls, Computer model.model2 das geringste Risiko eines Ausfalls. Aus diesem Grund bei Wartungsvorgänge zu priorisieren, sollte das Modell des Computers als wichtige Faktoren berücksichtigt werden.

Alle anderen Covariates sind Mean zentriert fortlaufende Covariates. Die Interpretation der Koeffizienten, die sie zugeordnet ist, die jetzt durch das exponential des der Covariates rund um die bedeutet, dass das Verhältnis eines Stromschlags angegeben ist. Aus diesem Grund durch das Erhöhen eines kovariaten-Wert, um eine Einheit (aktualisieren alle anderen Covariates behoben), das Verhältnis eines Stromschlags erhöht bzw. verringert vom der Exponentialwert des Koeffizienten (auf ähnliche Weise mit der kategorischen Variable). Daher erhöht, z. B. durch das Erhöhen der Spannung, um eine Einheit an, das Risiko für einen Fehlschlag 3.2 Prozent.

Ein weiterer wichtiger Punkt hier ganz zu schweigen von bezieht sich auf Modell Diagnoseverfahren anwenden. Solche Methoden bieten eine Grundlage, um zu verstehen, ob das Modell als (in diesem Fall das Cox PH-Modell) geeignet ist. Hier ist der Wert Rsquare (ein Wert zwischen Null und einem, desto besser) relativ niedrig (0.094) und die meisten der Z-Werte der Koeffizienten nicht anzugeben, dass die Koeffizienten statistisch signifikanten sind (es ist nicht genügend Beweise, unterstützen Sie sind nicht gleich null). Sowohl diese Indikatoren führen zu dem Schluss, dass genügend Platz für eine Verbesserung, z. B. über die Featureentwicklung vorhanden ist. Es gibt auch weitere statistische Tests verfügbar, die für das Modell Cox PH spezifisch sind, die ausgeführt werden soll. Finden Sie die Survival-Analysis-Literatur erwähnte zuvor Weitere Details.

Das Modell für die beschleunigte Fehler

Das Survival-Regressionsmodell in Spark MLLib ist die beschleunigte Fehler Zeit (AFT)-Modell. Dieses Modell gibt eine Survival-Funktion aus einer bestimmten theoretischen mathematische Verteilung (Weibull) direkt und verfügt über die beschleunigte Fehler Zeit-Eigenschaft.

Die FAILOVERAKTION Modell wird wie folgt definiert. Angenommen Sie, ein Objekt mit dem (lineare) Covariates und Koeffizienten gekennzeichnet ist:

Darüber hinaus vorausgesetzt, dass das Objekt verfügt über einen parametrischen Survival-Funktion s(t) und, durch s0(t), die Survival-Funktion, der eine Baseline-Objekt (mit allen Covariates auf 0 (null) festgelegt gekennzeichnet). Die FAILOVERAKTION Modell definiert die Beziehung zwischen s(t) und s0(t) als:

Aus dieser Definition können Sie sehen, warum das Modell Ausfallzeit Accelerated Modell aufgerufen wird. Es ist da die Survival-Funktion einen Faktor Accelerator enthält, mit der die Exponentialfunktion lineare Kombination aus den Covariates ist die Zeit t Survival multipliziert.

Dieser Typ von Modell ist nützlich, wenn bestimmte Covariates, wie das Alter der vorhanden sind (in meinem Dataset Computer Alter), monotone Beschleunigung oder Verlangsamung der Survival/Ausfallzeit verursachen.

Die Weibull-Verteilung ist eine Generalisierung der exponentiellen Verteilung und einer kontinuierlichen Verteilung in parametrische Survival-Modelle beliebt sind. Es gibt einige Varianten dazu, wie sie parametrisieren. Hier verwende ich die folgende zwei Parametern Weibull Distribution Version t > = 0:

(Es sind auch Versionen mit drei Parametern.) Die beiden Parameter der Verteilung werden die Form, die bestimmt wird, k und der Skala, die von Lambda bestimmt wird. Eine grobe Analogie ist die Möglichkeit, die einer glockenverteilung ein Merkmal Mittelwert und Standardabweichung hat.

Rückruf, der die Beziehung zwischen der f(t) Verteilung Dichte-Funktion, die h(t) kippgefahr-Funktion und die s(t) Survival-Funktion, indem f(t) angegeben ist h(t)s(t) =.

Im folgenden sind die Weibull kippgefahr und Survival-Funktionen:

Im Gegensatz zu den Cox PH-Modell können Sie sowohl das Überleben und die Funktionen eines Stromschlags werden vollständig angegeben und parametrische dargestellt. Näheres Abbildung 3 und Abbildung 4 für Visualisierungen der Weibull-Verteilung und Survival-Funktionen für verschiedene Werte von k und Lambda.

Weibull-Verteilung Form als verschiedener Werte von K und Lambda-Funktion
Abbildung 3 Weibull Distribution Form als verschiedener Werte von K und Lambda-Funktion

WEIBULL Survival-Funktionsbereich für verschiedene Werte von K und Lambda-
Abbildung 4 Weibull Survival-Funktionsbereich für verschiedene Werte von K und Lambda-

Abbildung 5 veranschaulicht die Auswirkungen, die FAILOVERAKTION Modell Covariates auf die Form der Weibull Survival-Funktion haben.

Beschleunigte Ausfallzeit für die Wahrscheinlichkeitsfunktion für Weibull-Orientierungshandbuch
Abbildung 5 Accelerated Ausfallzeit für die Wahrscheinlichkeitsfunktion für Weibull-Orientierungshandbuch

Schätzung der Koeffizienten für das Modell AFT Weibull in Spark MLLib erfolgt mit dem maximum-Likelihood-Schätzung-Algorithmus. Erfahren Sie mehr über die Vorgehensweise unter bit.ly/2XSauom, und suchen Sie den Code zur Implementierung am bit.ly/2HtJw0v.

Im Gegensatz zu den geschätzten abfrageausführungskosten Cox PH Modell, in dem nur die Koeffizienten, der die Covariates (zusammen mit einigen Diagnose) gemeldet werden, erhalten die Ergebnisse von schätzen die Weibull AFT Modellbericht Koeffizienten Covariates sowie spezifische Parameter für die Weibull-Verteilung – ein abfangen und den Scale-Parameter. Ich zeige, wie Sie diese k "und" Lambda in etwas konvertieren.

Die Ergebnisse für die Implementierung Weibull AFT in Spark MLLib übereinstimmen, die Ergebnisse für die Weibull AFT-Implementierung, die mit der Survreg-Funktion aus der beliebten R-Bibliothek "Survival" (Weitere Informationen finden Sie unter bit.ly/2XSxkw8).

Sie können die folgenden R-Skript zum Ausführen der AFT Weibull Modell Schätzung (der Code ausgeführt wird, auf eine lokal installierte Spark MLLi, jedoch können auch das Verwenden von Spark in HDInsight unter bit.ly/2u2U5Qf):

library(survival)
library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib")))
sparkR.session(master = "local[*]")
inputFileName<-'comp1_df.csv'
df<-read.csv(inputFileName, header=TRUE, stringsAsFactors=TRUE)
aftMachineDF<-suppressWarnings(createDataFrame(df))
aftMachineModel <- spark.survreg(aftMachineDF,Surv(time_to_event, event) ~ model +
  age_mean_centered +  volt_mean_centered + rotate_mean_centered +
  pressure_mean_centered + vibration_mean_centered)
summary(aftMachineModel)

Das Skript generiert nur die geschätzten Koeffizienten ohne zusätzlichen Informationen. Es ist möglich, erhalten solche Informationen durch Ausführen von Survreg (da die Ergebnisse entsprechen):

library(survival)
machineModel<-survreg(Surv(time_to_event, event) ~ model + age_mean_centered +
  volt_mean_centered+rotate_mean_centered + pressure_mean_centered +
  vibration_mean_centered, df, dist='weibull')
summary(machineModel)

In diesem Fall wird das R-Skript generiert die Ausgabe in eine sorgfältigere Abbildung 6.

Abbildung 6 Ausgabe für die FAILOVERAKTION Weibull-Regression

survreg(formula = Surv(time_to_event, event) ~ model + age_mean_centered +
    volt_mean_centered + rotate_mean_centered + pressure_mean_centered +
    vibration_mean_centered, data = df, dist = "weibull")
                              Value        Std. Error    z            p
(Intercept)                 8.172991       0.119133    68.6040     0.00e+00
modelmodel2                 0.040289       0.154668    0.2605      7.94e-01
modelmodel3                 0.027225       0.129629    0.2100      8.34e-01
modelmodel4                  -0.163865      0.136382   -1.2015     2.30e-01
age_mean_centered           -0.000753      0.007960    -0.0946     9.25e-01
volt_mean_centered           -0.019731      0.002583   -7.6391     2.19e-14
rotate_mean_centered         -0.000767      0.000821   -0.9334     3.51e-01
pressure_mean_centered       0.005173       0.003496     .4795     1.39e-01
vibration_mean_centered      -0.008214      0.008391   -0.9789     3.28e-01
Log(scale)                   -0.508060      0.051963   -9.7773     1.41e-22
Scale= 0.602
Weibull distribution
Loglik(model)= -1710.3   Loglik(intercept only)= -1747.2
                           Chisq= 73.73 on 8 degrees of freedom, p= 8.9e-13
Number of Newton-Raphson Iterations: 8
n= 709

Bevor Sie mit die Ausgabe zu beschreiben, sollte ich noch erwähnen, dass die Weibull-Parametrisierung in Spark MLLib und Survreg ein wenig anders als die Parametrisierung ist, die diskutiert.

Eine Transformation ist erforderlich und kann wie folgt durchgeführt werden. Kennzeichnen Sie die Parameter gemeldet – Abfangen von m und Skalierung von s – Klicken Sie dann die k = 1/s, Lambda = exp(-m/s) und jeder Koeffizient multipliziert werden soll (-1/s). Es wird ein R-Paket namens SurvRegCensCov, die diese Konvertierung automatisch ausführen können, die mithilfe von ConvertWeibull für das Modell, Survreg geschätzte:

$vars
                                            Estimate        SE
lambda                                    1.260459e-06   8.642772e-07
gamma                                     1.662064e+00   8.636644e-02
modelmodel2                               -6.696297e-02  2.569595e-01
modelmodel3                               -4.524990e-02  2.155000e-01
modelmodel4                               2.723541e-01   2.268785e-01
age_mean_centered                         1.251958e-03   1.322780e-02
volt_mean_centered                        3.279500e-02   3.947495e-03
rotate_mean_centered                      1.274045e-03   1.365339e-03
pressure_mean_centered                    -8.598142e-03  5.807130e-03
vibration_mean_centered                   .365213e-02    1.391255e-02

Gamma ist hier gleich k aus der vorherigen Weibull-Parametrisierung. (Weitere Informationen zu SurvRegCensCov, finden Sie unter bit.ly/2CgcSMg.)

Die geschätzte Parameter an, im Gegensatz zu erhalten, mit dem Cox PH-Modell ist es jetzt möglich, direkt die Survival-Funktion (Dies ist die Weibull AFT Survival-Funktion) zu erhalten und verwenden, um vorherzusagen, Überleben Wahrscheinlichkeiten für jede Covariates. Wenn der erste Punkt im Dataset ein neuer Datenpunkt ist, können Sie Folgendes ausführen:

predict(machineModel, newdata=df[1,], type='quantile')

Dadurch wird die Zeit zum Ereignis (in Stunden) für die Quantile 0,1 und 0,9 (Standardwert), wie folgt:

807.967 5168.231

Dies bedeutet, dass die Covariates des ersten Datenpunkts (hier) wird angegeben, die Wahrscheinlichkeit eines Fehlers ist 10 Prozent am oder kurz vor 807.967 Stunden, die nach einem Vorgang zur Wartung und die Wahrscheinlichkeit eines Fehlers 90 Prozent am oder kurz vor 5168.231 Stunden folgen den Vorgang zur Wartung:

model       age           volt_mean_centered                 rotate_mean_centered
 model3       18                  3.322762                          51.8113
pressure_mean_centered     vibration_mean_centered             age_mean_centered
 10.10773                         11.4267                           6.488011

Sie können auch Parameter "p" verwenden, um die Zeit Sicherheitsleitfaden für alle Quantile zwischen Null und einem abzurufen; beispielsweise durch Hinzufügen des Parameters "p = 0,5" erhalten, dass die mittlere Ausfallzeit, die für den ersten Datenpunkt 2509.814 Stunden nach der ein Wartungsvorgang ist.

Wie bei der Schätzung der Cox PH-Modell erläutert die p-Spalte in der Ausgabe des Survreg der statistischen Bedeutung der Koeffizienten geschätzt, obwohl in diesem Fall die Abbildungen besser sind (niedrigere p-Werte). Es ist immer noch Platz für die Featureentwicklung hier, wie bereits beschrieben wurde, für das Modell Cox PH.

Unbedingt auch zum Ausführen der Diagnose für das Modell hier, wie in der Cox PH-Regression, um sicherzustellen, dass das Modell Weibull AFT geeignet für die Daten verglichen werden, z. B. um andere parametrische Modelle ist der Fall war. Während ich diesen Prozess wird hier nicht beschreiben werde, erhalten Sie weitere Informationen finden Sie in das Buch "Lebensdaueranalysen", die, das weiter oben.

Zusammenfassung

Die Verwendung der vorbeugenden Wartung für die IIoT als einem anschaulichen Beispiel – bei der Einführung von zwei Survival regressionsmodelle, die in verfügbaren vorgestellten h2o.ai und Spark MLLib. Habe ich gezeigt, wie ein Computer Fehler vorbeugende Wartungsproblem im Framework Analysis Survival Codierung Variablen als Covariates und Transformieren die zeitreihendaten Survival-Format zu modellieren. Ich wurde außerdem beschrieben, die zwei Survival-Modelle, die Unterschiede zwischen ihnen und wie sie auf die Daten angewendet. Schließlich habe ich kurz die Interpretation der Ergebnisse und Modell-Diagnose. Es ist wichtig zu beachten, dass ich nur dieses Themas faszinierendes und sehr umfangreiche oberflächlich, und ich Ihnen empfehle, um mehr zu untersuchen. Ausgangspunkt dafür ist also finden Sie in der Literatur, die ich in diesem Artikel erwähnt habe.


Zvi Topolarbeitet als ein datenspezialist in verschiedenen Branchen, einschließlich marketing Analytics, Medien und Unterhaltung und Industrie Internet der Dinge. Er übermittelt wurde, und führen mehrere Machine Learning und Analytics-Projekte, einschließlich natürlicher Sprache und Voice-Schnittstellen, cognitive Search, die Videoanalyse, empfehlungssysteme und marketing Decision Support-Systeme. Topol befindet sich derzeit mit MuyVentive LLC, eine erweiterte Analyse R & D-Unternehmen, und erreichen Sie unter zvi.topol@muyventive.com.

Unser Dank gilt dem folgenden technischen Experten bei Microsoft für die Durchsicht dieses Artikels: James McCaffrey


Diesen Artikel im MSDN Magazine-Forum diskutieren