在线学习资源智慧推送系统研究(上):模型研究
in 技术 with 3,019 views and 1 comment

在线学习资源智慧推送系统研究(上):模型研究

in 技术 with 1 comment

摘要:本文主要从五个层面探讨如何完整地构建出一个网络学习空间下的智慧学习系统,不仅从总体上进行了架构设计,而且对数据存储、学习者建模、知识建模都进行了科学地系统分析与代码实现。在最后的推送算法分析上,对以上各模块进行了汇总,从而衍生出了Dijkstra、UserCF、ItemCF、CAS等算法,对各类算法进行实现,并使用Top-N进行性能评估,再次优化,从而实现出一种高性能、高适用性的推送算法。以该算法为核心构建出的自适应智慧学习系统,这是一个复杂的教育生态系统,具有智能灵活、平衡和谐、可持续发展等特性,也只有这样一个算法才可以称得上是一个真正的学习共同体。

关键词:智慧学习系统,推荐算法,学习者建模,知识网络

ABSTRACT:This paper mainly discusses how to construct a kind of intelligent learning system under the network learning space from five aspects. It not only constructs the design from the whole, but also carries on the scientific system to the data storage, the learner modeling and the knowledge analysis and code implementation. In the final push algorithm analysis, the above modules are summarized, which derived Dijkstra, UserCF, ItemCF, CAS and other algorithms, the implementation of various algorithms, and the use of Top-N performance evaluation, re-optimization, which to achieve a high-performance, high applicability of the push algorithm. The adaptive intelligence learning system, which is based on the algorithm, is a complex educational ecosystem with intelligent and flexible, balanced and harmonious and sustainable development. Only one such algorithm can be regarded as a real learning community.

KEY WORDS:intelligent learning system, recommendation algorithm, learner modeling, knowledge network

1. 前言

1.1 背景分析

本论文定题为《在线学习资源智慧推送系统研究》,旨在设计出一款自适应的智慧学习系统,并着重于其推送算法的研究,使该智慧学习系统能够“智慧”地为学习者推送学习资源,打破以往学习者盲目地、零散地寻找教育信息的模式,让教育信息主动地去寻找对应的学习者,具有一定的主动性、个性化、智能化、高效性[1]。

本研究涉及教育领域、计算机领域、数学统计分析领域,具有一定的跨学科领域的特征。在教育上,本次研究的主体是学生,客体是教育信息资源(知识网络);在数学统计上,关键点是主客体建模,难点是研究出客体主动选择主体的推荐算法;在计算机软件上,基本点是构建系统,实现算法,并加以测试与应用。

本次研究的关键技术点在各自的领域都有所实现与应用,而作为核心的智慧推送,唯独在于教育领域没有过应用。原因在于“知识建模”的研究尚在起步阶段,国内外没有统一化标准[35];学习者建模又百家争鸣,没有定论。在单纯的推荐系统研究领域中,文献[10]中项亮博士就总结了一系列很好的推荐算法。在各大互联网平台中,例如国外的亚马孙、国内的美团,都设计了属于自己的一套性能高效、效果优良的推荐系统。在机器学习与统计学中,就有一系列的聚类分析与关联分析的算法,可是在智慧学习系统中没有学者提出过来使用。这其实是跨学科的缺点与教育领域的遗憾。本次研究即重点对“知识建模”进行探究与思考,对“学习者建模”的方法进行改进和完善,对已有的推荐算法进行整合与优化,从而在教育领域实现一套智慧推送系统。

本文主要从五个层面探讨如何完整地构建出一个网络学习空间下的智慧学习系统(图1),不仅从总体上进行了架构设计,而且对数据存储、学习者建模、知识建模都进行了科学地系统分析与代码实现。在最后的推送算法分析上,对以上各模块进行了汇总,从而衍生出了Dijkstra、UserCF、ItemCF、CAS等算法,对各类算法进行实现,并使用Top-N进行性能评估,再次优化,从而实现出一种高性能、高适用性的推送算法。以该算法为核心构建出的自适应智慧学习系统,这是一个复杂的教育生态系统,具有智能灵活、平衡和谐、可持续发展等特性[8],也只有这样一个算法才可以称得上是一个真正的学习共同体。

《智慧推送》研究思路

1.2 国内外现状

随着互联网技术的高速发展,一个又一个崭新的技术目不暇接地涌现出来,智慧学习就是其中之一。信息化极大地改变了人们的学习方式,以学生为中心、因材施教,当今学习活动日益变得个体化,学习依赖的环境更加数字化,学习场景泛在化,学习所依赖的环境、资源的属性越来越类似于消费类产品。[6]

对于智慧学习,在MBAlib中给出的定义是,智慧学习是学习者在智慧环境中按需获取学习资源,灵活自如开展学习活动,快速构建知识网络和人际网络的学习过程。智慧学习以发展学习者的学习智慧,提高学习者的创新能力为最终目标。作为在智慧教育理念指导下,在已有数字化学习、移动学习、泛在学习等基础上发展起来的一种新型学习方式。(MBAlib)

