使用 AutoAI 自动构建模型

本教程纳入 IBM Cloud Pak for Data 快速入门学习路径

出于为 AI 创建 AI 的目的,IBM 在 Watson™ Studio 中引入了一项名为AutoAI 的服务。

AutoAI 作为一项服务,可自动执行机器学习任务,减轻数据科学家背负的重担。它可自动准备数据进行建模,为问题选择最佳算法,并为训练模型创建管道。

AutoAI 可以在公共云和私有云(包括 IBM Cloud Pak for Data)中运行。

学习目标

本教程通过一个用例介绍了 AutoAI 服务的优势。这将帮助您深刻理解如何在不使用任何代码的情况下处理回归和分类问题,以及如何使用此服务完成特征工程、模型选择、超参数调优等任务。本教程还包含了在管道中选择最佳模型以及如何通过 IBM Cloud Pak for Data platform 部署和使用这些模型的详细信息。

前提条件

预估时间

本教程大约需要 20 分钟才能完成(这包括 AutoAI 中的训练过程)。

本教程分为以下几个步骤:

  1. 创建项目和 AutoAI 实例
  2. 设置 AutoAI 环境并生成管道
  3. AutoAI 管道
  4. 部署和测试模型

创建项目和 AutoAI 实例

创建一个 Watson Studio 项目

  • 单击左上角的汉堡菜单 (☰),然后单击 Projects 。在 Projects 页面中,单击 New Project
  • 选择 Create an empty project
  • 为项目提供名称和可选的描述:

    这将打开数据资产页面,此处可存储和组织您的项目资产。通过单击 Assets 栏,您可以从右侧界面加载数据集。

  • 上传 Telco-Customer-Churn.csv 数据集:

2. 设置 AutoAI 环境并生成管道

  • 要开始体验 AutoAI,可单击顶部的 Add to Project ,然后选择 AutoAI
  • 为您的服务命名,然后选择下拉菜单中列出的计算配置选项之一。接着单击 Create
  • 选择您的数据集。
  • Select prediction column 下面,单击 Churn 。然后单击 > Run experiment
  • 这样将运行 AutoAI 实验。UI 将显示进度:
  • 此实验大约需要 14 分钟。完成后,您将看到一条消息,表明已经创建了管道:

3. AutoAI 管道

完成前面的过程之后,就可以开始实验了。AutoAI 过程遵循以下顺序来构建候选管道:

  • 数据预处理
  • 自动化模型选择(管道 1)
  • 超参数优化(管道 2)
  • 自动化特征工程(管道 3)
  • 超参数优化(管道 4)
  • 向下滚动可看到 Pipeline leaderboard

    下一步是通过查看指标来选择能够提供最佳结果的模型。在本例中,管道 4 使用“Area under the ROC Curve (ROC AUC)”指标给出了最佳结果。您可以通过单击排行榜中的相应管道来查看详细结果。

  • 单击 Save as model ,然后单击 Save 来保存模型。

    将打开一个窗口,要求输入模型名称、描述(可选)等。完成此字段后,单击 Save

    您会收到一条通知,表明您的模型已保存到项目中。单击 View in project

    或者,在 Assets 选项卡下的顶级项目中,单击 Models 下保存的模型的名称:

4. 部署并测试模型

  • 要准备部署模型,可单击 Promote to deployment space
  • 要提升资产,您必须将项目与部署空间相关联。单击 Associate Deployment Space
  • 您可能已经创建了一个部署空间。在这种情况下,可单击 Existing 并选择该部署。
  • 如果您现在还没有部署,可转到 New 选项卡,并为您的部署空间指定名称,然后单击 Associate
  • 成功将模型切换到部署空间后,顶部将弹出一条通知,如下所示。单击此通知中的 deployment space 。此外,您还可以通过使用汉堡菜单 (☰) 并单击 Analyze -> Analytics deployments 来访问此页面:

  • 如果您通过 Menu -> Analyze -> Analytics deployments 路径进入,可单击您的部署空间:
  • Assets 选项卡下,单击您的模型:
  • Deployments 选项卡下,单击 Deploy 以部署此模型:
  • 为您的部署提供一个名称和可选的描述,然后单击 Create
  • 该部署将显示为 In progress ,完成后将切换为 Deployed 。单击部署:
  • 部署的 API reference 选项卡将显示如何通过 cURL、Java、Javascript、PythonScala 来使用该模型:

使用 GUI 工具来测试部署的模型

