О чем это? ..
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 вероятности всех классов и один и тот же поток, который можно применить, как описано выше.