编者按:随着越来越多的SAP工程师加入开源大家庭,曾经“高大上”的机器学习的门槛也在逐渐降低,早尝试早享受,机器学习的结果也将会成为支持决策的重要因素,成为未来企业IT必备的能力。“胶水能力”可以让企业的数字化化插上翅膀,在Leonardo中发现更多可能性...
本文将接着上篇文章继续介绍如何在Rstudio上构建机器学习模型,并将模型运行在SAP HANA上。
《在SAP HANA上使用R语言进行机器学习》
同样在本文中,我将举例说明如何将机器学习模型引入到正式的生产环境中。
我将展示如何在RStudio或SAP HANA的R GUI上构建机器学习模型。此方法在SAP HANA上能够进行快速交互式的机器学习训练和部署。
内容:
机器学习用例。
评估机器学习模型。
使用SAP HANA将模型部署到生产环境中
1. 使用SAP HANA进行机器学习 - 使用R语言执行所有交互
本文中提供的用例是一个相当简单的数据集。使用这个简单的数据集,您也可以在自己的本地环境上重现我的操作步骤。这个算法案例是一个经典的监督二元分类。我们的目标是建立一个机器学习模型,以识别2型糖尿病患者。
数据描述:
怀孕:怀孕次数
葡萄糖:口服葡萄糖耐量试验2小时的葡萄球菌葡萄糖浓度
压力:血压心血管舒张压(mm Hg)
三头肌:三头肌皮褶厚度(mm)
胰岛素:胰岛素2小时血清(μU / ml)
质量:BMIBody质量指数(体重kg /(身高m)^ 2)
家族谱系:糖尿病家族谱系功能
年龄:年龄
糖尿病:是否糖尿病(0否,1是)。768项中满足268项是1,否则是0。
2. 创建和评估机器学习模型
本文的重点是机器学习模型的评估和部署。在以后的文章中,我将展示如何为机器学习模型准备数据。数据准备这一步骤对于归类出训练数据中的所有可能信息,从而获得性能良好的模型至关重要。
从头开始创建机器学习模型并将模型保存到SAP HANA。
该模型现已构建并保存 - 可在在SAP HANA Studio中进行验证:
如上所示,该模型现在存储为PMML格式(预测标记模型语言)。
评估机器学习模型
接收者运行特征(ROC)曲线用于评估预测2类结果(双变量分类)的连续测量的准确性。在市场营销,销售,医学等领域,ROC曲线在评估机器学习模型的可用性方面有着悠久的历史。简而言之,ROC曲线有助于识别构建机器学习模型是否比随机选择更好,也可以帮助识别True和False的最优阈值。这在一些使用案例中很有用处,例如,客户的沟通成本。以下是保险用例的ROC曲线。大约20%(x轴)的意向客户中会有50%有兴趣购买附加保险。
下图是生成上述ROC曲线并计算曲线下面积(AUC)所需的代码。这里的重点是hanaml.Auc PAL算法,它计算AUC得分并用ROC值创建了一张表。
hanaml.Auc函数构建的ROC表已经具备可视化,因为它包含了能判断True和False的参数。
图表所需的简单R代码(创建相同图表的3种不同方式):
在训练和测试数据上评估机器学习模型:
用于分类机器学习模型的混淆矩阵。
虽然使用hanaml.Confusion.matrix函数创建混淆矩阵相当简单,但我将在下面展示一个更全面和更具说明性的方法。
使用着名的Caret(分类和回归训练)包来构建混淆矩阵和相关的KPI指标。
构建更全面的混淆矩阵。
使用Caret包的confusionMatrix函数:
构建更全面的混淆矩阵。我在StackOverflow上找到了一些代码片段,我按照自己的需求对其做了修改和优化。代码发布在我的GitHub上(参见文末的链接)。
https://stackoverflow.com/questions/23891140/r-how-to-visualize-confusion-matrix-using-the-caret-package/42940553
(上图是函数的屏幕截图,该函数创建了一个摘要混淆矩阵和选定的KPI - 值来自另一个模型)。代码发布在我的github上。
3. 使用SAP HANA将模型部署到生产环境中
将ML模型从SAP HANA加载回R环境。实际上并未将模型加载到本地R环境中 - 只是加载了模型的元数据。
在撰写此文时,我先做了一个准备步骤,目的是让R能够识别从SAP HANA加载的模型是ML模型。如下所示,我实际上使用很少的记录训练了一个模型。由于训练记录很少,这一步骤很快,并且如上所述只需要在下一步中覆盖掉保存的模型即可。
模型的记录只有2行:
加载存储在SAP HANA中的模型。如下所示,模型的记录现在是401行,与实际的PMML模型相对应。
将模型应用于新数据 - 预测结果并将结果存储在SAP HANA中:
在SAP HANA Studio中,我们现在有了一个新表,其中包含所有预测和该预测的置信度。
调度执行模型。
有多种方法可以调度执行重新训练模型或给模型输入新数据。我选择使用内置于Window 10的任务计划程序来实现。
在任务计划程序中创建新任务。
指向R安装的位置,然后选择R.exe。
在“Add arguments”项上输入“R脚本的位置”。
监听计划任务。下图我展示了我的计划任务—在新患者数据中预测糖尿病患者。此任务会在我设定的时间范围内自动运行。
实际上R也提供了一个包为您执行任务调度。
“taskscheduleR”包允许使用GUI界面和脚本。
下面是一个使用脚本管理调度的例子。
如果您使用的是RStudio taskscheduleR,那就可以作为Addin嵌入,如下所示:
希望您能够喜欢这篇文章,这篇文章介绍了如何构建,评估和部署机器学习模型,并将模型引入到生产环境,并调度执行模型。
我后面可能会把重点放在数据准备工作上,从我的经验上来看,从历史训练数据中分类出信息至关重要,这能帮助最终构建出更好的机器学习模型。
参考链接:
Github - 此文中使用的脚本和数据源。
https://github.com/kurtholst/HANA_R_ML
在SAP HANA上使用R语言进行机器学习(1)
https://blogs.sap.com/2019/04/09/machine-learning-with-sap-hana-from-r/?preview_id=801758
使用R进行任务调度作业.
https://cran.r-project.org/web/packages/taskscheduleR/vignettes/taskscheduleR.html
SAP HANA PAL文档 -
https://help.sap.com/viewer/2cfbc5cf2bc14f028cfbe2a2bba60a50/2.0.03/en-US/c9eeed704f3f4ec39441434db8a874ad.html
Pima Indians数据集。
https://www.kaggle.com/uciml/pima-indians-diabetes-database
原文链接:https://blogs.sap.com/2019/06/07/machine-learning-with-sap-hana-with-r-api.-part-2./
原文作者:Kurt Holst
- End -
往期精选 | Editors' Choice
SAP将推出专门面向中国市场定制的云ERP?
IBP或许能唤醒沉睡在SAP中几十年S&OP
如何“打劫”SAP、ORACLE们的客户资源?
SAP Fiori 3.0将改变您使用SAP的方式
顾问职场"塑料五件套"表情包使用指南