在2013的文献[16]中,韩国学者Hwang认为智慧学生是通过利用开放教育资源、 智能信息技术(Smart IT)和国际标准,使学习者的能力(基于行为改变)得以增强的一种较为灵活的学习[16]。在同年的文献[4]中,作者也曾深入的探讨过智慧学习的演进方向,“智慧学习”使人们将更多精力聚集于学习主题,默会地借助各种智能终端设备,无缝接入移动的泛在学习空间,灵活定制和透明访问最适宜、最便捷的资源服务,实现自我导向的主动学习[4]。

在文献[1]和文献[3]中,作者提出了推送服务的特点。在文献[2]中,作者对比了普通数字学习环境与智慧学习环境的差异,并提出了学习者建模技术这一概念。在文献[8]中,作者提出了智慧教育环境的系统模型设计,但是并没有设计出一个合理的系统。在文献[9]中,作者针对学习活动流,设计了一套较为完整的学习分析模型。综上可见,国内各学者对智慧学习的研究仍然仅仅停留在概念层面,即便有过模型研究,也只是针对推荐系统某一环节的建模研究,没有涉及到算法与可行性分析,是不完整的。

在去年(2016)年的文献[5]中,作者研究了智慧学习空间中学习行为分析及推荐系统的特点,该文中首先分析了网络学习空间中的行为特点,然后提出了学习推荐机制,对学习者进行了建模分析,之后在数据层也进行了比较完整的设计,并且最后提出了用户协同过滤算法与蚁群算法在推荐系统中的应用。该文设计了一套较为完整的智慧学习系统,但是对算法的研究没有到位,只是详细的分析了蚁群算法,缺少对性能的评估,没有对用户协同过滤算法进行研究、分析与实现,同时缺少对系统整体模型的把握,没有对知识网络进行建模。即便涉及到了数据层,但是缺少实现的技术。

以上智慧学习系统,对算法的缺失,对技术的缺失,可能只是在教育领域中才出现。在单纯的推荐系统研究领域中,文献[10]中项亮博士就总结了一系列很好的推荐算法。在各大互联网平台中,例如国外的亚马孙、国内的美团,都设计了属于自己的一套性能高效、效果优良的推荐系统。在机器学习与统计学中,就有一系列的聚类分析与关联分析的算法,可是在智慧学习系统中没有学者提出过来使用。这其实是跨学科的缺点与教育领域的遗憾。

2. 智慧学习系统顶层设计

2.1 智慧学习系统概述

在上文中提到了国内外各学者对于智慧学习的定义,综合之后亦可为智慧学习系统下定义:智慧学习系统是一种无缝式、由知识资源客体主动寻找学习行为主体的系统。

教育数据具有广泛性,学习过程具有自适性,具有这种广泛性与自适性,智慧学习系统应以学习分析技术为基础、以推送技术为核心,通过在线学习平台提供的学习环境,对教育数据进行挖掘和分析,为学习者提供反馈以改善学习行为。具体可以通过在线学习平台的大数据挖据,确定需要采集与分析的行为数据,之后进行学习者行为建模、学习者经历建模、学习者知识建模,将挖据和清理后的数据应用于这些模式之中,借由系统的预警性与预测性,分析学习者的学习趋势,研发干预模块,对学习者学习的内容与学习行为进行自适应调整、对学习路径进行优化,以加强学习者的学习效率、深化学习者的知识结构。同时,最为关键的,通过改进优化后的推荐算法,可以实现针对个体的“学习资源智慧推送”,以真正实现智慧学习系统的价值。

基于此,设计智慧学习系统架构如下图所示。整个系统基于MVC模式进行设计,视图层即在线学习平台,基于目前的网络空间,可包括移动端、网页端、PC端,其直接与用户进行交互。而该系统的用户也是多层次的,包括学生、家长、教师。模型层即系统数据库,用来存储系统产生的数据,主要存储的内容包括学习者基本信息、知识点信息、学习行为数据。控制层为整个系统的枢纽,提供数据分析与推荐算法,向视图层推送数据,向模型层转发数据。

智慧学习系统架构

2.2 智慧推送流程概述

智慧推送通过学习者的行为数据与知识点数据库中的数据进行匹配推荐,重点在于学习者特征建模,若数据信度不足以进行匹配建模,则需要扩大数据挖掘的范围与力度,直到数据足以支撑算法做到精准的推荐。推荐下一个知识点给学习者之后,学习者则根据推荐内容继续学习,数据挖掘系统则可进一步挖掘学习数据,给算法以更好的支撑。如此,这样一个闭合环路的推荐系统,可使推送的内容越来越精准,使用户的学习越来越高效,走在一个双赢共赢的良性循环的发展道路上。

st=>start: 起点
e=>end: 终点
op1=>operation: 使用系统进行学习
op2=>operation: 系统采集数据并分析
sub1=>subroutine: 扩大采集范围
cond=>condition: 是否满足算法
最低运算条件
op3=>operation: 推荐下一个知识点

