Vorhersage für Geräteausfall
Frage
Ich habe ein System, das Ausrüstungen verwaltet. Wenn diese Geräte fehlerhaft sind, werden sie gewartet. Stellen Sie sich vor, mein Datensatz sieht so aus:
ID
Type
# of times serviced
Beispieldaten:
|ID| Type | #serviced |
|1 | iphone | 1 |
|2 | iphone | 0 |
|3 | android | 1 |
|4 | android | 0 |
|5 | blackberry | 0 |
Was ich tun möchte, ist, ich möchte "alle nicht gewarteten Geräte, die wahrscheinlich gewartet werden" vorhersagen, was wahrscheinlich gewartet wird? " (dh) identifizieren "am Risiko" ausgerichtet.
Das Problem ist, dass meine Trainingsdaten #Serviced> 0 sind. Jeder #Serviced = 0 wird nicht eingefroren und scheint keine gültigen Kandidaten zu sein, um sie in das Training einzubeziehen. (dh) Wenn es fehlschlägt, wird es gewartet, daher wird die Anzahl steigen.
Ist das ein beaufsichtigtes oder unbeaufsichtigtes Problem? (Beaufsichtigt, weil ich unbeaufsichtige Etiketten gewartet und nicht serviert wurde, weil ich mich nicht mit gewartetem und dort ausgestattet habe, indem ich gefährdete Ausrüstungen identifizieren möchte)
Welche Daten soll ich in das Training einbeziehen?
Notiz:
Das Beispiel ist offensichtlich vereinfacht. In Wirklichkeit habe ich mehr Funktionen, die die Ausrüstung beschreiben.
Lösung
Sie sollten Daten einfügen, wenn das Telefon gewartet wurde, um ein Überlebensmodell zu erstellen. Diese Modelle werden üblicherweise sowohl in Zuverlässigkeitstechnik als auch in der Wirksamkeit der Behandlung verwendet. Für Zuverlässigkeitstechnik ist es sehr häufig, Ihre Daten in eine Weibull -Verteilung anzupassen. Sogar Flugzeughersteller betrachten das Modell nach Kalibrieren mit drei bis fünf Datenpunkten als zuverlässig. Ich kann das R -Paket 'Flexsurv' Paket sehr empfehlen.
Sie können typische lineare oder logistische Regressionen nicht verwenden, da einige Telefone in Ihrer Bevölkerung Ihre Beobachtungsphase verlassen, ohne jemals gewartet zu werden. Überlebensmodelle ermöglichen diese Art von fehlenden Informationen (dies wird als Zensur bezeichnet).
Normalerweise hätten Sie die folgenden Daten
|ID| Type | serviced | # months_since_purchase
|1 | iphone | 1 | 12
|2 | iphone | 0 | 15
|3 | android | 1 | 2
|4 | android | 0 | 10
|5 | blackberry | 0 | 5.5
Mit diesen Daten können Sie das folgende Modell in R erstellen
require(survival)
model <- survfit(Surv(months_since_purchase, serviced) ~ strata(Type) +
cluster(ID), data = phone_repairs)
Das survfit.formula
Surv(months_since_purchase, serviced) ~ strata(Type) + cluster(ID)
zeigt an, dass months_since_purchase
ist die Zeit, zu der eine Beobachtung gemacht wurde, serviced
ist 1, wenn das Telefon gewartet wurde und sonst 0, strata(Type)
Stellen Sie sicher, dass Sie für jedes Telefon ein anderes Überlebensmodell erstellen.cluster(ID)
Stellen Sie sicher, dass Ereignisse in Bezug auf dieselbe ID als Cluster betrachtet werden.
Sie könnten dieses Modell mit gemeinsamen Modellen erweitern, z. JM
.
Andere Tipps
Dies ist beaufsichtigtes Lernproblem. Type
ist ein Prädiktor. #serviced
Der Klassifizierer ist die Zielvariable. Das Modell ist auf Proben -Set trainiert, die Sie bereits haben. Die beste Vermutung ist, dass jedes Modell keine wesentlich vorhersagefähige Fähigkeiten haben wird. Type
ist nicht genug.
Versuchen Sie, weitere Faktoren (Prädiktoren) in das Modell aufzunehmen. Wie years_being_in_usage
, equipment_model
, have_been_in_service_before
usw. Je mehr Sie bekommen, desto besser können Sie trainieren.