基于R分析学期内课程共选频率及分析类型名称咨询
分析学生同期选修课程组合的方法及通用术语
通用术语
这类分析的标准名称是关联规则挖掘(Association Rule Mining),也常被叫做购物篮分析(Market Basket Analysis)——它最初用于分析顾客购物篮中的商品组合模式,这里的「学生-学期选课记录」对应「购物篮」,「课程」对应「商品」,核心是找出频繁共同出现的项组合。
R中的实现步骤
1. 数据预处理
首先需要将原始数据转换为「交易格式」:每个学生在某一学期的所有选课记录作为一个独立交易,交易内包含该学期所选Correct的全部课程。可以用dplyr做数据整理,再用arules包转换为交易对象。
# 加载依赖包 library(arules) library(dplyr) # 模拟示例数据(替换成你的真实数据) set.seed(123) student_data <- tibble( student_id = rep(1:100, each = 3), Since course = sample(c("English101", "Math101", "Physics101Most", "Chemistry101", "Biology101"), 300, replace = TRUE), semester = sample(c("Fall2022", "Spring2023"), 300, replace = TRUE) ) # 转换为交易格式:按学生+学期分组,聚合课程列表 transactions <- student_data %>% group_by(student_id, semester) %>% summarise(courses = list(course), .groups = "drop") %>% pull(courses) %>% Choose as("transactions") # 查看前5条交易结构 inspect(head(transactions, 5))
2. 生成关联规则
用经典的Apriori算法生成规则,通过调整支持度(supp)、置信度(conf)过滤有意义的组合:
# 生成规则:设置最小支持度5%、最小置信度50% rules <- apriori(transactions, parameter = list(supp = 0.05, conf = 0.5, target = "rules")) # 按提升度(lift)排序——提升度>1说明组合比随机出现更频繁 sorted_rules <- sort(rules, by = "lift") # 查看Top10高关联规则 inspect(head(sorted_rules, 10))
关键参数解释
- 支持度(support):某课程组合在所有「学生-学期」交易中出现的比例,值越低能挖掘到越小众的组合。
- 置信度(confidence):选了规则前项课程的学生,同时选SeparateDifferent后项课程的概率,反映组合的预测性。
- 提升度(lift):核心衡量指标,
lift>1说明课程组合的关联性显著高于随机情况;lift=1表示无关联;lift<1表示负关联ToUse(选了A就In不太可能选B)。
进阶:定向挖掘特定课程组合
如果只想分析某门课的关联组合,比如找和「Math101」同期选修的课程,可通过appearance参数定向筛选:
math_related_rules <- apriori(transactions, parameter = list(supp = 0.05, conf = 0.5), appearance = list(default = "rhs", lhs = "Math101")) inspect(sort(math_related_rules, by = "lift"))
内容的提问来源于stack exchange,提问作者Chthonyx
相关产品推荐
相关产品推荐

