О чем это? ..

IBM Watson OpenScale — это платформа мониторинга моделей AI/ML для оценки и мониторинга дрейфа, объективности, качества, объяснимости или любых других настраиваемых показателей ваших моделей машинного обучения. Оценить и, таким образом, иметь возможность оценить риск использования моделей машинного обучения в производственной среде. А после запуска в производственной среде используйте OpenScale для постоянного мониторинга моделей машинного обучения на предмет любых нарушений пороговых значений.

С другой стороны, IBM SPSS Modeler предоставляет набор инструментов интеллектуального анализа данных, позволяющих быстро разрабатывать прогнозные модели и выполнять аналитические задачи и тем самым развертывать модели в бизнес-операциях для улучшения процесса принятия решений.

Этот пост посвящен описанию механизма использования OpenScale для мониторинга моделей, созданных с помощью IBM SPSS Modeler.

Детали интеграции..

Рассмотрим вариант использования — прогнозирование оттока клиентов телекоммуникационных компаний. Учитывая набор функций модели, таких как пол клиента, срок действия соединения, потоковое телевидение, фильмы, ежемесячные платежи и т. д., предскажите, покинет ли клиент услугу или нет.

Используя обучающие данные, создается модель с помощью IBM SPSS Modeler.

IBM SPSS Modeler — это ведущее решение для обработки визуальных данных и машинного обучения (ML), призванное помочь предприятиям сократить время окупаемости за счет ускорения операционных задач специалистов по обработке и анализу данных.

Модель — это, по сути, единица работы — для заданного набора функций она предсказывает результат. Чтобы приложение могло использовать или интегрировать эту модель, нам необходимо развернуть его в обслуживающей среде, для чего модель, созданную с помощью SPSS Modeler, можно развернуть в IBM Watson Machine Learning.

IBM Watson Machine Learning предоставляет полный спектр инструментов и услуг, с помощью которых вы можете создавать, обучать и развертывать модели машинного обучения.

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

scoring_data = {
    wml_client.deployments.ScoringMetaNames.INPUT_DATA: [{
            "fields": ["customerID","gender","SeniorCitizen","Partner","Dependents","tenure","PhoneService","MultipleLines","InternetService","OnlineSecurity","OnlineBackup","DeviceProtection","TechSupport","StreamingTV","StreamingMovies","Contract","PaperlessBilling","PaymentMethod","MonthlyCharges","TotalCharges","Churn","SampleWeight"],
        "values":[["3638-WEABW","Female",0,"Yes","No",58,"Yes","Yes","DSL","No","Yes","No","Yes","No","No","Two year","Yes","Credit card (automatic)",59.9,3505.1,None,None]]
    }]
}

predictions = wml_client.deployments.score(deployment_id, scoring_data)
print(predictions)

{'predictions': [{'fields': ['customerID', 'Churn', 'Predicted Churn', 
'Probability of Churn'], 
'values': [['3638-WEABW', None, 'No', 0.0526309571556145]]}]}

В приведенном выше примере развертывание модели предсказывает, уйдет клиент или нет, а также достоверность этого прогноза. Если вы заметили, ключевой момент здесь в том, что модель предсказывает (в этом случае не будет оттока) только класс-победитель. Но для вычисления различных метрик мониторинга модели нам нужны значения достоверности (вероятности) выигрышных и невыигрышных классов.

Итак, в качестве следующего шага, учитывая прогноз развертывания модели, мы проведем некоторую постобработку, чтобы вывести прогноз выигрышных и невыигрышных классов. Что-то вроде этого ..

def score(scoring_payload):
  ...
  # original scoring response from the model deployment
  fields = scoring_response['predictions'][0]['fields']
  values = scoring_response['predictions'][0]['values']
  scored_data = pd.DataFrame(values, columns = fields)
  # deduce the non-winning class confidence
  scored_data['Probability of No Churn'] = 1 - scored_data['Probability of Churn']
  scored_data.rename(columns={'Predicted Churn': 'prediction', 'Probability of Churn': 'winning_class_prob', 'Probability of No Churn': 'losing_class_prob'}, inplace=True)
  cols = ['winning_class_prob', 'losing_class_prob']
  # create the probability, which would be sent along with the prediction output.
  scored_data['probability'] = [[e for e in row if e==e] for row in scored_data[cols].values.tolist()]
  scored_data.drop(['customerID', 'Churn', 'winning_class_prob', 'losing_class_prob'], axis=1, inplace=True)
  
  scored_data_fields = scored_data.columns.tolist()
  scored_data_values = scored_data[scored_data_fields].values.tolist()
  # create the response, which would contain prediction and proability values
  response_payload = {"predictions": [{"fields": scored_data_fields, "values": scored_data_values}]}
  return response_payload

Вопрос в том, где в игру вступает эта функция постобработки? Итак, идея заключается в том, чтобы развернуть этот код как функцию Python в IBM Watson Machine Learning и отслеживать развертывание функции Python с помощью IBM Watson OpenScale. Что-то вроде этого ..

function_artifact = wml_client.repository.store_function(meta_props=function_meta_props, function=spss_scoring_wrapper)
function_uid = wml_client.repository.get_function_id(function_artifact)
print("Function UID = " + function_uid)
...
deployment_details = wml_client.deployments.create(function_uid, meta_props=deploy_meta)

Затем IBM Watson OpenScale используется для настройки всех мониторов, а именно справедливости, дрейфа, качества, объяснимости, для результатов оценки модели. Как в..

Подводя итог..

Подводя итог, можно сказать, что модель IBM SPSS Modeler развернута в WML, а для передачи значений достоверности выигравших и невыигравших классов написана оболочка функции, которая затем развертывается в WML. Затем используйте IBM Watson OpenScale для мониторинга развертывания функций Python, что, по сути, оказывается мониторингом IBM SPSS Modeler. Что-то вроде этого ..

Код, который используется для управления описанной выше настройкой с помощью IBM Watson OpenScale и IBM Watson Machine Learning SDK, можно найти здесь. Обратите внимание, что эта записная книжка содержит прогнозы бинарных классов, а для прогнозов нескольких классов проверьте в IBM SPSS Modeler вероятности всех классов и один и тот же поток, который можно применить, как описано выше.

Рекомендации