st->op1->op2->cond
cond(yes)->op3->op1
cond(no)->sub1(right)->op2

2.3 数据层设计

2.3.1 数据层总体设计

智慧学习系统的基础是数据,没有数据就无从谈及算法,因此,该系统的数据层设计也尤为重要。

该系统将数据层更加细分为三个部分:数据挖掘层、数据采集层、数据存储层。数据挖掘层包括学习行为数据挖掘、学习者基本信息挖掘、知识网络数据挖掘;数据采集层的对象包括教务系统资料库、课程管理资料库、学习管理资料库;数据存储层则应用Hadoop提供HDFS数据存储层策略,对学习者特征信息、知识网络信息、学习行为信息进行大数据量的高效且安全的存储。

智慧学习系统数据层设计

2.3.2 数据挖掘层与采集层的方案设计

郁晓华在文献[8]中设计了一套学习活动流,其在文中提供的学习行为抽取矩阵值得该系统的参考与借鉴。针对智慧学习系统的特征,对原矩阵进行一定的修改。学习者在系统中的学习行为主要有创建、标注、分享、选择、使用、保留等,获取各行为所调用的相关函数,并从教务系统资料库、课程管理资料库、学习管理资料库中,挖掘、采集到系统中的隐性数据,并进行存储。由此,新的学习行为抽取矩阵见下图,其本质也就是对动态信息数据的挖掘。

2.3.3 数据存储层设计

智慧学习系统的数据存储层应具有三大模块,以供存储三类数据:学习者数据、知识点数据、学习行为数据。基于此,可设计以下三张表供存储这三类数据,其中各表字段为系统基本信息,可根据实际情况进行扩展。

学习者信息表设计如下:

知识点信息表设计如下:

学习记录表设计如下:

以上各表模型关系如下E-R图所示:
智慧推送数据库截图

然而对于数据存储而言,其容灾机制是非常重要、必不可少的。这里采用HDFS的数据存储策略,将存储的数据拆成n个数据块,每个数据块各3个副本,分布在2个机架内的3个节点上,其中在机架1上有2份,另外一个机架上有1份。这样,即便是某个节点出现故障,也可以从本机架上的另外的节点上找到备份。例如,若下图中的DataNode1节点故障,那么数据块A可从本机架上的DataNode2节点获取备份,数据块C和D可从本机架上的DataNode3节点上获取备份。若故障严重,多个节点出现问题,甚至是整个机架发生故障,亦可从另一台机架上获取数据备份。

HDFS数据存储策略

另外,各DataNode会不断地定时向NameNode发送心跳检测,报告自己的状态,包括网络状态、是否关机等信息。通过该心跳协议,NameNode可知道整个集群的运行状态。同时,二级NameNode会定期同步元数据映像文件和修改日志,当NameNode发送故障时,Secondary NameNode代替NameNode继续工作,以保证整个集群的正常运作,并且保障了整个系统的高可用性。

2.3.4 数据流处理方案

由上可见,智慧学习系统产生的数据量庞大,而推送系统又要具有高效性与实时性,因此,该系统对于数据流的处理能力也就提出了极高的要求。若不满足实现性、高效性,教育信息资源就无法做到精准且实时地推送给学习者,就会导致学习者学习行为效益出现滞后现象。智慧学习系统体现了教育信息化发展的新境界,它表达了一种技术以智慧性方式促进教育变革与创新的诉求,而这一目标的实现,必然离不开高效的学习分析技术[9]。其实,也就是对学习数据流的处理技术。

这里可考虑使用大数据处理的一种解决方案——MapReduce,是分治法的在数据处理中的一种应用。所谓分治,分而治之,即将一个大任务分成多个子任务,这个过程叫做Map;并行执行之后,合并结果,这个过程叫做Reduce。[31]

MapReduce

在Map阶段,首先是读数据,数据来源可能是文本文件、表格、数据库等,即智慧学习系统中时刻产生的行为数据。这些数据通常是成千上万的文件,叫做shards。这些shards被当做一个逻辑输入源,然后Map阶段调用用户实现的函数,叫做Mapper,独立且并行的处理每个shard。对于每个shard,Mapper返回多个键值对,这是Map阶段的输出。

在Map与Reduce之间的,叫做Shuffle阶段,即把键值对进行归类,也就是把所有相同的键的键值对归为一类。这个步骤的输出是不同的键和该键的对应的值的数据流。

在Reduce阶段,输入的是Shuffle的输出,然后Reduce阶段调用用户实现的函数,叫做Reducer,对每个不同的键和该键的对应的值的数据流进行独立、并行的处理。每个Reducer遍历键所对应的值,然后对值进行“置换”,这些置换通常指的是值的聚合,或是不处理,最后把键值对写入数据库中存储起来。

因此通过MapReduce,完成对大数据的高效处理,完全可应用于对数据流处理要求极高的智慧学习系统中。

