You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

序列模式挖掘前的订单数据预处理及相关技术问题咨询

序列模式挖掘相关问题解答

问题背景代码

df <- data.frame(member_no = c('1','1','1','2','3','4','5','4','3','2','3','1','2','2','4'),
                 year_month = c('2020_Apr','2021_Mar','2021_Mar','2022_Jan','2023_May','2022_Dec','2019_Nov','2022_Feb','2021_Aug','2021_Aug','2020_Jan','2021_Mar','2021_Dec','2021_Jul','2023_Apr'),
                 product = c('A','B','B','B','C','C','A','B','B','B','A','B','B','B','C'))


dataset <- df |> 
  select(member_no, year_month, product) |> 
  group_by(member_no, year_month) |> 
  summarize(itemset = paste(as.character(product), collapse = ','))


write.table(dataset, 'data.txt', sep = ',', quote = F, row.names = F, col.names = F)

transaction <- read_baskets('data.txt', sep = ',', info = c('sequenceID', 'eventID'))
inspect(transaction)

freq.s <- cspade(transaction, parameter = list(support = 0.001), 
                 control = list(verbose = T))
inspect(head(freq.s, 1000, by = 'support'))

df1 <- freq.s

# output all results
df1 <- as(df1, "data.frame") %>% as_tibble()
df1$pattern <- (str_count(df1$sequence, ",") + 1)
df11 <- df1[order(-df1$support),] # descending

Q1:member_no为1的用户在同一个月有3个项集,应统计为序列<{A}, {B}>还是<{A}, {B,B,B}>?

  • 答案是<{A}, {B}>。
  • 原因:序列模式挖掘中,同一时间戳(此处为year_month)下的重复项通常会被去重处理——我们关注的是用户在该时段内是否发生过该行为,而非行为的重复次数。你的代码已经通过group_by合并了同月份的product,但严格来说应该先对同组内的product去重再合并,比如修改summarize语句:
    summarize(itemset = paste(unique(as.character(product)), collapse = ','))
    
  • 即便你没手动去重,cspade这类算法默认也会把同一个项集中的重复项视为单个存在,因为项集本质是集合(元素唯一、无序),而非多重集合。

Q2:为何执行sum(df1$support)得到的结果会大于1?

  • 这是因为序列模式的支持度是单个模式的统计指标,指包含该模式的序列占总序列数的比例,不同模式的支持度之间存在重叠计数。
  • 举个例子:如果某用户的序列是<{A}, {B}>,那么它会同时被计入模式<{A}>、<{B}>、<{A}, {B}>的支持度统计中。当你把所有模式的支持度相加时,同一个用户的序列会被多次计数,最终总和自然会超过1。
  • 支持度的总和没有上限,它反映的是所有频繁模式在数据集中的覆盖重叠程度,而非整体占比,因此大于1是完全正常的现象。

内容的提问来源于stack exchange,提问作者Kevin Hong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:47:46