购物篮分析-关联分析

关联分析

关联分析在机器学习领域属于无监督模型,它的试用场景还是非常广泛的。比如数据挖掘中一直有个广为流程的一个故事,啤酒与尿布的故事。美国沃尔玛超市管理人员分析其销售数据时,发现了一个奇特的现象:在日常的生活中,“啤酒”与“尿布”这两件商品看上去风马牛不相及,但是经常会一起出现在消费者的同一个购物篮中。沃尔玛的管理人员发现该现象后,立即着手把啤酒与尿布摆放在相同的区域,让年轻的美国父亲非常方便地找到尿布和啤酒这两件商品,并让其较快地完成购物。这样一个小小的陈列细节让沃尔玛获得了满意的商品销售收入。当然后来听说这个故事是Teredata编的,编的。。。。

美国学者艾格拉沃(Agrawal)在1993年从数学及计算机算法角度提出了商品关联关系的计算方法——Aprior算法,即通过分析购物篮中的商品集合,找到商品之间关联关系的关联算法,根据商品之间的关系,利用这些insight可以应用在不同场景:

  • 对于门店来说,可以把频繁一起购买的商品放在临近的地方,消费者买了A,看到B,大概率会买B
  • 对于CRM来说,如果消费者买过A,那么可以给他们推些B的券,提高买B的可能性,也提高券的兑换率
  • 对于CRM来说,可以设置一些商品组合折扣,比如同时买A和B可以享受8折,这样可以提高券的兑换率
  • 最经常购买的商品可以组套包

本文主要是概述下关联分析的基本概念以及在真实案例中如何用,hands on coding前,我们介绍下关联分析的基本原理

基本原理

频繁项集的几个基本指标:support、confidence、lift

  1. support(支持度):数据集中所有包含该商品的记录占总体记录数的比例,公式为: s u p p o r t ( A ) = 包 含 A 的 记 录 数 总 体 记 录 数 support({A}) = \frac {包含A的记录数}{总体记录数} support(A)=A
  2. confidence(置信度,可信度):同时包含商品A和B的记录数除以仅包含商品A的记录数,公式为: c o n f i d e n c e ( A − > B ) = 同 时 包 含 A , B 的 记 录 数 包 含 A 的 记 录 数 confidence({A}->{B}) = \frac {同时包含A,B的记录数}{包含A的记录数} confidence(A>B)=AA,B。这个指标是衡量,当消费者买了A时,有多大可能性也会买B,数值越高越好
  3. lift(提升度):这个和支持度和置信度有关,就是confidence除以support。公式为: l i f t ( A − > B ) = c o n f i d e n c e ( A − > B ) s u p p o r t ( B ) lift({A}->{B}) = \frac {confidence({A}->{B})}{support(B)} lift(A>B)=support(B)confidence(A>B)当这个提升度大于1时,说明商品A对商品B是有提升作用的。用户买A,大概率会买B,这个规则是有效的。当提升度等于1时,说明商品A和商品B没有相关性。当提升度小于1时,说明商品A对于商品B有负面作用。

关联算法大概的步骤都可以归为两步,第一步是找到频繁项集,第二步是找到有效的关联规则。找到频繁项集的方法目前有两种,Apriori和FP-Growth.大牛们早就把基础代码打包成了library,我们这里简单理解下这两种算法的区别。

  • Apriori: 频繁项的指标是support(支持度),也就是说找支持度超过阈值的集合。当商品数目为4种时,要遍历所有的集合,需要扫描数据集15次。如果商品数目为N时,需要扫描 2 N − 1 2^N-1 2N1次。这个运算时间和空间都是巨大的。aprior原理是说如果某个集合是频繁的,那么这个集合的子项也是频繁的。反过来,如果一个集合是非频繁项,那么它的超集也是非频繁的。比如{0,1}是非频繁的,那么包含{0,1}元素的集合如{0,1,2}也是非频繁的。因此,如果我们算出{0,1}是非频繁项,那么就不需要计算{0,1,2}的support了。这样,可以避免项集数目的指数增长。
  • FP_Growth:Fp-Growth只会扫描数据集两次,第一次建立FP树,第二次挖掘FP树的频繁项集。

