朱丽丽
(金陵科技学院 软件工程学院,南京 211169)
随着计算机科学、互联网及信息技术的迅速发展,各类信息数据层出不穷,导致信息呈现过载状态。信息过载下的目标信息获取问题可以通过搜索引擎及推荐系统两种方式解决[1-2]。目前比较常用的方式为搜索引擎,用户在搜索引擎内输入关键字、词等基础需求信息,搜索引擎从海量数据中挖掘关联信息并展示给用户,从而满足用户的搜索需求[3]。通过搜索引擎虽然能够在过载信息状态下获取必要信息,但该方法需要用户明确搜索方向,按照目标搜索并提供相关信息,若用户暂无明确搜索方向,则面临海量信息依旧束手无策,此时推荐系统应运而生。推荐系统是通过用户以往在互联网内的交互信息,感知用户个人兴趣爱好,依据用户兴趣爱好为用户推荐相关信息[4-5]。推荐系统比搜索引擎更懂得如何为用户推荐专属信息,在用户无搜索需求时寻找用户隐式需求,为用户推荐其感兴趣的信息数据,有效提升用户在互联网中的使用体验[6]。
推荐系统虽优越于搜索引擎,但仍有改进空间,目前已有相关人员针对推荐系统进行研究与改进。姜国义等[7]提出在E-Learning 的基础上研究移动学习推荐系统,该系统虽有效解决移动终端对大量学习信息数据输出条件受限制问题,但由于方法复杂度较高,不适用于实际应用;檀彦超等[8]提出在度量学习的基础上设计推荐系统,该系统依据用户在互联网的交互信息,通过多个空间向用户推荐隐式需求信息,但由于系统空间较多,系统在向用户推荐信息时易产生同一信息多次推荐现象及信息乱序问题;刘雨萍等[9]提出了同时考虑样本间类内关系的列表排序跨模态检索方法;刘音等[10]提出基于改进遗传算法的回归测试用例优先级排序方法。引入禁忌搜索方法改进遗传算法,并在回归测试中用例优先级排序;岳峰等[11]提出基于异质网络分析的列表级排序学习推荐方法。在异质网络中明确科研社交网络中实体关系的基础上,将获取的信息融入列表级排序学习框架中,实现学术论文推荐。
随机森林算法是机器学习算法之一,该算法以决策树为基础,通过模拟与迭代等方式将问题做分类或回归处理。排序学习方法是在信息检索中,结合不同信息排序特征对搜索或推荐结果进行排序的监督性学习,常用于解决分类或回归处理时信息的排序问题。排序学习方法分为点级排序学习、对级排序学习以及列表级排序学习3种方式。本文结合随机森林算法与列表级排序学习,设计随机森林算法下列表级排序学习推荐系统,使用户在操作推荐系统时感受到方便且快捷的用户体验。在设计推荐系统时,需提升系统运行效率与扩展性,在满足用户隐式需求的前提下为用户推荐专属信息数据。
推荐系统即人机交互系统,能够依据以往用户与计算机的交互信息,在用户未明确搜索方向的情况下,为用户推荐专属感兴趣信息。推荐系统的总体结构主要由数据层、处理层、控制层与用户层四部分组成,系统总体结构如图1所示。
图1 推荐系统总体结构
采用分层结构将推荐系统合理区分为数据层、处理层、控制层及用户层(见图1)。系统向用户推荐专属感兴趣信息时,各层信息及数据均为双向传输,推荐系统各层结构功能分别为:
1)数据层。数据层内的数据库是处理层中数据采集模块通过记录以往用户与系统交互信息及数据构建而成,是推荐系统推荐内容的主要依据。
2)处理层。处理层中包含数据采集模块与信息推荐模块,数据采集模块主要采集用户登录账号后,在搜索窗口中搜索的全部信息内容,实时记录用户与系统的互动信息并传输至数据库内备用;信息推荐模块是利用数据库内的信息,通过列表级排序学习及随机森林算法计算获取推荐结果并传输给控制层。
3)控制层。控制层是由控制器控制用户层与处理层中的各项流程,传输用户层中的用户操作至处理层中处理,并将处理层中产生的推荐结果传输至用户层推荐界面展示给用户。
4)用户层。用户层主要为用户及系统提供交互界面,用户通过注册登录界面注册并登录账号进入系统主界面,若用户有搜索方向则进入搜索界面搜索信息;若用户暂无搜索方向则选择推荐界面,由系统为用户推荐专属感兴趣信息,用户在推荐界面选中感兴趣信息后,点击该信息即可查询更详尽的信息内容。
推荐系统的整个推荐流程可以概括为:用户在用户层各界面进行操作并将操作信息传输至控制层;控制层将用户操作信息传输至处理层;由处理层采集用户感兴趣信息及数据并传输至数据层,数据层将数据统一储存至数据库中;系统依据数据库中的人机交互信息,由处理层中的信息推荐模块获取推荐结果并传输至控制层,控制层将推荐信息传输至用户层推荐界面完成推荐系统对用户的专属信息推荐。
1.2.1 推荐系统硬件结构
考虑到目前信息数据的多样化,除了传统文字信息以外还有语音信息、动画视频信息等,因此在设计推荐系统硬件时,为系统加入Flash 及音频模块。依据推荐系统总体结构设计系统硬件,推荐系统硬件结构如图2所示。
图2 推荐系统硬件结构
图2 推荐系统硬件结构中主控制器位于推荐系统总体结构控制层,用于控制用户层与处理器间信息传输流程;CPU为推荐系统中央处理器,负责处理整个系统数据运算及指令等程序的运行;内核处理器主要用于提升推荐系统的扩展性能;电源负责提供推荐系统的工作电压;SCM 存储类内存卡用于存储人机交互信息数据;Flash 模块及音频模块用于展示用户视频动画等信息数据;OLED液晶屏及按键模块位于用户层,用于为用户展示系统推荐信息及人机互动操作。
1.2.2 内核处理器
为提升推荐系统运行效率及扩展性能,系统选取英特尔公司MAX 10 系列,型号为10M04DAF256I7G 的内核处理器作为推荐系统内核处理器,该处理器具有4 000 个单元数、I∕O 数178 个、总RAM 位数为193 536 位、内核电压仅需1.15 V,成本及功耗较低,足以满足推荐系统运行效率及扩展性能的提升需求。内核处理器的主要处理内容为:
1)响应按键模块并依据按键模块的用户按键信息,接收用户输入指令,完成人机交互信息获取功能。
2)通过访问SCM 存储类内存中的信息数据,作为推荐系统的推荐依据。
3)驱动OLED 液晶屏为用户显示用户层各界面信息。
4)传输处理器处理内容至主控制器,由主控制器统一控制推荐系统中各层信息传输。
1.2.3 推荐系统电源模块
电源模块主要为推荐系统中各模块提供电压,系统电源模块的电源芯片选取自TI品牌,型号为LM2940CT-5.0,该电源芯片类型为集成电路的线性低压差稳压器,在输出电压时噪声较小,且该芯片具有超温、短路及反极性保护功能,适用于温度为0~125 ℃的工作环境内工作。以系统主控制器电源模块为例,LM2940CT-5.0 电源芯片供电电路图如图3所示。LM2940CT-5.0芯片的动态响应性能较高,且具有较好的电源抑制比,若系统负载频率发生改变,该芯片依然能为系统输出稳定电压。
图3 电源芯片供电电路图
1.3.1 列表级排序学习推荐列表的构建指标
推荐系统处理层信息推荐模块的排序学习单元,利用列表级排序学习算法构建列表级排序学习推荐列表。考虑到推荐系统需满足用户隐式需求,以用户u感兴趣项目的概率分布值Pu为依据,构建包含用户全部感兴趣的列表级排序学习列表,选取最满足用户隐式需求的项目作为学习推荐系统的推荐首选。构建列表级排序学习列表时,通常采用推荐系统评价指标NDCG,由于评价指标NDCG存在不可求导特性,需利用函数对NDCG进行近似连续可导计算,从而完成列表级排序学习列表的构建。设置NDCG@k为评价排序学习列表前k个用户感兴趣项目的推荐评价指标,其表达式为:
式(1)中,Nk为函数的最大值,βj为用户感兴趣项目与其在排序学习列表中位置j的关联程度,g( [βj]) 为增益函数,其表达式为,d(j)为贴现函数,其表达式为,b为贴现系数。将增益函数与贴现函数引入学习推荐评价指标表达式中,获取学习推荐的评价指标表达式为:
式(2)中,s( )x为某用户感兴趣项目x在排序学习列表中的当前位置。
通过式(2)可知,求导NDCG 评价指标需以用户感兴趣项目位置为基础,利用随机森林算法学习列表级排序学习推荐列表时,用户感兴趣项目位置会产生改变[12-13]。为此,本文根据用户的历史搜索索引结构,将公式(2)得到的学习推荐的评价指标进行改进,改进后的评价指标如下:
式(3)中,β(x)为用户感兴趣项目x的待推荐程度。β(x)值为最大值时,代表推荐系统需要将该项目推荐至用户;当β(x)=0 时,代表推荐系统无需向用户推荐该项目。将某用户感兴趣项目x在排序学习列表中的当前位置函数s(x)近似为连续可导函数,结合概率分布值Pu,重新定义当前位置函数s(x)的表达式为:
采用逻辑函数近似求导公式(4)中的指数函数1{Pux,y<0} ,近似后的函数表达式为:
式(5)中,α为度量常数,α>0 。结合公式(4)与(5),将位置函数s( )x转换为连续且可导的近似表达式,即:
将式(6)带入公式(3)中,获取近似后的学习推荐评价指标表达式为:
将式(7)的学习推荐评价指标,作为列表级排序学习推荐列表的构建依据。
1.3.2 随机森林算法下列表级排序学习推荐
随机森林算法具有极高的学习能力,将随机森林算法作为构建列表级排序学习推荐列表的学习方法[14-15]。设置评价指标NDCG′作为随机森林算法的分类指标,令随机森林算法预测未评分项目,构建学习推荐系统的列表级排序学习推荐列表,依据列表顺序,为用户推荐NDCG′评分最高的前E个项目。
随机森林算法在学习推荐系统处理层信息推荐模块的数据处理单元中,该算法依据用户感兴趣项目样本集中的数据样本,生成并汇总多个决策树,获取学习推荐结果。设置E为随机森林算法的决策树数量,为决策树的基本分类单元,其中h 为决策树,O 为用户感兴趣项目集;Θ 为决策树深度,该参数由正则化参数决定;e 为决策树集合,且e=1,2,…,E,通过集成学习获取组合分类器。
随机森林算法中的单个决策树生成步骤如下:
1)利用用户与互联网以往的交互信息感知用户感兴趣项目,选取用户感兴趣项目作为学习样本,采用Bootstrap 重采样方法反复抽样,获取第E个数据集;
2)从第E个数据集中,计算随机样本的NDCG′值;
3)在数据集中选取具有最优NDCG′值的节点,作为决策树的分裂节点;
4)学习分裂后的决策树节点,直至满足学习终止条件,结束学习,生成第E棵决策树。
通过以上步骤生成多个决策树后,对各决策树进行汇总形成随机森林分类器,随机森林分类器生成结构图如图4所示。
图4 随机森林分类器生成结构图
依据图4生成随机森林分类器后,输入学习推荐的测试样本,随机森林分类器中的各决策树进入投票抉择环节,选取输出类别最多的决策树作为学习推荐系统推荐结果,系统推荐结果表达式为:
式(8)中,H(o)与hi分别为组合分类器与单个决策树模型,I(hi(o)=R)为单个决策树模型的示性函数,即模型内包含某数值时,函数值为1,反之为0,其中R为学习推荐结果的输出变量。
为验证所研究随机森林算法下列表级排序学习推荐系统的整体性能,在实验前预设实验环境为:Windows XP3 操作系统,4 GB 内存,Intel(R)Pentium(R)CPU G630@2.70GHz 2.70GHz,实验程序使用Java1.6 语言开发,数据库为Mysql5.0。实验配置相关参数如表1所示。
表1 实验配置相关参数
实验将本系统应用于某大学图书馆内,该学校在校学生共13 241 人,校内图书馆存放各类藏书共10余万册,随机选取该校学生1 000人作为本系统应用的研究对象,并以该校某历史专业学生为例登录本文系统账号,该账号在本系统的搜索界面如图5所示。
图5 学习推荐系统搜索界面图
该学生登录系统后进入搜索界面搜索专业学习书籍,点击进入本系统搜索界面,可以选择语音搜索或文字搜索两种方式,同时可以按照搜索栏下方书籍分类选择合适的图书类别,方便其查找所需学习书籍。该学生在主页及搜索界面浏览或搜索书籍时,系统将相关浏览及搜索记录存储至数据库中。当该学生暂无明确书籍搜索方向时,点击进入本系统推荐界面,本系统为该学生推荐的推荐界面如图6所示。
图6 学习推荐系统推荐界面图
学生在进入本系统推荐界面后,系统依据数据库中该学生以往的浏览及信息记录为其推荐相关学习书籍,由于该学生经常浏览历史类书籍,因此系统为其推荐与之相关的历史书籍(见图6),可见本文系统能够有效地为该学生推荐相关专业书籍。
准确率指用户选中本系统推荐内容的数量与系统推荐总量之比,是评价系统推荐性能准确性的指标之一。为进一步验证本系统为用户推荐学习书籍准确性,采用准确率作为推荐系统的评价指标,令1 000 位研究对象分别操作姜国义等[7]基于E-Learning的移动学习推荐系统、檀彦超等[8]基于度量学习的多空间推荐系统及本系统获取推荐内容,对比3个系统推荐性能的准确率(见图7)。
图7 3个系统准确率对比
由图7 可知,虽然推荐内容数量逐渐增加,但并未影响本系统对用户推荐的准确率,姜国义等[7]的系统为用户推荐内容的准确率不超过0.8,檀彦超等[8]的系统为用户推荐内容的准确率不超过0.9,本系统为用户推荐内容的准确率为0.9 以上,准确率明显高于前者,可见本系统的推荐性能较高。
为检测本系统在运行时的系统性能,测试人员采用LoadRunner负载测试工具预测本系统行为及系统性能,该测试工具能够实时监测系统性能。将该测试工具应用于本系统中,模拟设置同时段操作用户人数从100 人逐渐增加至1 000 人,分别通过系统吞吐量、平均运行时间、平均响应时间及操作成功人数对3个系统进行性能测试,测试统计结果如表2所示。
表2 推荐系统性能测试结果
由表2 统计结果可知,同时段操作用户由100人递增至1 000 人,3 个系统各项性能指标随人数增长而增加。其中,姜国义等及檀彦超等的系统吞吐量较小、平均运行时间和响应时间较长,运行速度较慢,进而造成其操作成功人数也相对较低。而本系统当同时段人数增长至1 000 人时系统平均运行速度减缓,但各指标值增长幅度较小,系统运行状态始终保持稳定且所有操作用户均成功操作完成,无系统访问失败或卡顿现象,可见本系统整体性能较好。
当前推荐系统的优势已逐渐被越来越多的研究人员发现,若能提升推荐结果的准确性,便能将推荐系统应用于更多领域。为此,本文设计基于随机森林算法的列表级排序学习推荐系统。首先,在硬件方面加入Flash及音频模块,并重点设计了内核处理器和推荐系统电源模块;然后,在软件方面在构建列表级排序学习推荐列表指标的基础上,利用随机森林算法设计列表级排序学习推荐流程,实现列表级排序学习推荐,最后,将其应用于某大学图书馆内为学生推荐个性化书籍,通过推荐系统推荐界面图可以看出,学生在使用推荐系统交互浏览与查询时,系统能够实时记录交互内容,并准确为学生推荐其感兴趣书籍,有效提升用户对推荐系统的使用体验。