# 示例 - 使用 Qlik Predict 分析连接器进行假设分析

在本示例中，您将配置假设分析，以模拟调整不同变量时预测值的变化情况。该示例涉及在 Qlik Predict 中训练和部署二分类模型，并使用它通过 Qlik Predict 分析连接器创建预测。

假设分析应用程序

假设分析应用程序

假设分析应用程序 ![假设分析结果](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/what-if-analysis.png)

## 准备工作

### 下载示例材料

在此处下载示例资源：

[WhatIfAnalysisExample.zip](https://help.qlik.com/zh-CN/cloud-services/tutorials/WhatIfAnalysisExample.zip)

这些材料包括：

* 训练数据集 — data-turnover-employees.xlsx。此数据集用于本示例的训练和预测。

* 应用程序 — What-If Analysis.qvf。如果不先训练和部署模型，则无法使用该应用程序生成预测。

### 前提条件

开始之前，请确保：

* 您的 Qlik Cloud 订阅可以运行实时预测。请参阅以下内容，或联系租户服务帐户所有者。

  * [Qlik 定价](https://www.qlik.com/us/pricing)

  * [Qlik Cloud® 订阅](https://www.qlik.com/us/legal/product-terms)

* 您的租户管理员已启用机器学习端点。

  [启用 ML 端点于 Qlik Cloud](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-qlik-automl-connector-overview.htm#EnableMLEndpoints)

* 您拥有租户管理员为您分配的所需权限：

  * 数据连接权限设置为允许。

    [向用户分配使用数据连接的权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/mc-administer-data-connections.htm#Permissions)

  * 用于处理实验的权限。

    [用户对 ML 实验的访问权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/who-can-work-with-automl.htm#AccessExperiment)

  * 用于处理部署以及处理 Qlik Predict 分析连接器的权限。

    [用户对 ML 部署和预测的访问权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/who-can-work-with-automl.htm#AccessDeployment)

## 第 1 部分：上传数据集

执行以下操作：

1. 转到 Analytics 活动中心的“创建”页面，然后选择数据集。

2. 单击上传数据文件。

3. 将 data-turnover-employees.xlsx 数据文件拖放到添加文件对话框中。

4. 选择文件的目标空间。它可以是您的个人空间或共享空间。对所有教程资产使用相同的空间。

5. 单击上传。

## 第 2 部分：训练实验

创建、配置并运行实验以训练二分类模型。默认情况下将包括所有可用特性。

执行以下操作：

1. 转到 Analytics 活动中心的“创建”页面，然后选择机器学习实验。

2. 输入实验的名称，例如 员工流失分析。

3. 为实验选择空间（使用您在 [第 1 部分：上传数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Upload) 中使用的相同空间）。

4. 单击创建。

5. 选择训练数据集文件 data-turnover-employees.xlsx。

6. 选择 left 列作为目标。这是一个指示员工是否离开公司的列。

7. 单击运行实验。

## 第 3 部分：部署并激活表现最佳的模型

### 部署

实验训练完成后，您将进入模型选项卡。将表现最佳的模型部署为机器学习部署。

执行以下操作：

1. 单击旁边带有 the 奖杯 icon 图标的模型旁边的 the 三点菜单 icon。

2. 单击 the 部署 icon 。

3. 选择将模型部署到新部署的选项。

4. 输入部署的名称，例如 Employee Turnover Predictions。

5. 如果需要，调整空间、描述和标签。

6. 打开启用实时 API 访问。这是使用 Qlik Predict 分析连接器运行预测所必需的。

7. 单击创建。

### 激活

打开新创建的部署。

在 ML 部署界面的顶部，横幅指示模型审批者需要激活默认模型以进行预测。

执行以下操作：

1. 在 ML 部署顶部的横幅中，单击 激活模型。

2. 在打开的对话框中，单击 激活模型 进行确认。

## 第 4 部分：创建到 Qlik Predict 分析连接器的连接

接下来，创建到 Qlik Predict 分析连接器的连接。这将允许您在分析应用程序中即时生成预测。

执行以下操作：

1. 转到 Analytics 活动中心的“创建”页面，然后选择数据连接。

2. 在空间下，选择您在 [第 1 部分：上传数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Upload) 中使用的相同空间。

3. 选择 Qlik Predict 连接器。

4. 选择您在 [第 3 部分：部署并激活表现最佳的模型](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Deploy) 中创建的机器学习部署。

5. 输入以下名称：MLModel。

6. 单击创建。

## 第 5 部分：上传分析应用程序

上传您在 [下载示例材料](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Download) 中下载的分析应用程序。

执行以下操作：

1. 转到 Analytics 活动中心的“创建”页面。

2. 在数据和上传下，选择上传。

3. 将 What-If Analysis.qvf 应用程序拖放到对话框中。

4. 在空间下，选择您在 [第 1 部分：上传数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Upload) 和 [第 4 部分：创建到 Qlik Predict 分析连接器的连接](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Connection) 中使用的相同空间。

5. 单击上传。

上传应用程序后，将其打开，然后打开 What-If Analysis 工作表。

信息注释该应用程序已预先配置，因此您无需添加工作表和表达式。但是，每个步骤都在 [了解应用程序](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Understanding) 中进行了详细说明。

## 探索结果

您现在已在应用程序中打开了 What-If Analysis 工作表。

执行以下操作：

1. 在 employee\_number 字段中选择单个员工值。一个值将出现在 流失风险 KPI 中。

2. 调整 KPI 下方的滑块。每次调整都会进行模拟，以预测员工流失的风险。

选择单个员工并调整变量后的假设分析。

选择单个员工并调整变量后的假设分析。

选择单个员工并调整变量后的假设分析。 ![假设分析结果](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/what-if-analysis.png)

## 了解应用程序

### 加载的数据

在 [第 2 部分：训练实验](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Train) 中使用的训练数据集用作应用程序数据。在现实场景中，情况可能并不总是如此。

### 工作表变量

创建了以下变量，每个变量都有一个空白的默认定义。定义留空，因为变量值是在分析期间即时更新的。

用于假设分析的变量

| 变量名称 | 它代表的模型特性 | 变量默认定义 |
| --- | --- | --- |
| vSatisfactionLevel | satisfaction\_level | - |
| vTimeSpent | time\_spend\_company | - |
| vNumberOfProjects | number\_project | - |
| vAvgMonthlyHoursWorked | average\_monthly\_hours | - |

### KPI 和表达式

KPI 已添加到工作表中。使用以下图表表达式：

```
endpoints.ScriptEvalStr('{"RequestType":"endpoint", "endpoint":{"connectionname":":MLModel","column":"left_yes"}}',
	vSatisfactionLevel as satisfaction_level,
	vTimeSpent as time_spend_company,
	last_evaluation,
	vNumberOfProjects as number_project,
	vAvgMonthlyHoursWorked as average_monthly_hours)
```

该计算代表所选员工的流失风险。

以下部分概述了此表达式如何使用服务器端扩展语法来调用 机器学习 API 进行实时预测。

#### 分解表达式

该表达式使用服务器端扩展 (SSE) 语法来即时生成预测。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm)

#### endpoints.ScriptEvalStr

endpoints.ScriptEvalStr 前缀表示正在使用服务器端扩展。特别是使用了 ScriptEvalStr 函数。此函数允许您指定连接名称、目标和特性，而无需显式声明类型。换句话说，使用此函数时，API 会自动推断特性类型。

[服务器端扩展语法](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm)

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm)

#### ('{"RequestType":"endpoint",

此段通过指定请求是访问特定端点来进一步调用服务器端扩展。

[服务器端扩展语法](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm)

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm)

#### 指定连接名称

段 "endpoint":{"connectionname":":MLModel" 指示要使用的连接的名称。这需要与在 [第 4 部分：创建到 Qlik Predict 分析连接器的连接](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Connection) 中指定的连接名称相匹配。该连接还包含一个 : 前缀，以指示要使用的连接与应用程序位于相同的空间中。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm)

#### 指定目标并请求概率

column":"left\_yes" 段指示我们要使用 left 列作为目标。\_yes 后缀指示我们正在寻找 yes 结果的概率。换句话说，我们不是在具体请求预测值，而是请求预测为正值的概率。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm)

#### 指定特性和变量

指定目标列后，我们需要指定模型中的特性。模型特性可以通过打开机器学习部署（在 [第 3 部分：部署并激活表现最佳的模型](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Deploy) 中创建），然后打开部署概览来获取。这将打开模型架构：特性列表及其特性类型。

机器学习部署中的部署概览，显示模型架构

机器学习部署中的部署概览，显示模型架构

机器学习部署中的部署概览部署概览，显示模型架构模型架构 ![机器学习部署的“部署概览”中的模型架构。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/what-if-analysis-model-schema.png)

从这里，特性列表可以构建为逗号分隔的列表。变量替换（使用“as”关键字）指示将变量的当前值用作特性数据，而不是应用程序数据本身。这些变量替换允许进行本示例中演示的交互式“假设”模拟。

```
vSatisfactionLevel as satisfaction_level,
vTimeSpent as time_spend_company,
last_evaluation,
vNumberOfProjects as number_project,
vAvgMonthlyHoursWorked as average_monthly_hours)
```

信息注释表达式中的特性列表需要包括模型架构中的所有特性。否则，预测将失败。此外，如果表达式中列出的特性未出现在模型架构中，预测同样会失败。如果您训练的模型不具有与上述表达式中列出的特性完全相同的特性集，则需要编辑表达式以根据需要添加或删除特性。

### 变量输入对象

工作表中添加了四个变量输入控件 — 每个变量一个。已进行以下配置：

* 已选择要使用的变量。

* 输入类型已选择为滑块。

* 根据原始数据可能合理出现的值，配置了每个变量的最小值和最大值范围。

有关变量输入对象的更多信息，请参阅 [创建变量输入控件](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Visualizations/DashboardBundle/creating-variable-input.htm)。

### 筛选器窗格

添加了筛选器窗格，以便轻松选择要关注的员工。

### 包含原始数据的表格

工作表底部还添加了一个直表，以便轻松查看原始数据 — 即在假设分析期间对其进行更改之前的数据。

[服务器端扩展语法](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm)

[在可视化表达式中使用 Qlik Predict 连接](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-qlik-automl-connector-use.htm)