上代码实例

导入libraries

import pandas as pd
import numpy as np
pd.set_option('display.max_columns', None)
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules,fpgrowth

数据预处理

看下rawdata的结构

df_order_sh.tail()
order_keyorder_business_dateproduct_code
1182274713974312022-03-2164
1182274813974312022-03-21160
1182274913974322022-03-21281
1182275013974322022-03-2118
1182275113974322022-03-21160

需要将原始数据处理成算法输入的结构,这里省掉数据本身的清洗过程。在实际工程案例中,数据本身的清洗过程也非常重要,当然也非常耗时。

lis_dataset = []
start = dt.datetime.now()
df_item = df_order_sh.groupby(by='order_key',as_index=False).agg({'product_code':lambda x:list(set(x))})
lis_dataset = df_item['product_code'].values
te = TransactionEncoder()
# oht_ary = te.fit(lis_dataset).transform(lis_dataset, sparse=True)
# sparse_df = pd.DataFrame.sparse.from_spmatrix(oht_ary, columns=te.columns_)
te_ary = te.fit(lis_dataset).transform(lis_dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)
end = dt.datetime.now()
print('Time taken: %s' % (end - start))
Time taken: 0:00:13.465850

看下数据结构,行是每笔交易订单,column是产品

df.head()
0110100101102103104105106107108109111101111121131141151161171181191212012112212312412512612712812913130131132133134135136137138139141401411421431441451461471481491515015115215315415515615715815916160161162163164165166167168169171701711721731741751761771781791818018118218318418518618718818919190191192193194195196197198199220200201202203204205206207208209212102112122132142152162172182192222022122222322422522622722822923230231232233234235236237238239242402412422432442452462472482492525025125225325425525625725825926260261262263264265266267268269272702712722732742752762772782792828028128228328428528628728828929290291292293294295296297298299330300301302303304305306307308309313103113123133143153163173183193232032132232332432532632732832933330331332333334335336337338339343403413423433443453463473483493535035135235335435535635735835936360361362363364365366367368369373703713723733743753763773783793838038138238338438538638738838939390391392393394395396397398399440400401402403404405406407408409414104114124134144154164174184194242042142242342442542643444546474849550515253545556575859660616263646566676869770717273747576777879880818283848586878889990919293949596979899
0TrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
1FalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
2FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
3FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
4FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse

关联算法

对比下fpgrowth和apriori的速度

  • fpgrowth
start = dt.datetime.now()
fp_df = fpgrowth(df, min_support=0.005, use_colnames=True)
end = dt.datetime.now()
print('Time taken: %s' % (end - start))
Time taken: 0:00:07.011471
  • apriori
start = dt.datetime.now()
apriori_df = apriori(df, min_support = 0.005,use_colnames = True)
end = dt.datetime.now()
print('Time taken: %s' % (end - start))
Time taken: 0:01:06.819719
df.shape
(1397433, 427)

这个case看,apriori找到频繁项集需要76s,但是fpgrowth却需要7.2s,是apriori耗时的1/10。我们的实验集差不多1百多万行记录,如果数据集更大,差距会更明显。

apriori和fpgrowth的找频繁项集的原理不一样,但是输出基本是一致的。后面我们用apriori的结果寻找关联规则。

找到频繁项集后,最后一步是找到合适的规则

