使用OSS中的数据作为机器学习的训练样本

本文介绍如何将对象存储OSS里面的数据作为PAI的训练样本。

说明

本文由 龙临@阿里云 提供,仅供参考。

背景信息

本文通过OSSPAI的结合,为一家传统的文具零售店提供决策支持。本文涉及的具体业务场景(场景与数据均为虚拟)如下:

一家传统的线下文具零售店,希望通过数据挖掘寻找强相关的文具品类,帮助合理调整文具店的货架布局。但由于收银设备陈旧,是一台使用XP系统的POS收银机,可用的销售数据仅有一份从POS收银机导出的订单记录(csv格式)。本文介绍如何将此csv文件导入OSS,并连通OSS与PAI,实现商品的关联推荐。

操作步骤

  1. 数据上传至Bucket。

    以上传文件为Sample_superstore.csv,上传至华东1(杭州)地域下的目标存储空间examplebucket为例。

    1. 构造Sample_superstore.csv文件数据样例。

      order_id,order_date,customer_id,item,sales,quantity
      1,20240101,1,aa,10,100
    2. 将Sample_superstore.csv文件上传至examplebucket。具体操作,请参见简单上传

  2. 连通OSS和PAI。

    1. 在华东1(杭州)地域新建工作流。具体操作,请参见新建自定义工作流

    2. 单击新建的工作流,然后在左侧导航栏选择源/目标 > 读CSV文件

    3. 双击读CSV文件组件,在右侧的读CSV文件组件面板的参数设置页签,文件路径设置为oss://examplebucket/Sample_superstore.csvSchema设置为order_id string,order_date string,customer_id string,item string,sales string,quantity string,打开是否忽略第一行数据开关,其他参数保留默认配置。

    4. 右键单击读CSV文件组件,然后单击执行该节点

    5. 等待执行完成后,右键单击读CSV文件组件,然后单击查看数据 > 任意

      在组件下方,查看表信息。数据预览仅支持1000条记录。如果需要查看全表,请按照页面指引前往DataWorks。

数据探索流程

本文所用的主要算法组件为协同过滤。有关该组件的详细用法,请参见协同过滤做商品推荐

本案例中的数据探索流程如下:

本案例按8:2的比例将源数据拆分为训练集和测试集,其中一个订单中可能有多个item,故ID列选择order_id,保证含有多个item的订单不会被拆分,如下图所示:

本案例中共有17个产品item。通过协同过滤算法组件,取相似度最高的item,结果如下表:

结论

通过机器学习,我们发现“纸张”与“订书器”二者的相似度较高,且与其它产品也有较高的相似度。

对于这家文具零售店来说,根据此数据发现可以有两种布局货架的方式:

  • 纸张和订书器货架放在最中间,其它产品货架呈环形围绕二者摆放,这样无论顾客从哪个货架步入,都可以快速找到关联程度较高的纸张和订书器。

  • 将纸张和订书器两个货架分别摆放在文具店的两端,顾客需要横穿整个文具店才可以购买到另外一样,中途路过其他产品的货架可以提高交叉购买率。当然,此布局方式牺牲了用户购物的便利性,实际操作中应保持慎重。