Прогнозируем Обслуживание Оборудования... На Основе Истории Service Desk

Попробуем спрогнозировать заявки на обслуживание оборудования на основе истории обращений в Сервисдеск.

У компании есть однотипное оборудование в разных регионах, например, машины или серверы.

Есть сервисный отдел, который выполняет заявки на обслуживание серверов: чистка, замена деталей, обновление ПО.

Есть система Service Desk, в которой история этих обращений хранится несколько лет. Специалист, осуществлявший обслуживание сервера, заполняет и закрывает заявку в системе Service Desk. Исходные данные: набор данных со следующими полями:

  • номер запроса в службу поддержки;
  • дата начала и дата окончания работ;
  • регион и расположение сервера;
  • сервер, производитель, модель, серийный номер;
  • вид выполняемых работ (справочник);
Какие проблемы в исходных данных:
  • нет списания запчастей на ТО, что это за запчасти и на какой сервер списываются.

    Однако было очень полезно зафиксировать эти данные;

  • Срок завершения работ иногда указывается аж на месяц позже, что говорит о том, что не стоит рассчитывать на длительность работ. Поле пришлось убрать;
  • Набор данных очень короткий, охватывает всего полтора года, с ноября 2019 года по август 2021 года.

    Это уже очень плохо;

Анонимизированный набор данных опубликован на Кагле.

В датасете оборудование условно названо «Ноутбук».

Задача-минимум: спрогнозировать, какие серверы потребуют обслуживания в следующем месяце.

Задача-максимум: задача-минимум также состоит в том, чтобы спрогнозировать тип услуги, то есть какой сервер какой тип услуги потребует в следующем месяце.

В данной статье описаны основные моменты решения задачи минимума.

Я еще не справился с задачей-максимумом.

Добавьте параметр time_diff — «Обслуживался ли ноутбук в прошлом месяце»:

  
  
  
  
  
   

def get_timediff(df): temp = [] for i in df['NB_SerialNumber'].

unique(): df = data[data["NB_SerialNumber"] == i].

sort_values(by = ["YearMonth"]) df['Datetime'] = pd.to_datetime(df[['Day','Month','Year',]] .

astype(str).

apply(' '.

join, 1), format='%d %m %Y') df['time_diff'] = df['Datetime'].

diff() df['time_diff'] = df['time_diff'].

apply(lambda x: x.days/30) df['time_diff'] = df['time_diff'].

fillna(0) df['time_diff'] = df['time_diff'].

astype(int) temp.append(df) return(temp) my_data = get_timediff(data) my_data_df = pd.concat(my_data)

Для обучения возьмем период с начала по май:

df_train = my_data_df[(my_data_df['YearMonth'].

isin( [201911, 201912, 202001, 202002, 202003, 202004, 202005, 202006, 202007, 202008, 202009, 202010, 202011, 202012, 202101, 202102, 202103, 202104, 202105 ] ) )]

Поскольку нам нужно только значение того, обслуживался ли он в прошлом месяце, в time_diff нужно только одно, остальное удаляется:

df_train.time_diff.value_counts() df_train = df_train[df_train.time_diff != -1] df_train = df_train[df_train.time_diff != 2] df_train = df_train[df_train.time_diff != 3] df_train = df_train[df_train.time_diff != 4] df_train = df_train[df_train.time_diff != 5] df_train = df_train[df_train.time_diff != 6] df_train = df_train[df_train.time_diff != 7] df_train = df_train[df_train.time_diff != 8] df_train = df_train[df_train.time_diff != 9] df_train = df_train[df_train.time_diff != 10] df_train = df_train[df_train.time_diff != 11] df_train = df_train[df_train.time_diff != 12] df_train = df_train[df_train.time_diff != 14]

Укажем только категориальные характеристики:

categorical_features_indices = np.where(X_train.dtypes != np.float)[0]

Дальше мы учим:

model = CatBoostRegressor(iterations=100, depth=15, learning_rate=0.01, loss_function='RMSE') cat_features=[0,1,2,3,4,5,6] model.fit(X_train, y_train, cat_features)

В качестве порогового значения принимаем 0,2:

preds_raw = model.predict(X_test, prediction_type='RawFormulaVal') preds_raw_df=pd.DataFrame(preds_raw) lst=[] for i in preds_raw_df[0]:

Теги: #python #машинное обучение #Service Desk #машинное обучение

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.