rules = association_rules(apriori_df, metric ="lift", min_threshold = 1)
rules = rules.sort_values(['confidence', 'lift'], ascending =[False, False])
# 看下结果
rules
antecedentsconsequentsantecedent supportconsequent supportsupportconfidenceliftleverageconviction
0(42)(0)0.0123790.2511750.0086780.7010232.7909770.0055692.504626
28(89)(63)0.0107150.0109900.0052100.48617644.2374290.0050921.924803
29(63)(89)0.0109900.0107150.0052100.47402044.2374290.0050921.880841
21(62)(5)0.0174150.0208420.0070680.40586019.4733610.0067051.648025
18(6)(5)0.0189780.0208420.0075470.39766219.0800410.0071511.625596
6(116)(5)0.0129300.0208420.0050030.38690618.5639440.0047331.597076
23(65)(5)0.0143040.0208420.0055010.38456218.4514660.0052031.590993
27(65)(6)0.0143040.0189780.0053910.37690719.8605840.0051201.574440
19(5)(6)0.0208420.0189780.0075470.36209419.0800410.0071511.537880
25(62)(6)0.0174150.0189780.0062170.35700218.8117020.0058871.525700
20(5)(62)0.0208420.0174150.0070680.33912419.4733610.0067051.486793
24(6)(62)0.0189780.0174150.0062170.32760218.8117020.0058871.461314
15(22)(9)0.0202210.1497800.0063670.3148602.1021450.0033381.240943
11(18)(26)0.0231980.0254520.0071220.30699012.0613440.0065311.406253
17(31)(26)0.0188350.0254520.0053840.28585511.2309880.0049051.364636
26(6)(65)0.0189780.0143040.0053910.28408719.8605840.0051201.376838
10(26)(18)0.0254520.0231980.0071220.27980212.0613440.0065311.356296
12(31)(18)0.0188350.0231980.0052570.27913112.0324050.0048211.355033
2(9)(0)0.1497800.2511750.0407890.2723261.0842090.0031681.029067
22(5)(65)0.0208420.0143040.0055010.26393118.4514660.0052031.339136
7(5)(116)0.0208420.0129300.0050030.24003418.5639440.0047331.298835
13(18)(31)0.0231980.0188350.0052570.22663312.0324050.0048211.268693
16(26)(31)0.0254520.0188350.0053840.21153811.2309880.0049051.244404
3(0)(9)0.2511750.1497800.0407890.1623931.0842090.0031681.015058
5(11)(9)0.1208350.1497800.0190160.1573681.0506580.0009171.009005
8(19)(17)0.0590390.1056050.0082390.1395461.3213990.0020041.039446
4(9)(11)0.1497800.1208350.0190160.1269561.0506580.0009171.007011
9(17)(19)0.1056050.0590390.0082390.0780141.3213990.0020041.020581
14(9)(22)0.1497800.0202210.0063670.0425072.1021450.0033381.023275
1(0)(42)0.2511750.0123790.0086780.0345502.7909770.0055691.022964

从这个结果看,实验集中最多两个产品之间会存在关联关系。我们这里support(支持度)设的是0.005,很低,实际案例中可以根据分析场景进行调节。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
购物篮数据的关联分析的Matlab代码通常是使用Apriori算法来构建关联规则模型。以下是一个简单的示例代码: ```matlab % 导入购物篮数据集(假设购物篮数据集保存在一个名为basket的文件中) basket = importdata('basket.txt'); % 将购物篮数据集进行预处理,将每个购物篮数据转换为一个事务列表 transactions = cell(size(basket, 1), 1); for i = 1:size(basket, 1) transactions{i} = strsplit(basket{i}); end % 设置关联规则分析的参数(支持度和置信度阈值) minSupport = 0.1; minConfidence = 0.5; % 使用Apriori算法进行关联规则分析 rules = apriori(transactions, 'MinSupport', minSupport, 'MinConfidence', minConfidence); % 输出关联规则 for i = 1:length(rules) disp(['规则', num2str(i), ':']); disp(['前项: ', num2str(rules(i).Premise)]); disp(['后项: ', num2str(rules(i).Consequence)]); disp(['支持度: ', num2str(rules(i).Support)]); disp(['置信度: ', num2str(rules(i).Confidence)]); disp(' '); end ``` 在上述代码中,首先导入购物篮数据集,并将数据集进行预处理,将每个购物篮数据转换为一个事务列表。然后设置关联规则分析的参数,包括支持度和置信度阈值。最后,使用Apriori算法进行关联规则分析,并输出每条关联规则的前项、后项、支持度和置信度。 请注意,这只是一个简单的示例代码,具体的实现可能会因实际需求而有所不同。您可以根据自己的实际情况进行代码的调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值