订单,用户,商品关联分析记录

最近有做采购平台 订单,用户,商品关联分析 的任务

目的在于希望能产出  商品推荐商品或者 商品 推荐给用户  的数据

主要采用python的apriori  进行关联分析

样例代码如下

大概如下:

from apyori import apriori
import pandas as pd
def ResultDFToSave(rules):  # 根据Qrange3关联分析生成的规则得到并返回对于的DataFrame数据结构的函数
    returnRules = []
    for i in rules:
        temList = []
        temList.append(i[0]);
        temList.append(i[1]);
        temList.append(i[2])
        temList.append(i[3]);
        returnRules.append(temList)
    return pd.DataFrame(returnRules, columns=('规则项', '推荐项', '支持度', '置信度'))

data = [['豆奶','莴苣'],['莴苣','尿布','葡萄酒','甜菜'], ['豆奶','尿布','葡萄酒','橙汁'],['莴苣','豆奶','尿布','葡萄酒'],['莴苣','豆奶','尿布','橙汁']]
result = list(apriori(transactions=data))

for  re in result:
    cur_ordered_statistics=re.ordered_statistics[0]
    print(re.support,cur_ordered_statistics.items_base,cur_ordered_statistics.items_add,cur_ordered_statistics.confidence)

依次输出关联分析结果 支持度,基本项  ,推荐项,置信度

在少数据量时 都能有一部分结果产出

但是从生产抽取了大概2W条订单数据进行行合并(订单号,sku|sku|sku..)

读入后

产出的结果为空 

取数据前20条 发现置信度和支持度很低 结果很少

取50条发现发现置信度和支持度更低 结果很少

全量导入 结果为空

统计了下 订单号大概有 大概有1W多个 sku有9000多个 才明白 原来数据太分散了

基本都是各买各的 所以无结果产出

于是转变思路

改成抽取某一个品类采购订单下的订单数据

做简单统计 订单号3.6W  sku4000多  

sku相对集中的数据才能有较好的分析结果

尝试了下 有结果了 但是还是效果不理想

后来在宋天龙.《Python数据分析与数据化运营》看到这样一段话

抽样样本量问题:

 1.以时间为维度分布的 至少包含一个能满足预测的完整业务周期的数据,比如做月度销售预测,至少要包含12个月的数据,做日销售预测,至少要包含30天的数据, 如果一天中包含特定周期,则需要重复多少个周期(暂时还不太理解这句话)

2.做预测(包含分类和回归)分析建模的,需要考虑特征数量和特征值域的分布,通常数据记录数需要至少为 特征数量 m个 和特征值域m个 的100倍  即100*m*n条数据以上

3.做关联规则分析建模的,根据关联前后项的数量(前后项可能包含多个关联的主体,例如品牌+商品+价格关联) 没个主体至少需要1000条数据,如果同时对品牌和单品关联 那么需要至少2000条数据

看来还是样本抽取的有问题 抽取订单采购的sku过于分散 不能形成有效的关联规则

于是又尝试了下新的抽取思路

对订单中出现的sku次数进行了 top排序

提取了出现次数超过1000次的sku

再提取购买过这些sku的用户采购过的sku

结果产出了了少量的推荐规则

在购买sku 59865 商品时 推荐购买 sku 64363

去数据库查了下

59865为 南孚7号碱性电池30粒

64363为 南孚5号碱性电池30粒

看来算法确实是可用的 无法产生有效的关联推荐 还是数据抽取的有问题

猜你喜欢

转载自blog.csdn.net/qq_14865711/article/details/83583028