3. 学习者特征分析与建模研究

3.1 学习者特征分析与建模概述

针对特定的推送问题,只是拥有数据还不够,想要从纷繁复杂的数据关系中挖掘出规律或模式,还得运用恰当的分析方法。比如聚类分析,恰当地选择运用聚类算法,可以按维度将数据适当的分群,根据各类的特征建立更有针对性的学习者模型,并实现更加精准的教育资源信息推送。

st=>start: 起点
e=>end: 终点
op1=>operation: 学习者聚类分析
op2=>operation: 学习者特征构建与选择
op3=>operation: 学习者建模与优化

st->op1->op2->op3->e

特征对于精准推荐而言是相当重要的,在学习者建模之前的大部分工作都是在寻找特征,没有合适的特征的学习者模型,就几乎等于瞎猜,对智慧学习系统而言没有任何意义。特征通常是指输入数据中对因变量的影响比较明显的有趣变量或属性。特征分析方法主要有特征提取、特征构建与特征选择三种。特征提取,是指通过函数映射从原始特征中提取新特征的过程;而特征构建是从原始特征中推断或构建额外特征的过程;特征选择是指从原始的n个特征中选择m(m<n)个自特征的过程,从而按照某个标准实现了最优简化和降维(如下图所示)。对于智慧学习系统而言,原始数据本就是大量的、残缺的、隐性的,故不宜用特征提取,只适合特征构建与特征选择。

特征提取、特征构建、特征选择

特征的构建与选取是建模之前的必要工作,甚至影响到了建模的成败,本节将就特征变换、特征组合方面简单谈谈学习者建模的基本步骤与方法,以期在不久的未来,供智慧学习系统的实现提供参考。

3.2 学习者聚类分析研究

聚类分析,简单来说,就是对学习者数据分群,它以学习者的相似性为基础,相同类中的样本比不同类中的样本更具相似性,以同来划分用户群,构建出不同层次、不同领域学习者群体。也只有将学习者进行聚类之后,才可能分别加以研究。因为学习者属性维度较多,该系统的聚类算法宜选用系统聚类算法,而非国内一些研究文献中提到的K-Means算法。

系统聚类算法首先将每个样本单独看成一类,在规定类间距离的条件下,选择距离最小的一堆合并成一个新类,并计算新类与其他类之间的距离,再将距离最近的两类合并,这样每次会减少一类,直到所有的样本合为一类为止。算法流程如下:

op1=>operation: 每样本单独成类
op2=>operation: 计算类间距离矩阵
op3=>operation: 合并距离最近的两类为新类
cond=>condition: 类的个数是否为1
op4=>operation: 画出聚类图
op5=>operation: 确定聚类数目和类别

op1->op2->op3->cond
cond(yes)->op4->op5
cond(no)->op2

如下表所示,此处用6位学习者中的5个维度的学习行为数据作为样本,以欧式距离作为衡量样本间距离的标准,以最短距离法作为衡量类间距离的标准,以说明算法的流程与实践应用。

步骤1,将每个样本单独看成一类。

$G_1^{(0)}=\{x_1\},G_2^{(0)}=\{x_2\},G_3^{(0)}=\{x_3\}$ $G_4^{(0)}=\{x_4\},G_5^{(0)}=\{x_5\},G_6^{(0)}=\{x_6\}$

步骤2,计算各类之间的距离,得距离矩阵$D^{(0)}$。

$$ D^{(0)}= \begin{bmatrix} 0 & 9.540 & 8.660 & 4.900 & 4.690 & 6.780 \\ 9.540 & 0 & 10.30 & 11.79 & 10.82 & 7.140 \\ 8.660 & 10.30 & 0 & 11.09 & 9.330 & 10.15 \\ 4.900 & 11.79 & 11.09 & 0 & 6.480 & 5.830 \\ 4.690 & 10.82 & 9.330 & 6.480 & 0 & 8.120 \\ 6.780 & 7.140 & 10.15 & 5.830 & 8.120 & 0 \\ \end{bmatrix} $$

步骤3,矩阵$D^{(0)}$中的最小元素是4.690,它是$G_1^{(0)}$与$G_5^{(0)}$之间的距离,将它们合并,得到新类。 $G_1^{(1)}=\{x_1,x_5\},G_2^{(1)}=\{x_2\},G_3^{(1)}=\{x_3\}$ $G_4^{(1)}=\{x_4\},G_5^{(1)}=\{x_6\}$

步骤4,计算各类之间的距离,得距离矩阵$D^{(1)}$,因$G_1^{(1)}$由$G_1^{(0)}$与$G_5^{(0)}$合并而成,按最短距离方法,分别计算$G_1^{(0)}$与$G_2^{(1)}$~$G_5^{(1)}$之间以及$G_5^{(0)}$与$G_2^{(1)}$~$G_5^{(1)}$之间的两两距离,并选其最小者作为两类间的距离。

