【问题标题】:R Basket Analysis using arules package with unique order number but duplicate order combinations使用具有唯一订单号但重复订单组合的 arules 包的 R 篮子分析
【发布时间】:2013-05-13 05:26:19
【问题描述】:

使用具有唯一订单号但重复订单组合的 arules 包的 R 篮子分析

刚刚学习 R。我正在尝试使用 arules 软件包进行购物篮分析(但我完全愿意接受任何其他软件包建议!)以比较所购买的 6 种不同商品类型的所有可能组合。

我的原始数据集如下所示:

OrderNo, ItemType, ItemCount  
111, Health, 1  
111, Leisure, 2  
111, Sports, 1  
222, Health, 3      
333, Food, 7  
333, Clothing, 1  
444, Clothing, 2  
444, Health, 1  
444, Accessories, 2  

。 . .

这个列表还在继续,大约有 3,000 个观察值。

我将数据折叠到一个矩阵中,该矩阵包含每个唯一订单的一行,其中包含特定 ItemType 的计数:

 OrderNo, Accessories, Clothing, Food, Health, Leisure, Sports  
 111, 0, 0, 0, 1, 2, 1  
 222, 0, 0, 0, 3, 0, 0  
 333, 0, 1, 7, 0 , 0, 0  
 444, 2, 2, 0, 1, 0, 0  
 . . .

每次我尝试使用以下命令(以及一百万次尝试的变体)读取交易时:

tr <- read.transactions("dataset.csv", rm.duplicates=FALSE, format="basket", sep=",")

我收到错误消息: asMethod(object) 中的错误:无法强制列出具有重复项的事务。

我假设这是因为我有 3,000 次观察,并且不可避免地会出现不止一次的某些组合(即,不止一个人只购买一件衣服,没有别的:OrderNo, 0, 1, 0, 0, 0, 0)。我知道我可以根据唯一组合的数量来折叠数据集,但我担心如果这样做,将没有权重来显示最常见的组合。

我认为使用 format="basket" 会考虑包含相同项目组合的不同订单,但显然情况并非如此。我迷路了。我读过的所有文档都暗示这是可能的,但我找不到任何关于如何解决问题的示例或建议。

任何建议将不胜感激!我的头在这上面旋转。

额外信息:对于我的最终结果,我希望获得前五个最重要的购买组合。我不知道这是否有帮助。

【问题讨论】:

标签: r arules market-basket-analysis


【解决方案1】:

好的,经过数小时的搜索和阅读我能找到的所有 pdf,我终于在 DATA MINING Desktop Survival Guide by Graham Williams: 中找到了答案(也是最有用的先验/篮子分析演练!)

read.transactions 函数还可以从具有事务 ID 和每行单个项目的文件中读取数据(使用 format="single" 选项)。

因此,导入后无需进行所有这些转换。我应该直接从指定“单一”格式选项而不是“篮子”的原始 csv 文件导入。我还必须确保该文件包含没有列名,并且有一个与订单号配对的商品类型的唯一表示(例如,如果一个人从“杂货”类别中订购了两件商品,这需要在一行上表示)。 cols=c(2,1) 选项表示第 1 列包含订单号,第 2 列是其余数据(ItemType)。

tr <- read.transactions(file='dataset.csv', format='single', sep=',', cols=c(2,1))

【讨论】:

    【解决方案2】:

    您必须删除重复项,如果您使用的是 .CSV 文件,请在处理此文件之前在 Excel 中运行数据 -> 删除重复项。如果发现重复项,arules 会抛出错误,这是因为您收到了错误。

    另一种方法是在您的项目集上使用 duplicated() 并使用 unique() 删除重复项。

    或者可以在这篇 SO 帖子中找到更简单的方法

    Association analysis with duplicate transactions using arules package in R

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 2011-12-21
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多