• ML .NET 预测订单是否被退货


    场景

    根据历史订单的退货情况,预测新订单是否被退货
    这次利用ML .NET的数据分类功能,将订单状态分为退货不退货两种,计算每笔订单被退货、不被退货的概率
    需要注意的是,这里是文本数据分类,使用数据分类,而之前完成的猫狗分类,需要使用图像分类

    数据集

    数据来自Amazon Seller - Order Status Prediction
    描述:BL(Boss Leathers) 是一家小型皮革制品企业,最近开始在亚马逊上销售其产品。 目前,它在印度市场注册了大约 40 个 SKU。 在过去的几个月里,它因退货而蒙受了一些损失。 现在,BL 寻求帮助来预测新订单被拒绝的可能性。 这将有助于他们采取必要的行动,从而减少损失。

    原始数据

    数据如下

    列名从左到右依次为唯一的亚马逊订单号order_no、下订单的日期order_date、买家姓名buyer、收货城市ship_city、收货州/联邦ship_state、产品的唯一标识符sku、产品描述description、订购数量quantity、支付的总金额item_total、Boss Leathers 承担的运送物品的费用shipping_fee、付款方式:货到付款与否cod,最后一列是需要预测的结果,订单状态(退货、不退货)order_status

    数据处理

    这里需要对数据做一些处理,
    sku可以去掉前缀SKU:
    item_total和shipping_fee包含了货币单位,需要处理成数字
    cod为空的单元格填上Not Cash On Delivery,这样可以表示cod是一个枚举类型,包括货到付款和非货到付款两种形式
    得到了下图的数据

    最后因为ML .NET的自动训练模型仅支持.csv,.txt,.tsv和SQL Server数据库,我将.xlsx的文件格式转换为.txt

    训练模型

    训练方案选择数据分类

    训练环境选择本地CPU

    数据

    选择数据文件,加载数据

    设置要预测的列为order_status

    设置特征字段的属性

    开始训练


    这里我们选择的时间越长,ML .NET可能会尝试更多的算法
    从控制台可以看出来,10秒的训练时间,输出如下
    自动选择SdcaMaximumEntropyMulti模型

    Experiment output folder: ......
    |     Trainer                              MicroAccuracy  MacroAccuracy  Duration #Iteration                     |
    |0    SdcaMaximumEntropyMulti                     0.9362         0.6000       1.4          0                     |
    |1    LightGbmMulti                               0.9362         0.6000       1.5          1                     |
    
    ===============================================Experiment Results=================================================
    ------------------------------------------------------------------------------------------------------------------
    |                                                     Summary                                                    |
    ------------------------------------------------------------------------------------------------------------------
    |ML Task: Classification                                                                                         |
    |Dataset: ......\TrainData\orders_data.txt|
    |Label : order_status                                                                                            |
    |Total experiment time : 2.88 Secs                                                                               |
    |Total number of models explored: 2                                                                              |
    ------------------------------------------------------------------------------------------------------------------
    
    |                                              Top 2 models explored                                             |
    ------------------------------------------------------------------------------------------------------------------
    |     Trainer                              MicroAccuracy  MacroAccuracy  Duration #Iteration                     |
    |1    LightGbmMulti                               0.9362         0.6000       1.5          1                     |
    |0    SdcaMaximumEntropyMulti                     0.9362         0.6000       1.4          0                     |
    ------------------------------------------------------------------------------------------------------------------
    
    |2    FastTreeOva                                 0.9362         0.6000      11.1          2                     |
    

    60秒的训练时间,输出如下
    自动选择FastForestOva模型
    这里模型生成有点问题,需要手动添加引用Microsoft.ML.FastTree

    Experiment output folder: ......
    |     Trainer                              MicroAccuracy  MacroAccuracy  Duration #Iteration                     |
    |0    SdcaMaximumEntropyMulti                     0.9362         0.6000       1.3          0                     |
    |1    FastForestOva                               0.9363         0.7625      11.9          1                     |
    |2    SdcaMaximumEntropyMulti                     0.9362         0.6000       2.2          2                     |
    |4    SdcaMaximumEntropyMulti                     0.9362         0.6000       1.2          4                     |
    |5    SdcaLogisticRegressionOva                   0.9362         0.6000       2.5          5                     |
    |6    LightGbmMulti                               0.9362         0.6000       1.4          6                     |
    |7    SdcaLogisticRegressionOva                   0.9362         0.6000       2.6          7                     |
    |8    FastTreeOva                                 0.9362         0.6000      11.2          8                     |
    |9    SdcaMaximumEntropyMulti                     0.9362         0.6000       1.3          9                     |
    |10   LbfgsMaximumEntropyMulti                    0.9362         0.6000       2.3         10                     |
    |11   LbfgsLogisticRegressionOva                  0.9362         0.6000       3.4         11                     |
    |12   LbfgsMaximumEntropyMulti                    0.9242         0.5938       2.4         12                     |
    |13   SdcaMaximumEntropyMulti                     0.9362         0.6000       2.0         13                     |
    |14   LightGbmMulti                               0.9362         0.6000       1.6         14                     |
    |15   SdcaMaximumEntropyMulti                     0.9362         0.6000       1.9         15                     |
    
    ===============================================Experiment Results=================================================
    ------------------------------------------------------------------------------------------------------------------
    |                                                     Summary                                                    |
    ------------------------------------------------------------------------------------------------------------------
    |ML Task: Classification                                                                                         |
    |Dataset: ......\TrainData\orders_data.txt|
    |Label : order_status                                                                                            |
    |Total experiment time : 49.15 Secs                                                                              |
    |Total number of models explored: 15                                                                             |
    ------------------------------------------------------------------------------------------------------------------
    
    |                                              Top 5 models explored                                             |
    ------------------------------------------------------------------------------------------------------------------
    |     Trainer                              MicroAccuracy  MacroAccuracy  Duration #Iteration                     |
    |1    FastForestOva                               0.9363         0.7625      11.9          1                     |
    |14   SdcaMaximumEntropyMulti                     0.9362         0.6000       1.9         14                     |
    |13   LightGbmMulti                               0.9362         0.6000       1.6         13                     |
    |12   SdcaMaximumEntropyMulti                     0.9362         0.6000       2.0         12                     |
    |10   LbfgsLogisticRegressionOva                  0.9362         0.6000       3.4         10                     |
    ------------------------------------------------------------------------------------------------------------------
    
    |16   FastForestOva                               0.9302         0.7316      12.8         16                     |
    

    评估

    之后有一个简单的评估功能,可以迅速看一下这个模型的效果如何

    最后ML .NET贴心的为我们准备了调用模型获得结果的示例代码,让我们可以快速开发

    调用模型完成功能

    写一个UI,输入数据,并预测是否会被退货

    示例代码

    OrderStatusPrediction

    参考资料

    Microsoft.ML.Trainers.FastTree 命名空间
    官方machinelearning-samples
    社区示例

  • 相关阅读:
    【洛谷P2860】冗余路径
    【CF1042D】Petya and Array 离散化+树状数组
    【洛谷P2127】序列排序
    【洛谷P4462】异或序列
    【SPOJ10707】COT2
    【CF1119D】Frets On Fire
    【CF1119E】Pavel and Triangles
    【洛谷P1903】数颜色
    hdu 3488(KM算法||最小费用最大流)
    hdu 1853(拆点判环+费用流)
  • 原文地址:https://www.cnblogs.com/Lulus/p/16017919.html
Copyright © 2020-2023  润新知