机器学习在销售报价单的产品推荐场景中的作用

举报
Jerry Wang 发表于 2021/11/20 22:28:16 2021/11/20
【摘要】 大家平时在京东或淘宝上买一个东西后,手机app会自动向我们推荐一些其他我们可能会购买的商品,这些推荐就是背后的机器学习框架基于我们以前的购买习惯通过一定的算法计算出来的。SAP的一款CRM云解决方案,Cloud for Customer(简称C4C),同样支持使用机器学习根据销售订单历史数据进行向上销售和交叉销售机会的产品推荐。下面我们一起来看看人工智能在产品推荐这个场景里的具体实现吧。还是...

大家平时在京东或淘宝上买一个东西后,手机app会自动向我们推荐一些其他我们可能会购买的商品,这些推荐就是背后的机器学习框架基于我们以前的购买习惯通过一定的算法计算出来的。

SAP的一款CRM云解决方案,Cloud for Customer(简称C4C),同样支持使用机器学习根据销售订单历史数据进行向上销售和交叉销售机会的产品推荐。

下面我们一起来看看人工智能在产品推荐这个场景里的具体实现吧。还是先去Administrator->Prediction Services,点击Model Setup进行机器学习的模型设置。

我们可以在Machone Learning Scenarios(机器学习场景)的列表里看到Product Recommendation(产品推荐)这个场景。通过点击按钮“Add Model”创建一个新的机器学习模型,点击“Train”进行训练,确保训练成功完成,状态变为"Active", 说明该模型可用。

创建一个新的Product List,里面包含了需要销售的产品:下面的例子有两个产品,ID为为1042416和10001380。

如果是传统的产品推荐场景,假设当我在销售订单的行项目里维护了上述两个产品的ID后,还想推荐一些其他的产品,则需要通过人工的方式将这些推荐的商品维护到Product list的"Proposed Products"标签页里,如下图红色区域所示。

有了人工智能加上机器学习后,就可以省去这些人工配置的步骤和工作量。我给这个Product List加上了一个"203 - Product Recommendation"的场景,如下图蓝色区域所示,希望让这个Product List里包含的产品被加入到销售订单时,通过人工智能的方式由SAP C4C系统自动推荐相关产品给我。

现在我们来做个测试,创建一个新的销售报价单,将之前维护在Product List的某一个产品,比如1042416,维护在这个销售报价单的行项目里,然后C4C系统自动给我推荐了两个其他产品,ID为P140101和P140100。

去年5月的时候,Jerry曾经写了一篇文章:使用Java程序消费SAP Leonardo的机器学习API,而最近另外做的一个项目,

需要在Web应用里做同样的事情。

因为有了前一篇文章的铺垫,避免了很多重复的工作量。本文还是选择使用SAP Leonardo里的一个Product Image Classification API,即给定一张产品的图片,该API能识别出此产品的类别。

再回顾下这个API的功能:该API的模型是由SAP基于大约5万张Icecat图片训练而成,能区分29种不同的类别,这些类别具体罗列于官方文档上,比如电脑显示器,数码相机,外部存储设备,键盘,液晶电视,手机充电器,笔记本和其他外设等等。如果我们消费这个API时指定的图片代表的产品不属于这29种类别之一,API的表现如何?先卖个关子,文末解答。

关于如何在api.sap.com里找到这个API并且在API console里测试,请参考Jerry之前的文章:使用Java程序消费SAP Leonardo的机器学习API。

这里假定我们已经找到了该API,点击进入明细页面,将API Key复制下来,后续的UI5应用需要使用到。

然后进入SAP云平台的Neo环境。Jerry这个练习,使用免费的SAP Cloud Platform Neo测试环境即可。

在Service列表里找到WebIDE——我们将使用WebIDE进行UI5应用的开发。

Jerry已经开发好了一个UI5应用上传到我的Github上了:https://github.com/i042416/MachineLearning-UI5

大家可以直接在WebIDE里clone这个仓库,或者把仓库的内容以zip包的形式下载到本地,再使用WebIDE的本地Import功能导入。

我们要告诉UI5应用这个API的url,因此在Neo环境里创建一个Destination(作用和ABAP Netweaver事务码SM59里创建的Destination相同):

属性如上图所示,因为是Neo测试环境,所以url为对应的sandbox环境:https://sandbox.api.sap.com/ml

记下这个Destination名称sapui5ml-api, 因为稍后的UI5代码里需要使用。

记得维护额外的属性WebIDEnabled为true,这样该Destination才能在UI5应用里被使用。点击Check Connection确保看到绿灯。

打开WebIDE里UI5工程里的settings.json文件,将您之前从API console里拷贝的API Key粘贴到此处:

在项目根目录下的neo-app.json文件里,把类型为destination的target对象的名称维护成之前在SAP Cloud Platform Cockpit里创建的destination相同的名称。

运行这个UI5应用,能看到如下界面:

做一些简单的测试:

SAP Leonardo的机器学习API,识别出这张图片有74.7%的可能性是一台笔记本电脑,13.8%的可能性是键盘,11.3%的可能性是Tablets。

点击按钮View JSON,能看到调用SAP Leonardo API返回的技术明细。

鼠标的图片也成功识别出来了:

本文开始曾经提到这个API能识别出29种不同的产品类别,现在换一种产品,如下图:

这是Jerry小时候就很痴迷的《终结者》系列的T800,我在2017年回复SAP社区上一篇博客时也引用到了这款经典的模型,和阿诺德 - 施瓦辛格那句激励无数中老年程序员的著名台词:I am old but I am NOT OBSOLETE

原文链接: https://blogs.sap.com/2016/12/19/and-now-for-something-completely-different/

言归正传,如果希望SAP Leonardo的Product Image Classification API也能成功将T800识别出来,需要做些什么?

答案是重新训练模型。具体如何做,Jerry也还在研究,等研究完毕再分享。感谢阅读。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。