TUTORIAL: Develop a virtual assistant for health to predict heart failure using neural network on Modeller Flow in Cloud Pack for Data (Watson Studio), via Watson Machine Learning, connected to Watson Assistant thru an action on Cloud Functions
DISCLAIMER: This application is used for demonstrative and illustrative purposes only and does not constitute an offering that has gone through regulatory review.
This tutorial can be thought of as 4 distinct parts:
-
A predictive model will be built using SPSS Modeller Flow on Cloud Pack for Data (IBM Watson Studio). The model is deployed to the Watson Machine Learning service V2, where it can be accessed via a REST API.
-
A action developed on IBM Cloud Functions in Node.js to connect to WML service to be scored against the previous model.
-
A ChatBot on Watson Assistant to collect the user / patient information to be socred against the previous model, thru integration on IBM Cloud Functions.
-
Node.js app to interact to ChatBot to collect data and give the prediction of Heart Failure to the user.
When the reader has completed this tutorial, they will understand how to:
- Build a predictive model within a Modeller Flow on Cloud Pack for Data (Watson Studio)
- Deploy the model to the IBM Watson Machine Learning service
- Create a action on IBM Cloud to call WML service
- Deploy a Chatbot on Watson Studio and integrate it to Cloud Functions
- Via a Node.js app, score some data against the model via an API call to the Watson Machine Learning service
Sample output
Here's an example of what the final web app looks like
- Creates an IBM Watson Studio Workspace (Cloud Pack for Data).
- IBM Watson Studio uses an Apache Spark service.
- IBM Watson Studio uses Cloud Object storage to manage your data.
- IBM Watson Studio uses a Modeller Flow to import data, train, and evaluate their model.
- Data is imported and stored on Cloud Object Storage.
- Models trained via Modeller Flow are deployed using the Watson Machine Learning service.
- The developer creates an Node.js Action on IBM Cloud Functions to call WML service (API)
- The developer create Watson Assistant to deploy a chatbot
- Watson Assistant call the action on IBM Cloud Functions, send data collect as parameters.
- A Node.js web app is deployed on IBM Cloud, it connects Watson AssistantLearning service.
- A user visits the web app, enters their information, and the predictive model returns a response.
- IBM Cloud Pack for Data (IBM Watson Studio): Analyze data using RStudio, Jupyter, and Python in a configured, collaborative environment that includes IBM value-adds, such as managed Spark.
- SPSS Modeller Flow: With SPSS Modeler flows in Watson Studio, you can quickly develop predictive models using business expertise and deploy them into business operations to improve decision making.
- Watson Machine Learning: Watson Machine Learning helps enable organizations to harness machine learning, deep learning and decision optimization to deliver business value.
- IBM Cloud Functions: Run your application code without servers, scale it automatically, and pay nothing when it's not in use.
- Watson Assistant: Watson Assistant is an offering for building conversational interfaces into any application, device, or channel.
- Node.js: An open-source JavaScript run-time environment for executing server-side JavaScript code.
NOTE: N/A.
- Setup project and data in Watson Studio
- Create and deploy a predictive model with Watson Studio
- The client side
To complete this tutorial we'll need to do a few setup steps before creating our model. In Watson Studio we need to: create a project, add our patient data (which our model will be based on), upload our notebook, and provision a Watson Machine Learning service.
-
Log into IBM's Cloud Pack for Data (Watson Studio). Once in, you'll land on the dashboard.
-
Create a new project by clicking
+ Crete a project
and choosingCreate an empty project
: -
Enter a name for the project name and click
Create
.
NOTE: By creating a project in Watson Studio a free tier
Object Storage
service will be created in your IBM Cloud account. Select theFree
storage type to avoid fees.
The data used in this example was generated using a normal distribution. Attributes such as age, gender, heartrate, minutes of exercise per week, and cholesterol are used to create the model we will eventually deploy.
-
From the new project
Overview
panel, click+ Add to project
on the top right and choose theData
asset type. -
A panel on the right of the screen will appear to assit you in uploading data. Follow the numbered steps in the image below.
- Ensure you're on the
Load
tab. [1] - Click on the
browse
option. From your machine, browse to the location of thepatientdataV6.csv
file in this repository, and upload it. [not numbered] - Once uploaded, go to the
Files
tab. [2] - Ensure the
patientdataV6.csv
appears. [3]
- Ensure you're on the
-
TIP: Once successfully uploaded, the file should appear in the
Data assets
section of theAssets
tab.
-
Click on the navigation menu on the left (
☰
) to show additional options. Click on theWatson Services
option. -
From the overview page, click
+ Add service
on the top right and choose theMachine Learning
service. Select theLite
plan to avoid fees. -
Once provisioned, you should see the service listed in the
Watson Services
overview page. Select the service by opening the link in a new tab. We're now in the IBM Cloud tool, where we will create service credentials for our now Watson Machine Learning service. Follow the numbered steps in the image below. We'll be using these credentials in Step 2, so keep them handy!. -
TIP: You can now go back the project via the navigation menu on the left (
☰
).
A completed version can be found in [model/Heart Failure Prediction.str
](model/Heart Failure Prediction.str).
-
From the new project
Overview
panel, click+ Add to project
on the top right and choose theModeller Flow
asset type. Fill in the following information:- Select the
New
tab. [1] - Enter a
Name
for the flow and optionally a description. [2] - Under
Select flow type
chooseModeller flow
, and underRun time
chooseIBM SPSS Modeller
- Click
Create
- Select the
-
TIP: Once successfully created, the modeller flow should open the flow editor.
Now that we're in our Modeller Flow editor, we can start to create our predictive model by stepping through the notebook.
- Open
Import
tab in the left side and drag and dropData asset
node to the flow area. - Double click on
Data asset
node and click onChange data asset
in the right pane. - Click on Data Asset, and then
patientdataV6.csv
, and clickOk
-
Open
Fields operations
tab in the left side and drag and dropType
node to the flow area. -
Connect
Data asset
node toType
. -
Drag and drop
Partition
node to the flow area. -
Double click on
Partition
node and configureTraining partion(%)
to 75, andTesting partition(%)
to 25, and clickSave
. -
Open
Modeling
tab in the left side and drag and dropNeural net
node to the flow data. -
Double click on
Neural net
node and checkUse custom fields roles
, then underInputs
area click onAdd columns
, uncheckHEARTFAILURE
, and clickOk
. -
Under
Targets
area click onAdd columns
, mark the fieldHEARTFAILURE
. ClickOk
and thenSave
-
Now let's run Step 6 of the notebook. Deploy our model so we can have an endpoint to score data against.
Now that we have an API, let's create a client side interface that a typical user would interact with.
You can deploy this application as a Cloud Foundry application to IBM Cloud by simply clicking the button below. This option will create a deployment pipeline, complete with a hosted Git lab project and devops toolchain.
-
You may be prompted for an IBM Cloud API Key during this process. Use the
Create (+)
button to auto-fill this field and the others. -
Click on the
Deploy
button to deploy the application. -
You can view the URL where the app will live by either waiting for the deployment to finish, or by finding your app from the IBM Cloud dashboard. or Click on the application name, then choose
Visit App URL
from theOverview
page to open the application in a separate tab.
-
From the application's overview page, select the
Connections
option from the left menu panel. This will allow us to associate our Watson Machine Learning service with the application. Find the Watson Machine Learning service (likely prefixed withpm-20
), click theConnect
button, and choose the default options for the IAM generated credentials. and select the Watson Machine Learning service you provisioned earlier. -
When prompted to restage your application click the
Restage
button. The app will take a couple of minutes to come back online. Refresh any web pages that have the app running.
Why do this? The application is expecting information about the Maching Learning service via environment variables. By associating the application with the service, details about the service, such as the deployment id, and other sensitive information are accessible through environment variables.
The app is fairly self-explantory, simply fill in the data you want to score and click on the Score now
button to test how those figures would score against our model.
-
Verify that the model predicts that there is a risk of heart failure for the patient with these medical characteristics.
-
Verify that the model predicts that there is not a risk of heart failure for the patient with these medical characteristics.
This tutorial is licensed under the Apache Software License, Version 2. Separate third party code objects invoked within this tutorial are licensed by their respective providers pursuant to their own separate licenses. Contributions are subject to the Developer Certificate of Origin, Version 1.1 (DCO) and the Apache Software License, Version 2.