Apriori算法在高职院校公共选修课关联性分析中的应用

2022-07-20 08:03王善勤王立辉
关键词:项集置信度事务

王善勤,王立辉

(1.东南大学 仪器科学与工程学院,江苏 南京 210096;2.滁州职业技术学院 信息工程学院,安徽 滁州 239000)

公共选修课在高校人才培养中承担的任务日趋重要,已成为高校拓宽学生知识面、优化学生知识结构的重要抓手,也是提高学生综合素质的重要载体.[1]实现高职院校公共选修课管理的数字化转型,是教务管理人员当前所面临的重要且急迫的挑战.数据挖掘技术[2-3]对于寻找选修课隐含的关联规则提供了全新思路和有效手段.[4]Apriori算法是关联规则的经典算法[5],通过从海量原始数据中找出频繁项集, 进而产生数据间隐含的强关联规则.冯楚生[6]等提出利用数据挖掘技术构建学生个性化的选课推荐系统,结合学生兴趣、需求、性格、特长等方面因素,根据Apriori算法对课程信息进行关联分析.齐钦[7]将关联规则算法运用到学生成绩数据分析中,得出了强关联规则,通过分析验证了课程间相关性和作用性结论.李志亮[8]等设计了一种基于压缩矩阵的Apriori改进算法,对学生部分课程成绩及选修课数据进行挖掘,分析出学生可能感兴趣的选修课.本文将Apriori算法引入到高职院校公共选修课选修管理中,探索从公共课选修集中找出频繁项集的方式,提出根据1项集预选、支持度平均值来确立关联规则最小支持度阈值并将其应用到公共选修课管理中.

1 数据来源及处理

以滁州职业技术学院2018级三年公共选修课选修数据为样本,对其进行预处理和数据仓库的构建,根据需要进行数据转换.

1.1 数据清洗及数据转换

数据清洗对象为:因参军入伍、请病假等原因休学或退学的、公共选修课选修信息采集不完整的、开设的公共选修课因不同教师导致教务系统中同课头不同名称的,这些因素导致部分记录变成了噪声数据.不完整数据样本较少,采用直接删除策略直接将其丢弃.噪声数据样本在整个样本的比例相对较大,采用聚类、泛化方法进行处理.经过对数据集进行清理后,得到优良记录共计3 276条.

将噪声数据运用聚类方法进行处理.由于部分学生选修同一门选修课多次,此类数据采用数据泛化处理.

1.2 选择数据的属性及预处理

在运用Apriori算法进行关联规则分析过程中,通过选定的样本集,设计高职院校公共选修课选修数据表:学号(xh),姓名(xm),课程1(kc1),课程2(kc2),课程3(kc3),课程4(kc3),课程5(kc5),课程6(kc6).对公共选修课选修数据进行操作,将各公共选修课课程名称用字母、数字编码字符串代替,并统计出样本数,撰写数据字典,如表1所示.

表1 公共选修课课程映射字典信息表

根据Apriori算法规范数据,经过预处理后得到3 276条样本记录.

2 公共选修课关联规则构建

2.1 改进Apriori算法最小支持度阈值的设定

关联规则挖掘技术就是挖掘支持度和置信度满足设定的最小支持度、置信度阈值的期望规则.[9-10]最小支持度、置信度阈值的设定在很大程度上影响着关联规则算法挖掘效率,将最小支持度阈值设定过高或过低都会影响数据挖掘的效果.为了解决经典算法这个固有的缺陷,蔡红[11]等提出了一种最小支持度阈值调整优化的统计规律性算法,主要采取低则下调、高则上调的最小支持度调整办法.针对公共选修课关联性分析的实际应用场景,对其进行进一步改进,给出计算最小支持阈值的计算方法.针对样本项集I={i1,i2, …,im}中项较多,项集预选率偏低的实际应用场景,采用对样本1-项集进行分析统计,计算1-项集的支持度平均值及其预选平均值的积,支持度阈值选取通过对其向上“取整”法确立(向上“取整”指对得到值从前往后第二位不为零的数).最小支持度阈值可如式(1)所示.

(1)

式(1)中,N表示样本集中样本个数,k表示样本项集中项的个数,P(xi)表示项xi在样本中出现的次数,Thminsup表示计算的最小支持度阈值.

运用提出最小支持度阈值计算方法,对本文数据进行计算操作.从强关联规则获取数的角度进行观测,计算出最小支持度阈值.根据该类场景实际情况,当最小置信度阈值为0.4,0.5,0.6的情况下,最小支持度阈值为[0.00092,0.002]区间内.实验结果显示,该最小支持度阈值计算方法值为0.000 97,正好处在强关联规则随最小支持度阈值变化曲线图中较理想的位置,最小支持度阈值计算方法是有效的.

2.2 基于Apriori算法的公共选修课关联规则模型构建

确立Apriori算法的最小支持度、置信度阈值,根据频繁项集和最小置信度阈值建立公共选修课间的强关联规则.每一条选课记录称为一个事务,给定一个事务集合T,设Ck是候选项集,Lk是频繁项集.