$$ D^{(1)}= \begin{bmatrix} 0 & 9.540 & 8.660 & 4.900 & 6.780 \\ 9.540 & 0 & 10.30 & 11.79 & 7.140 \\ 8.660 & 10.30 & 0 & 11.09 & 10.15 \\ 4.900 & 11.79 & 11.09 & 0 & 5.830 \\ 6.780 & 7.140 & 10.15 & 5.830 & 0\\ \end{bmatrix} $$

步骤5,矩阵$D^{(1)}$中的最小元素是4.900,它是$G_1^{(1)}$与$G_4^{(1)}$之间的距离,将它们合并,得到新类。

$G_1^{(2)}=\{x_1,x_4,x_5\},G_2^{(2)}=\{x_2\}$ $G_3^{(2)}=\{x_3\},G_4^{(2)}=\{x_4\}$

步骤6,计算各类之间的距离,得距离矩阵$D^{(2)}$。

$$ D^{(2)}= \begin{bmatrix} 0 & 9.540 & 8.660 & 5.830 \\ 9.540 & 0 & 10.30 & 7.140 \\ 8.660 & 10.30 & 0 & 10.15 \\ 5.830 & 7.140 & 10.15 & 0 \\ \end{bmatrix} $$

步骤7,矩阵$D^{(2)}$中的最小元素是5.830,它是$G_1^{(1)}$与$G_4^{(1)}$之间的距离,将它们合并,得到新类。

$G_1^{(3)}=\{x_1,x_4,x_5,x_6\},G_2^{(3)}=\{x_2\},G_3^{(3)}=\{x_3\}$

步骤8,计算各类之间的距离,得距离矩阵$D^{(3)}$。

$$ D^{(3)}= \begin{bmatrix} 0 & 7.140 & 8.660 \\ 7.140 & 0 & 10.30 \\ 8.660 & 10.30 & 0 \\ \end{bmatrix} $$

步骤9,矩阵$D^{(3)}$中的最小元素是7.140,它是$G_1^{(3)}$与$G_2^{(3)}$之间的距离,将它们合并,得到新类。

$G_1^{(4)}=\{x_1,x_2,x_4,x_5,x_6\},G_2^{(4)}=\{x_3\}$

步骤10,此时有两个类,最终可直接归为一类。

至此,便根据学习者的学习行为将学习者聚类完毕。

3.3 学习者特征构建技术与特征选择方法研究

3.3.1 特征构建

特征构建主要有特征变换与特征组合两种方法。特征变换指对原始的某个特征通过一定规则或映射得到新特征的方法。对于类别过大的分类变量,通常使用概念分层的方法变换得到类别较少的变量。比如有6位学习者的年级属性分别是初一、初二、高一、高二、大三、大四,那么通过概念分层之后,可将6位学习者分成3组,分别为初中、高中、大学。这种特征变换主要由人工的方式去完成,属于比较基础的特征构建方法。

特征组合指将两个或多个原始特征通过一定规则或映射得到新特征的方法。由于学习者特征多为非线性关系,所以数学分析的方法不好实用,宜实用基于特定领域知识的方法,以特定领域知识为基础,在一定的业务经验指导下实现。这种特征组合的方法也是主要由人工完成。如下图所示,便是一种学习者特征组合的方式之一,对比学习者的资料完善度、社区活跃度、作业完成率、考核得分率等信息,从而得出学习者积极性这一个区分度更加明确的特征。

特征组合

因此,在智慧学习系统构建学习者模型的这个阶段中,特征构建的方法宜用人工的方式去完成,须教育分析领域的专家对系统预试行阶段所采集的学习者数据进行研究与分析,结合其自身的领域知识,对学习者特征进行变换和组合,以构建区分度更强的特征。
·

3.3.2 特征选择

在建立模型之前,我们已经按照特征构建的方法得到了数据集,然而这样的数据集其实还存在着大量的特征,特征之间可能存在相关性,还可能存在冗余的特征。为了提升建模效率,获取区分度更好的特征,需要对数据集进行降维处理,以得到最优子集,这个过程就是特征选择。

Gini 系数是衡量不平等性的指标,在分类问题中,分类数节点 A 的 Gini 系数表示样本在子集中被错分的可能性大小,它通常记作这个样本被选中的概率$p_i$乘以它被错分的概率$(1-p_i)$。例如响应变量 y 的取值有 k 个分类,令$p_i$是样本属于 i 类别的概率,则 Gini 系数的计算公式如下:

$Gini(A) = \sum_{i=1}^k p_i(1-p_i) = 1 - \sum_{i=1}^k p_i^2$

现举一例,以说明计算数据集中各特征 Gini 系数,并对特征进行排序的过程。如下表所示,系统采集到10个学生学习某门课程的数据,包括其是否完成过课程作业(X1)、学习该课程的频率(X2)、以及最后是否完成课程考核(Y)等情况,现通过对 Gini 系统的计算,判定特征 X1 与特征 X2 何者对结果 Y 更加重要。

