Вопрос

У меня есть система, которая управляет оборудованием.В случае неисправности оборудования его обслуживают.Представьте, что мой набор данных выглядит так:

ID
Type
# of times serviced

Пример данных:

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

Что я хочу сделать, так это спрогнозировать «из всего оборудования, которое не обслуживалось, какое, скорее всего, будет обслуживаться»?(т.е.) выявить оборудование, находящееся в зоне риска.

Проблема в том, что мои данные обучения будут #serviced > 0.Любой #serviced=0 не будет заморожен и не будет подходящим кандидатом для включения в обучение.(т. е.) в случае сбоя он будет обслужен, поэтому счет увеличится.

  1. Это контролируемая или неконтролируемая проблема?(контролируемый, потому что у меня есть обслуживаемые и необслуживаемые метки, неконтролируемый, потому что я хочу кластеризовать необслуживаемые с обслуживаемыми и там идентифицировать оборудование, подверженное риску)

  2. Какие данные я должен включить в обучение?

Примечание:

Пример явно упрощен.На самом деле у меня больше характеристик, описывающих оборудование.

Это было полезно?

Решение

Вам следует включить данные о том, когда телефон обслуживался, чтобы создать модель выживания.Эти модели обычно используются в области обеспечения надежности, а также эффективности лечения.Для проектирования надежности очень часто данные подгоняются под распределение Вейбулла.Даже производители самолетов считают модель надежной после калибровки по трем-пяти точкам данных.Я очень рекомендую пакет R «flexsurv».

Вы не можете использовать типичные линейные или логистические регрессии, поскольку некоторые телефоны в вашей популяции выйдут из периода вашего наблюдения, даже не обслуживаясь.Модели выживания допускают такую ​​недостающую информацию (это называется цензурой).

Обычно у вас будут следующие данные

|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

С помощью этих данных вы можете создать следующую модель в R

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

А survfit.formula Surv(months_since_purchase, serviced) ~ strata(Type) + cluster(ID)указывает на то, что months_since_purchase это время, когда было сделано наблюдение, serviced равно 1, если телефон обслуживался, и 0 в противном случае, strata(Type)позаботится о том, чтобы вы создали отдельную модель выживания для каждого телефона,cluster(ID) Убедитесь, что события, относящиеся к тому же идентификатору, рассматриваются как кластер.

Вы можете расширить эту модель с помощью совместных моделей, таких как JM.

Другие советы

Это проблема обучения. Type является предиктором. #serviced Классификатор является целевой переменной. Модель обучена настройке образцов, которые у вас уже есть. Лучше всего предположить, что любая модель не будет иметь существенной прогностической способности. Type недостаточно.

Попробуйте включить больше факторов (предикторов) в модель. Нравиться years_being_in_usage, equipment_model, have_been_in_service_before и так далее. Чем больше вы получаете, тем лучше вы можете тренировать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top