对清洗后的事务集合进行遍历,得到候选1项集C1及其支持度.计算出候选C1项集即事务集合T中的所有项集,计算每一门公共选修课在事务集合T中所占百分比.如果某门公共选修课选修支持度小于最小支持度阈值,则通过剪枝删掉.遍历完所有数据并保留下来的公共选修课集合即是频繁1项集L1.

将得到的频繁1项集L1进行自连接,得到候选2项集C2及其支持度.计算得出C2中每项支持度,计算事务集合T中相应两门公共选修课的项集在事务集合T总项集数中所占的百分比.如果其支持度小于最小支持度阈值,则通过剪枝删掉.遍历完所有数据并保留下来每两门公共选修课集合,即得到频繁2项集L2.

将得到的频繁k-1项集Lk-1进行连接并剪枝删除非频繁项集.得到候选k项集Ck及其支持度.计算出Ck中每项支持度,计算事务集合T中相应k门公共选修课的项集数占事务集合T中总项集数的百分比.如果其支持度小于最小支持度阈值,则通过剪枝删掉,得到频繁k项集Lk.

找出最大的6项频繁集,因为在事务集合T中选修公共选修课门数最多的样本记录就是6门课.满足最小置信度的频繁项集即为建立的强关联规则.结束算法得到强关联规则.

3 编程实现分析

引用数据分析库numpy,pandas,运用python语言编码实现Apriori算法,对清洗处理后数据进行数据挖掘,挖掘出公共选修课间隐藏的关联规则.将清洗后的事务集放到数据库中,编程导入数据,通过Apriori算法分析课程间关联规则,并通过编程方式将分析得到关联规则保存到数据库中.

3.1 最小支持度、置信度阈值的设定

对样本数据进行统计分析,根据本文提出的最小支持度阈值的运算方法进行计算,1项集支持度的平均值为0.022 377 875,1项集平均预选的值为0.043 345 543,二者乘积为0.000 969 981,由此确立用于Apriori算法分析的支持度阈值为0.000 97.考虑对频繁项进行更加全面分析,确立最小置信度阈值为0.3.

3.2 Apriori算法关键核心代码

def search_rule(d,support,confidence,ms = '--'):

result=pd.DataFrame(index=['support', 'confidence'])

support_series=1.0*d.sum()/len(d)

col=list(support_series[support_series>support].index)

k=0

while len(col)>1:

k=k+1

col=connect_string(col,ms)

sf=lambda i:d[i].prod(axis=1,numeric_only=True)

d_2=pd.DataFrame(list(map(sf,col)),index=[ms.join(i)for i in col]).T

support_series_2=1.0*d_2[[ms.join(i)for i in col]].sum()/len(d)

col=list(support_series_2[support_series_2>support].index)

support_series=support_series.append(support_series_2)

col2=[]

for i in col:

i=i.split(ms)

for j in range(len(i)):

col2.append(i[:j]+i[j+1:]+i[j:j+1])

cofidence_series=pd.Series(index=[ms.join(i)for i in col2])

for i in col2:

cofidence_series[ms.join(i)]=support_series[ms.join(sorted(i))]/support_series[ms.join(i[:len(i)-1])]

for i in cofidence_series[cofidence_series > confidence].index:

result[i]=0.0

result[i]['confidence']=cofidence_series[i]

result[i]['support']=support_series[ms.join(sorted(i.split(ms)))]

result=result.T.sort_values(['confidence','support'],ascending=False)

return result

3.3 关联规则挖掘与分析

设定最小支持度阈值为0.000 97,最小置信度阈值为0.3,运用Apriori算法进行挖掘分析,其中满足最小支持度、置信度的强关联规则如表2所示.

例如,对照公共选修课课程映射字典信息表,从表2中第一条规则“C126-C52-C29 0.001 832 1.000 000”可以得出,选修了“现代舞蹈基础训练”“形体舞蹈教学”的学生,有100%机率选修“民族民间舞蹈教学”课程;从表2中第三条规则“C107-C88-C31 0.001 221 0.800 000”可以得出,选修“食品安全与日常饮食”“创新创业执行力”的学生,有80%机率选修“ISO9000质量管理标准”课程.

表2 同时满足支持度和置信度的强关联规则表

4 结语

提出一种基于Apriori算法的公共选修课间关联性分析方法.采用Apriori算法对公共选修课选课历史记录数据进行挖掘分析,将构建的模型应用到公共课管理中,可以节约教学资源,提升教务管理、服务质量,提高公共选修课数字化智能管理水平.应用结果表明,运用Apriori算法进行公共选修课管理对公共选修课选修效率、公共选修课管理水平的提高有明显的促进作用.公共选修课选课效率得到很大提升,误选、弃选、失选率均大大缩减,为高职院校公共选修课数字化智能管理迈出坚实一步.

猜你喜欢
项集置信度事务
基于数据置信度衰减的多传感器区间估计融合方法
北京市公共机构节能宣传周活动“云”彩纷呈北京市机关事务管理局
基于哈希表与十字链表存储的Apriori算法优化
一种基于定位置信度预测的二阶段目标检测方法
Sp-IEclat:一种大数据并行关联规则挖掘算法
含负项top-k高效用项集挖掘算法
针对基于B/S架构软件系统的性能测试研究
一种Web服务组合一致性验证方法研究
Hibernate框架持久化应用及原理探析
校核、验证与确认在红外辐射特性测量中的应用