步骤1,计算 X1 对 Y 的 Gini 系数。统计 X1 与 Y 的列联表如下表所示。

$Gini(X1 = 否) = 1 - ({2\over2+3})^2 - ({3\over2+3})^2 = 0.48$

$Gini(X1 = 是) = 1 - ({5\over5+0})^2 - ({5\over5+0})^2 = 0$

$Gini(X1) = {2+3\over2+3+5+0} · Gini(X1 = 否) + {5+0\over2+3+5+0} · Gini(X1 = 是) = 0.24$

步骤2,计算 X2 对 Y 的 Gini 系数。统计 X2 与 Y 的列联表如下表所示。

$Gini(X2 = 低) = 1 - ({2\over2+2})^2 - ({2\over2+2})^2 = 0.5$

$Gini(X2 = 中) = 1 - ({4\over4+0})^2 - ({0\over4+0})^2 = 0$

$Gini(X2 = 高) = 1 - ({1\over1+1})^2 - ({1\over1+1})^2 = 0.5$

$Gini(X2) = {4\over10} · Gini(X2 = 低) + {4\over10} · Gini(X2 = 中) + {2\over10} · Gini(X2 = 高) = 0.3$

步骤3,通过计算 X1 、 X2 的 Gini 系数,且有大小关系 Gini(X2) > Gini(X1),所以重要性顺序为: X1 > X2。

也就是在上例中,对于该生该门是否考核成功,是否完成作业会比学习课程的频率更加重要。同理,可通过对系统挖掘到各特征进行 Gini 系数的计算,过滤掉一些冗余特征,筛选出更好的特征,以供建模。

3.4 学习者用户画像及其建模研究

通过以上的特征构建与特征选择,即可勾画出学习者的用户画像。针对智慧学习系统而言,构建用户画像技术难点主要有以下6点:用户画像算法模型不断优化;引入 Storm 等实时技术;主题推荐标签、用户命名实体等新增标签补充进画像;HBase 的离线和在线分离、HBase 的 KV 读和 Solr 的批量读分离、region 热点监控和切分;数据流不断优化;数据存储改进。[26]

难题的根本起因是数据量的庞大、运算量的复杂、时效性的高要求,解决以上难题比较简单的一种方法就是实现 HBase 的离线和在线分离,采用离线和在线的两种方式,把可用性提上去。以下为一种解决方案的模型:

HBase 离线和在线分离

整个系统由数据驱动,通过研究数据,不断产生新的用户画像,优化学习者模型。而优化学习者模型,最为关键的是对模型的参加进行优化,以得到更优的模型。
·

3.5 模型参数优化方案研究

对于学习者模型的参数优化,可选用的优化方法主要包括交叉验证、遗传算法、粒子群优化、模拟退火等。网络搜索计算成本太高,不宜采用。本节将就交叉验证、遗传算法、粒子群优化这三种算法,在智慧学习系统中做学习者模型优化的方式做简单探究。

3.5.1 使用交叉验证优化学习者模型

交叉验证的思想是将学习者数据集分割成 N 份,依次使用其中1份作为测试集,其他 N-1 份整合到一起作为训练集,将训练好的模型用于测试集上,以得到学习者模型好坏的判断或估计值,总计可以得到 N 个这样的值。交叉验证通常用于估计模型的误差,这里将 N 个对应的误差求平均作为对学习者模型的估计。同时,也可根据这 N 个值,选出拟合效果最好的学习者模型,对应学习者模型的参数也被认为是最优或接近最优的。

3.5.2 使用遗传算法优化学习者模型

遗传算法是模拟自然界遗传选择与淘汰的生物进化计算模型,根据自然选择选择学说的两个核心关键点——遗传和变异,来模拟生物进化机制,最终发展成为一种随机全局搜索和优化的算法。它的研究对象是种群,就是个体的集合,在该系统中即为某类学习者的集合,对应于求解的问题,这里的一个个体代表一个解,种群代表这些解的集合。在生物进化的过程开始阶段,所有的生物个体也许都不是最优的,同理,在模型求解的过程中,所有的解或许不是最优的,经过将这些解进行编码、选择、交叉、编译之后,逐代进化,从子代中可以找到求解问题的全局最优解。具体流程如下图所示。

op1=>operation: 产生初始种群
op2=>operation: 计算适应度
cond=>condition: 是否满足
优化准则
op3=>operation: 选择
op4=>operation: 交叉
op5=>operation: 变异
op6=>operation: 最佳个体

op1->op2->cond
cond(yes)->op6
cond(no)->op3(right)->op4(right)->op5(right)->op2

通过遗传算法,可对学习者模型的一些参数进行优化,从而完善模型,产生最适应的学习者模型。

3.5.3 使用粒子群优化算法优化学习者模型