现在,您可以通过部署后提供的界面测试模型。

  • 单击 Input with JSON format 图标,然后将以下数据粘贴到 Body 下面,再单击 Predict
    { "input_data":[ { "fields":[ "customerID", "gender", "SeniorCitizen", "Partner", "Dependents", "tenure", "PhoneService", "MultipleLines", "InternetService", "OnlineSecurity", "OnlineBackup", "DeviceProtection", "TechSupport", "StreamingTV", "StreamingMovies", "Contract", "PaperlessBilling", "PaymentMethod", "MonthlyCharges", "TotalCharges" ],
         "values":[ [ "7567-VHVEG", "Female", 0, "No", "No", 0, "No", "No phone service", "DSL", "No", "No", "Yes", "No", "No", "Yes", "Month-to-month", "No", "Bank transfer (automatic)", 85.25, 85.25 ] ] } ] }

  • 或者,您也可以单击 Provide input using form 图表,填写各种字段,然后单击 Predict

使用 cURL 测试部署的模型

> 注意:Windows 用户将需要使用 cURL 命令。为此,建议您 下载 gitbash ,因为在后续步骤中,您还将获得其他工具并且能够轻松使用 shell 环境变量。

在终端窗口中,运行以下命令以获得 API 访问令牌。使用 CP4D 集群 usernamepassword

curl -k -X GET https:///v1/preauth/validateAuth -u
:

将返回一个 json 字符串,并包含“accessToken”的值, 类似 如下:

{"username":"scottda","role":"Admin","permissions":["access_catalog","administrator","manage_catalog","can_provision"],"sub":"scottda","iss":"KNOXSSO","aud":"DSX","uid":"1000331002","authenticator":"default","accessToken":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNjb3R0ZGEiLCJyb2xlIjoiQWRtaW4iLCJwZXJtaXNzaW9ucyI6WyJhY2Nlc3NfY2F0YWxvZyIsImFkbWluaXN0cmF0b3IiLCJtYW5hZ2VfY2F0YWxvZyIsImNhbl9wcm92aXNpb24iXSwic3ViIjoic2NvdHRkYSIsImlzcyI6IktOT1hTU08iLCJhdWQiOiJEU1giLCJ1aWQiOiIxMDAwMzMxMDAyIiwiYXV0aGVudGljYXRvciI6ImRlZmF1bHQiLCJpYXQiOjE1NzM3NjM4NzYsImV4cCI6MTU3MzgwNzA3Nn0.vs90XYeKmLe0Efi5_3QV8F9UK1tjZmYIqmyCX575I7HY1QoH4DBhon2fa4cSzWLOM7OQ5Xm32hNUpxPH3xIi1PcxAntP9jBuM8Sue6JU4grTnphkmToSlN5jZvJOSa4RqqhjzgNKFoiqfl4D0t1X6uofwXgYmZESP3tla4f4dbhVz86RZ8ad1gS1_UNI-w8dfdmr-Q6e3UMDUaahh8JaAEiSZ_o1VTMdVPMWnRdD1_F0YnDPkdttwBFYcM9iSXHFt3gyJDCLLPdJkoyZFUa40iRB8Xf5-iA1sxGCkhK-NVHh-VTS2XmKAA0UYPGYXmouCTOUQHdGq2WXF7PkWQK0EA","_messageCode_":"success","message":"success"}

在终端窗口中,导出此响应的“accessToken”部分作为 WML_AUTH_TOKEN 。通过复制 EndpointAPI reference 中获取 URL ,然后将其导出为 URL

export WML_AUTH_TOKEN=
export URL=https://blahblahblah.com

现在从终端窗口运行以下 curl 命令:

curl -k -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header "Authorization: Bearer  $WML_AUTH_TOKEN" -d '{"input_data": [{"fields": ["customerID","gender","SeniorCitizen","Partner","Dependents","tenure","PhoneService","MultipleLines","InternetService","OnlineSecurity","OnlineBackup","DeviceProtection","TechSupport","StreamingTV","StreamingMovies","Contract","PaperlessBilling","PaymentMethod","MonthlyCharges","TotalCharges"],"values": [["7590-VHVEG","Female",0,"No","No",1,"No","No phone service","DSL","No","No","No","No","No","No","Month-to-month","No","Bank transfer (automatic)",25.25,25.25]]}]}' $URL

将返回一个包含响应的 json 字符串,在末尾包含“Yes”或“No”,表示客户是否将会流失。

结束语

本教程纳入 IBM Cloud Pak for Data 快速入门学习路径 。要继续学习本系列课程并了解 IBM Cloud Pak for Data 的更多信息,可查看下一个 Code Pattern 利用 Watson OpenScale 监视模型

本文翻译自: Automate model building with AutoAI (2020-02-26)