表指示板
需求
在开始之前,请确保:
- 你也可以使用Tableau场景桌面或表服务器,
- RapidMiner AI Hub已与表连接器,和
- 你有将Tableau连接到RapidMiner AI Hub通过创建分析扩展连接.
另外,确保你有访问权限RapidMiner去如果您计划将其与Tableau一起使用。
介绍
Tableau Software出色的数据可视化工具可以通过Tableau Analytics扩展API.其中之一核心场景分析扩展是预测模型集成到Tableau可视化。RapidMiner对API的实现表连接器,可以将数据从Tableau馈送到RapidMiner机器学习模型,并将结果返回到Tableau。因此,可以对执行的计算进行积分RapidMiner去模型和RapidMinerweb服务到Tableau仪表板。
这里提供的文档很长,因为有许多软件必须相互通信,您不能有任何遗漏的部分。不要为了树木而失去森林!从本质上讲,只有两个步骤:
在RapidMiner中部署一个模型。
告诉Tableau如何从该模型获得结果。
如果您以前从未在RapidMiner中部署过模型,那么您将受益于采用较慢的方法。从阅读开始例子:流失预测这样你就会明白所有的部分是如何组合在一起的。
如果您知道如何在RapidMiner中部署模型,则可以跳过示例并专注于JSON片段.全文的简要摘要如下两行:
- 在Tableau工作簿中,选择“分析>创建计算字段”.
- 在计算编辑器,为计算的字段输入一个名称,并粘贴JSON片段。
目录表
JSON片段
阅读更多:传递表达式与分析扩展
与外部服务通信计算字段,每个计算字段使用用于表达式的SCRIPT函数,操作如表计算。
RapidMiner的表连接器支持以下SCRIPT函数:
SCRIPT_STR
SCRIPT_REAL
SCRIPT_INT
SCRIPT函数期望第一个参数是用于分析扩展的脚本。例如,当使用Tableau的Python分析扩展(TabPy)时,该脚本是由扩展执行的实际Python脚本。当使用RapidMiner的表连接器,该脚本是一个小的JSON片段。
从RapidMiner的角度来看,JSON片段包含从Tableau发送数据到部署模型并获得结果返回所需的最小信息集:
- 它指定了RapidMiner后端,一个RapidMiner Go模型或者一个web服务
- 它提供其他信息,如列名(如果需要)。
例如,下面的代码片段说要连接到RapidMiner Go引擎
并使用RapidMiner Go模型与给定id
.RapidMiner Go期望数据有三个列一年
,国家
,情况下
.
{"engine": "go", "id": "980807d6-9332-4da9-b026-d8af0fa4879e", "input ": ["Year", "Country", "Cases"]}
在Tableau中创建计算字段,使用RapidMiner Go生成结果,步骤如下:
- 选择“分析>创建计算字段”.
- 在计算编辑器,为计算的字段输入一个名称,并粘贴一个JSON片段,如下所示。
JSON代码片段
SCRIPT_STR('{“引擎”:“走”,“id”:“980807 d6 - 9332 - 4 - da9 b026 d8af0fa4879e”、“输入”:[“年”、“国家”、“案例”)}”,ATTR([一]),ATTR((国家代码)),ATTR([例]))
在本例中,列称为国家代码
将被传递到名为国家
在RapidMiner去。
默认情况下,Tableau不会将列名传递给Tableau连接器。因此,在大多数情况下,在JSON片段中显式地命名输入是必要的,即使没有理由将列重命名为国家代码
在上面的例子中。
RapidMiner Go的JSON
引擎
当Tableau连接到RapidMiner Go时,后端引擎
是去
.
id
当使用RapidMiner Go作为后端时,你必须指定部署id
.这id
仅仅是部署链接的最后一部分,在管理部署页的RapidMiner去。部署链接总是具有相同的结构,例如:
https://aihub.company.test/am/api/deployments/980807d6-9332-4da9-b026-d8af0fa4879e
在这个例子中,部署id是980807 d6 - 9332 - 4 - da9 b026 d8af0fa4879e
.
输入
的输入
时使用的列名必须匹配创建模型.的示例请求中的列名管理部署页的RapidMiner去。
输出
默认情况下,当使用RapidMiner Go作为引擎时,Tableau Connector将只返回预测值。但是,可以通过指定。来选择其他字段输出
在JSON片段中。例如,如果模型是一个值为“Yes”和“No”的分类器,您可以请求类“Yes”的置信度值如下:
JSON代码片段
SCRIPT_REAL('{"engine": "go", "id": "980807d6-9332-4da9-b026-d8af0fa4879e", "input ": ["Year", "Country", "Cases"], "output": "confidence(Yes) ")“}”,ATTR([一]),ATTR((国家代码)),ATTR([例]))
注意,我们还更改了Tableau函数调用SCRIPT_STR
来SCRIPT_REAL
.
用于RapidMiner web服务的JSON
阅读更多:创建web服务
Tableau连接器还可以将Tableau连接到RapidMinerweb服务,如果web服务满足以下所有条件:
- web服务是公共的,
- web服务接受与RapidMiner Go相同JSON格式的数据,并且
- web服务使用JSON格式的数据表进行响应。
连接到这样的web服务遵循与RapidMiner Go相同的方法,但有一些不同。
引擎
当将Tableau连接到RapidMiner web服务时,后端引擎
是rms
.
id
当使用RapidMiner web服务作为后端时,部署id
是web服务的名称。
输入
与RapidMiner Go不同,指定输入
是可选的。如果输入
省略,则数据将使用通用列名传递给RapidMiner:_arg1
,_arg2
、……_argN
.
此外,Tableau连接器支持将常量(如Tableau参数)作为使用查询参数的进程宏传递给RapidMiner。请注意,您必须在RapidMiner web服务的设置中配置查询参数。
输出
最后,由于web服务可能不会产生任何预测,因此Tableau Connector将在默认情况下返回第一列。若要返回任何其他列,请将列名包含为输出
.
下面的示例调用名为回声
它只是回显输入数据。你可以下载用于在这里创建echo web服务的RapidMiner进程.
在第一个例子中,我们没有指定输出,Tableau连接器返回第一列的值(一年
):
JSON代码片段
SCRIPT_STR('{“引擎”:“rms”、“id”:“回声”}”,ATTR([一]),ATTR((国家代码)),ATTR([例]))
在第二个示例中,将第二列重命名为forRapidMiner去.此外,Tableau连接器返回第三列的值,情况下
,而不是第一列(一年
):
JSON代码片段
SCRIPT_REAL('{“引擎”:“rms”、“id”:“回声”,“输入”:[“年”、“国家”、“案例”、“输出”:“病例”}”,ATTR([一]),ATTR((国家代码)),ATTR([例]))
最后,在第三个示例中,我们展示了如何将Tableau参数或其他常量值作为进程宏传递给RapidMiner web服务。Tableau参数应该列在其他输入之前:
JSON代码片段
SCRIPT_REAL('{"engine": "rms", "id": "echo", "parameters": [" Some -process-macro"], "input ": ["Year", "Country", "Cases"], "output": "Cases"}', //参数优先[Some Tableau Parameter], //常规输入第二ATTR([Year]), ATTR([Country Code]), ATTR([Cases]))
例如:使用RapidMiner Go进行客户流失预测
在本文档的剩余部分,我们将看一个简单的例子,将预测性的RapidMiner Go模型集成到互动表指示板。这个例子有四个部分:
的数据
该示例考虑了一个虚构的移动电话和互联网服务提供商的简单流失用例。我们有以下格式的历史客户数据。
请按此下载数据档案:historical_customer_data.csv
客户ID | 移动计划 | 合作伙伴计划 | 网络计划 | 每月的付款 | 生产 |
---|---|---|---|---|---|
CX484660 | 是的 | 没有 | 没有 | 30.95 | 没有 |
CX968493 | 是的 | 没有 | 没有 | 20.95 | 没有 |
CX762775 | 没有 | 没有 | 是的 | 42.95 | 是的 |
… | … | … | … | … | … |
中的值生产列为“是”,表示客户已经取消了与服务提供商的合同。如果为“否”,则该客户仍留在公司。
这样做的目的是预测哪些当前的客户在下一段时间可能会流失。这些客户的数据是第二个数据集的一部分,该数据集具有相同的结构,只是它不包括生产列。
请按此下载数据档案:current_customer_data.csv
客户ID | 移动计划 | 合作伙伴计划 | 网络计划 | 每月的付款 |
---|---|---|---|---|
CX112292 | 是的 | 是的 | 是的 | 77.89 |
CT245008 | 是的 | 是的 | 是的 | 74.89 |
CX227029 | 没有 | 没有 | 是的 | 27.95 |
… | … | … | … | … |
在RapidMiner Go中部署一个模型
首先,我们上传第一个数据集(historical_customer_data.csv
)到RapidMiner到建立一个预测模型.在选择要预测的列中,选择生产:
在选择输入, RapidMiner Go将自动检测客户ID列作为唯一标识符,并将其从分析中排除高ID-ness:
对于这个例子,我们使用预设聚焦容易解释算法,当然你也可以使用其他算法。
请注意,我们已经关掉了解释预测特性。启用此功能后,可以使用有关影响因素的附加信息增强预测,但代价是减慢预测速度。由于我们不会在Tableau仪表板中使用这些信息,我们可以禁用该功能:
在三个经过验证的模型中广义线性模型在我们的数据集上表现最好:
您可以通过导航到模型详细信息,然后单击来部署模型应用模型>部署模型.确保复制URL,因为它包含模型id
它会被插入JSON代码段.
我们的模型现在可以使用了!
在Tableau中创建计算字段
接下来,我们导入第二个数据集(current_customer_data.csv
)变成Tableau。注意,第二个数据集缺少生产列——生产值将由RapidMiner Go预测。一旦导入到Tableau,数据看起来如下:
从以上用户界面采取以下步骤:
- 选择“分析>创建计算字段”,
- 将下面给出的JSON片段粘贴到计算编辑器.
JSON片段包括RapidMiner Goid
我们之前保存的,加上列名。虽然在这种情况下,在RapidMiner Go和Tableau中列名是相同的,但我们显式列出了它们,因为Tableau在向Tableau连接器发送数据时不包含列名。
JSON代码片段
// https://aihub.company.test/am/api/deployments/1cfea671-d53b-4b45-97cc-72edcc54a7bc SCRIPT_STR('{"engine": "go", "id": "1cfea671-d53b-4b45-97cc-72edcc54a7bc", "input ": ["Mobile Plan", "Partner Plan", "Internet Plan", "Monthly Payment"]}', ATTR([Mobile Plan]), ATTR([Partner Plan]), ATTR([Internet Plan]), ATTR([Monthly Payment])))
现在我们可以加上这个表计算到Tableau仪表板,例如,作为表的颜色标记。Tableau将使用RapidMiner Go返回的流失预测自动更新仪表板:
交互式Tableau仪表板
在前一节中创建的指示板为指示板用户提供的交互非常少。特别是,RapidMiner Go模型总是应用于相同的数据。然而,只需要做一点小小的改变,就可以把仪表板变成一个交互式模拟器。
其想法是引入一个参数,代表每月付款的回扣。然后,我们对修改后的数据进行评分,看看回扣对客户流失预测有什么影响。结果是生产模拟器.
在第一步中,我们创建了一个名为退税,取值范围为0%至90%。
接下来,我们使用该参数创建一个名为降低月供,该公司将退税适用于该领域每月的付款根据我们的原始数据:
[月供]*(100 -[返利])/ 100
最后,我们修改客户流失预测这取决于降低月供的模拟数据集退税.
JSON代码片段
// https://aihub.company.test/am/api/deployments/1cfea671-d53b-4b45-97cc-72edcc54a7bc SCRIPT_STR('{"engine": "go", "id": "1cfea671-d53b-4b45-97cc-72edcc54a7bc", "inputs": ["Mobile Plan", "Partner Plan", "Internet Plan", "Monthly Payment"]}', ATTR([Mobile Plan]), ATTR([Partner Plan]), ATTR([Internet Plan]), //降低的月付款包括模拟回扣ATTR([降低的月付款]))
剩下要做的就是添加参数退税还有田野降低月供到仪表盘。的滑动条值退税,预测结果会自动更新。
不出所料,一些预测从“是”变成了“否”——该模型预测,如果我们降低这些客户的月供,他们可能会被说服留在公司。