粒子群优化算法是通过模拟鸟群觅食过程中的迁徙和群聚行为而提出的一种基于群体智能的全局随机搜索算法。与遗传算法一样,它也是基于“种群”与“进化” 的概念,通过个体间的协作也竞争,从而实现复制空间最优解的搜索。但粒子群优化无需对个体进行选择、交叉、变异等进化操作,而是将种群中的个体看成是 D 维搜索空间中没有质量没有体积的粒子,每个粒子以一定的速度在解空间运动,并向例子本身历史最佳位置和种群历史最佳位置靠拢,从而实现对候选解的优化。算法流程如下图所示。

op1=>operation: 产生初始粒子群
op2=>operation: 计算每个粒子适应度
op3=>operation: 更新pbest、gbest
更新位置与速度
cond=>condition: 是否达到最大迭代次数,
最佳适应度增量小于阈值
op4=>operation: 算法终止

op1->op2->op3->cond
cond(yes)->op4
cond(no)->op2

综上,可在智慧学习系统中,综合选择以上三种算法,对学习者模型的参数进行优化。

4. 知识网络建模研究

4.1 知识网络建模概述

学习者是智慧学习系统的对象,而知识网络则是学习系统的主要内容,所以对知识图谱的构建至关重要。不同于学习者模型,知识网络模型的静态数据来源居多,因而知识图谱的构建关键在于模型的合理选择。知识图谱属于复杂系统与复杂网络,其结构亦属于随机图论的一部分,同领域知识之间的规则性与跨领域知识之间的随机性在结构之中甚是突出。本节主要选取规则性和随机性并重的一些复杂网络模型—— WS 小世界网络模型、BA 无标度网模型与自组织耦合演化模型,探讨其与知识网络的契合性。

4.2 知识网络模型探究

4.2.1 WS 小世界网模型

通过简单的分析可以知道,知识网络结构兼具规则性与随机性。知识点在同领域内具有很强的规则性,前后衔接连贯,承前启后如一;而知识点在不同领域之间则具有很强的随机性,可能生物学的知识和天文学毫无关联,但和心理学、教育学、甚至是数学、统计学又有某些悬而未决的联系。小世界网络模型便是一种比较简单的、兼具规则性与随机性的一种复杂网络模型,下图便是 Watts & Strogatz 在《自然》杂志论文中显示的“小世界”随机图式[33]。

小世界网模型

可见当 p = 0 时,没有随机跳跃边,是一个规则网模型;当 p = 1 时,所有边随机重连,是一个 ER 随机网模型。我们知道,同领域內知识规则性极大,且到达某一知识点不止唯一知识路径可走,会存在某些跳跃式的进程,单看这一点,其实小世界网模型还是比较契合同领域知识网络模型。

4.2.2 BA 无标度网模型

小世界网模型的“复杂”是一种“居于规则性与随机性之间”的简单的复杂,但仔细想想,知识网络不应该如此简单,也不应该如此静态。既然规则性与随机性都是简单的,那么复杂就不应该“简单地”位于它们之间。对于智慧学习系统所拥有的知识网络模型,我们不单单希望它有固定的结构,更希望它能够随着学习者知识量的增长而自我进化。

在初中刚学习菱形的面积计算时,我们会按照自己已有的知识结构通过面积等于底乘高的一半,即$S = {1\over2} ah$的公式去计算,而后我们发现其实对角线乘积的一半其实也等于面积,再纳入这一个特殊的情况下的公式之后,我们发现它其实可以推导至一般情况下使用,即对角线互相垂直的四边形的面积等于对角线乘积的一半。这样,我们就将四边形的面积公式纳入了自己的知识结构之中,在学习与应用之中,进化了自己的知识网络。

四边形面积计算公式

无标度网模型包含增长和优选这两个重要的要素。增长强调该网络是一个开放的系统,会有新的基本单元不断加入,节点总数不断增加;优选则强调节点链接新边的概率应该依赖其拥有的度[34]。在这两个要素上提出的知识网络模型表述如下:

首先,在 t = 0 时,具有较少的 $m_0$ 个节点,以后每个时间周期读取学习行为数据库,根据数据库的学习记录增加新的知识节点,接到 $m(m\le m_0)$个旧节点上。

其次,新节点连接到旧节点 i 的概率正比于其的度,这个度又正比于其置信度,所以连接概率为:$\prod(k_i) = k_i / \sum_{j=1}^{N-1}k_j$,其中 $k_i$ 表示旧知识节点 i 的置信度,N 表示知识网络节点数。

最后,根据以上步骤如此演化,直到达到一个稳定演化的状态,形成一套稳定的知识网络模型。

4.2.3 自组织耦合演化模型

然而知识网络模型宏大,更新模型需要周期性的扫描整个网络,这对智慧系统的计算量而言是一个极大的负担,因此需要建立基于局部相互作用机制的模型来了解能否从自组织动力学,来推导出整个知识网络的结构和特性。而自组织耦合演化模型,就是这样一个模型。

