Pregunta

Tengo un sistema que administra equipos. Cuando estos equipos están defectuosos, serán reparados. Imagina que mi conjunto de datos se ve así:

ID
Type
# of times serviced

Datos de ejemplo:

|ID| Type       | #serviced |
|1 | iphone     | 1         |
|2 | iphone     | 0         |
|3 | android    | 1         |
|4 | android    | 0         |
|5 | blackberry | 0         |

Lo que quiero hacer es que quiero predecir "de todos los equipos que no han sido atendidos, ¿cuáles probablemente sean reparados"? (es decir) identificar equipos "en riesgo".

El problema es que mis datos de entrenamiento serán #serviced> 0. cualquier #Servicio = 0 no se congelará y no parece ser candidatos válidos para incluir en la capacitación. (es decir), cuando falle, será reparado, por lo tanto, el recuento aumentará.

  1. ¿Es este un problema supervisado o sin supervisión? (Supervisado porque he atendido y no atendidos etiquetas, sin supervisión porque quiero agrupar no servido con servicio y allí identificando equipos en riesgo)

  2. ¿Qué datos debo incluir en la capacitación?

Nota:

El ejemplo obviamente se simplifica. En realidad tengo más características que describen el equipo.

¿Fue útil?

Solución

Debe incluir datos cuando el teléfono recibió servicio para crear un modelo de supervivencia. Estos modelos se usan comúnmente en ingeniería de confiabilidad, así como en la eficacia del tratamiento. Para la ingeniería de confiabilidad, es muy común ajustar sus datos a una distribución de Weibull. Incluso los fabricantes de aeronaves consideran que el modelo es confiable después de calibrar con tres a cinco puntos de datos. Puedo recomendar encarecidamente el paquete R 'FlexSurv'.

No puede usar regresiones lineales o logísticas típicas, ya que algunos teléfonos en su población dejarán su período de observación sin ser atendido. Los modelos de supervivencia permiten este tipo de información faltante (esto se llama censura).

Por lo general, tendrías los siguientes datos

|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

Con esos datos puede crear el siguiente modelo en R

require(survival)
model <- survfit(Surv(months_since_purchase, serviced) ~ strata(Type) +
 cluster(ID), data = phone_repairs)

los survfit.formula Surv(months_since_purchase, serviced) ~ strata(Type) + cluster(ID)indica que months_since_purchase es el momento en que se hizo una observación, serviced es 1 si el teléfono fue reparado y 0 de lo contrario, strata(Type)se asegurará de que cree un modelo de supervivencia diferente para cada teléfono,cluster(ID) Se asegurará de que los eventos relacionados con la misma identificación se consideren un clúster.

Podría extender este modelo con modelos conjuntos como JM.

Otros consejos

Este es un problema de aprendizaje supervisado. Type es un predictor. #serviced El clasificador es la variable objetivo. El modelo está entrenado en muestras que ya tienes. La mejor suposición es que cualquier modelo no tendrá una capacidad predictiva sustancial. Type no es suficiente.

Intente incluir más factores (predictores) en el modelo. Me gusta years_being_in_usage, equipment_model, have_been_in_service_before y así. Cuanto más obtenga, mejor modelo podrá entrenar.

Licenciado bajo: CC-BY-SA con atribución
scroll top