有一个非常经典的段子,就是“啤酒和尿布”。故事是说,沃尔玛的一位门店经理发现,周末啤酒和尿布的销量会“落霞与孤鹜齐飞,秋水共长天一色”,一起上涨。经过分析,是因为奶爸们周末看球喝啤酒的同时要给娃带上尿布,然后就把这两样商品摆在一起促进销售云云。甚至专门用这个案例作为一本书的标题:

Image result for 啤酒 尿布  Image result for 啤酒 尿布

    先且不论这个故事的真实性(知乎:),可见人们对于数据挖掘分析并用以提升业务是很痴迷的。以前可能要雇一群人分析大量的数据给出可能的结果,而现在,AI可以帮你搞定这个事情。

     你甚至不用写一行代码。

    Azure 里面的AI及认知服务家族正在不断扩展,在下面这个长长的人工智能API清单里,有很多已经广为人知的例如计算机视觉,语义分析,表情分析,智能搜索等等,而有一个新出的服务,叫做建议(Recommendations)。

    建议这个东西,是所有人都需要的。不信你看看你手机:“晚上吃啥啊?”,“周末去哪啊?”。对于业务来说,通过数据挖掘为客户提供合适的建议,不仅仅是可能扩大销售,更厉害的是培养信任感,跨越销售防备的城墙。

    所以,通过一些简单的数据,利用人工智能,进行分析,也就是“互联网+”时代的刚需了。在Azure里面,可以直接添加这个有趣的服务,进行一番有趣的探索。服务部署后,有个简单的后续步骤,最重要的第一步是生成服务对应的Key,不论是使用站点简单实现建议的人工智能,还是自行使用API开发更为复杂的BI实现,都离不开这个Key来使用Azure云平台的能力。

    复制这个Key之后,我们就可以打开用于尝鲜的站点: 输入Key即可登录。

    登录之后我们干啥呢?在创建一个新的Project之前,可以参考一下官方的文档:

    在创建Azure服务之后,就可以为建议服务准备数据了。数据分为两部分,一部分是,一部分是。品类数据可以包括<item ID>,<item name>,<product category>等,事物数据可以包括<User ID>,<Item ID>,<Time Stamp>,<Event>等。具体的字段定义和数据类型,可以点击以上的链接访问相关API参考。

    一开始不了解这个服务使用的数据,可以使用微软准备好的样例数据。示例数据是一家书店的样例。品类数据是各种书,而事务数据非常简单,只有user、item两个字段,便于快速进行处理演示。

   新建一个Project, 把这两个数据上传到建议服务项目中,设定诸如模型递归、模型维度、数据取舍等参数,就可以开始进行人工智能的自动分析了。

    云服务平台会给Build分配ID并创建Job任务。数据简单而且数量不多,几分钟后就能获得结果。

    结果会以Score分数集合的形式得到展现。如何体现为人比较易读的结果呢?

    点击“Score”,就会展现一个简单的购买模拟界面。可以把显示出的书添加到中间的购物车,同时,根据之前其他一起购买的信息,进行AI分析之后,在下面给出建议的书。

     细心的你肯定发现了,建议的书除了书名,还显示了一个分数,姑且我们称之为推荐度吧。随你添加到购物车里的书不同,推荐的各种书的建议分数(推荐度)也是不同的。例如我选了一本《自私的基因》,系统就根据之前的购买记录猜测我喜欢科幻类的、科学类的书,例如《沙丘》、《宇宙尽头的餐馆》等。

    而随着我添加的书数量增加,系统匹配到书的推荐度也在增加。这是因为添加的书之间也有一些关联度,这些关联度增强了建议购买的书之间的关联度。因为选择了《冰与火之歌》和《美国众神》,侧重反乌托邦的《安德的游戏》和《1984》也进入了建议书目。

    建议服务在分析过数据后,还会对分析做出小结。当然,要进行人工智能的分析,“喂”给云平台服务的数据有一定的要求。除了前面提到的数据格式类型的要求,还有一些数据量和数据大小的限制。例如事务数据量应该至少20倍于品类数据。每个项目每次上载的数据不可大于200MB,但可以上传多个文件,只要不大于2GB。如果数据太大,估计是要做模型调整或者ETL清洗一下?

    而建议服务能够提供的学习(Build)类型目前有几种:Recommendations、Rank、FBT、SAR。(这里文档有点矛盾,前文说支持Ranking和FBT,然后后文又说支持Recommendation和FBT,然后服务站点下来可选4个……估计发展快没更新)。FBT是“经常一起购买(Frequently Bought Togather)”的缩写, 不同的类型的比较可以参考: 我对照了一下,确实返回的内容是不同的。

    需要说明的是,在新建建议服务时,微软提示说提交的数据会被用于改进人工智能,因此正式使用的话,需要考虑数据脱敏的问题。

    看,我们确实没有写一个字的代码,但是完成了分析数据实现“啤酒和尿布”这件事情。