自组织耦合演化模型也称自适应网络模型,其根据生态分离现象与竞争排斥原理构建而成,能够根据局部信息引起连边关系的变化,从而导致宏观性质涌现网络模型,具有极强的可塑性。若能使用自组织耦合演化模型去拟合知识网络模型,则能优化智慧学习系统的性能,提高服务器运算效率。但就目前而言,对该模型国内外研究均处于一个初步的阶段,但愿在不久的未来,该理论能够更加成熟,以便应用于智慧学习系统的实践中。

4.3 知识网络关联分析研究

关联分析,可以从学习行为的历史数据中挖掘出知识点之间的内在规律,从而对各零散的知识点进行关联,使智慧学习系统有指导性地对学习者进行学习路径的推荐。

针对系统内知识点间的关系分析,宜使用比较成熟的 Apriori 算法。Apriori 算法包括两个主要步骤,首先迭代搜索出数据集中所有频繁项集,即支持度不小于设定阈值的项集;其次,利用频繁项集构造出满足最小置信度的关联规则。下图为该算法的具体流程图。

Apriori算法流程图

那么究竟如何使用 Apriori 算法去分析知识点间的关系,以形成知识网络呢?这里举一例以说明该算法在系统中的实践应用。例如这里有4位学习者的学习历史历史记录,1号学习者学过知识点A、C、D,2号学习者学过知识点B、C、E,3号学习者学习过知识点A、B、C、E,4号学习者学习过知识点B、E,列表如下。

学习者编号 知识点
1 A,C,D
2 B,C,E
3 A,B,C,E
4 B,E

首先,迭代搜索出以上四条数据的频繁项集。具体过程如下:

第1步,扫描数据集中的所有记录,生成候选1项集$C_1$,输出结果如下:

候选1项集 支持度计数
{A} 2
{B} 3
{C} 3
{D} 1
{E} 3

第2步,由上知最小支持度计数为2,所以剪去{D},生成频繁1项集$L_1$,输出结果如下:

频繁1项集 支持度计数
{A} 2
{B} 3
{C} 3
{E} 3

第3步,$L_1$自连接生成候选2项集$C_2$,因为此处$L_1$各集合只有一个项,两两结合即可,输出结果如下:

候选2项集 支持度计数
{A,B} 1
{A,C} 2
{A,E} 1
{B,C} 2
{B,E} 3
{C,E} 2

第4步,{A,B} 与 {A,E} 不满足最小支持度的要求,剪掉后生成频繁2项集$L_2$,输出结果如下:

频繁2项集 支持度计数
{A,C} 2
{B,C} 2
{B,E} 3
{C,E} 2

第5步,$L_2$自连接生成候选3项集$C_3$,此时$L_2$各集合中只有一个项不同其余项都相同的进行两两组合,输出结果如下:

候选3项集 支持度计数
{A,B,C} 1
{A,C,E} 1
{B,C,E} 2

第6步,{A,B,C} 和 {A,C,E} 不满足最小支持度的眼球,剪掉之后,发现 {A,B,C} 的 2 项子集 {A,B} 与 {A,C,E} 的 2 项子集 {A,E} 都不在 $L_2$ 中,因此也是不频繁的,应该去掉,生成频繁 3 项集 $L_3$,输出结果如下:

频繁3项集 支持度计数
{B,C,E} 2

因此,得到最终结果频繁项集$L_3 = \{B,C,E\}$ ,且它的任何 2 项子集都是频繁的。得到频繁项集之后,则需要构造出满足给定最小置信度的关联规则。如果满足$c(S \Rightarrow C_LS) \ge min\_conf$,那么输出规则$S \Rightarrow C_LS$,其中$C_LS$表示 S 在 L 中的补集。对于 $L_3$,它的非空子集有 {B}、{C}、{E}、{B,C}、{B,E}、{C,E}。置信度计算公式如下:

$c(A \Rightarrow B) = {{\sigma(A \Rightarrow B)} \over || T \in D | A \subseteq T ||} = {{|| T \in D | A \cup B \subseteq T ||} \over ||T \in D | A \subseteq T||}$

其中 T 表示事务,D 表示所有事务,$\sigma(A \Rightarrow B)$ 代表支持度计数。

根据公式计算出各自的关联规则及置信度如下表:

关联规则 置信度
$B \Rightarrow CE$ 0.67
$C \Rightarrow BE$ 0.67
$E \Rightarrow BC$ 0.67
$BC \Rightarrow E$ 1.00
$BE \Rightarrow C$ 0.67
$CE \Rightarrow B$ 1.00

若这里假设 min_conf = 0.9,则$BC \Rightarrow E$ 与 $CE \Rightarrow B$为强关联规则,也就是学习了知识点 B、C 之后可以进行 E 的学习,或学习了知识点 C、E 之后可以进行 B 的学习。至此,就得出了知识点间的关联关系,这对构建知识网络模型不失为一种科学有效的数学分析方法。

由于篇幅问题,点击跳转阅读余文:在线学习资源智慧推送系统研究(下):算法研究

Responses
  1. 沃德天,好6啊!膜一个~

    Reply