王彦琨
(太原理工大学,山西 晋中 030600)
近年来,数据总量呈现指数级增长趋势,信息技术的应用范围和边界不断延伸。据统计,全球数据总量预计2020年达到44 ZB,其中中国数据量将达到8 060 EB,占全球数据总量的18%。数据的爆发式增长为互联网行业带来了机遇与挑战,对人类生活产生了重大影响。目前,人们谈及的推荐系统在互联网行业有着广泛应用,其中绝大部分是涉及“大数据”概念下的人工智能领域技术。个性化推荐系统原理并不复杂,但能大幅提升数据的使用效率。目前,这种基于大数据的统计分析技术已经相对成熟。
用户行为数据收集是构建推荐系统最关键的一步。网站日志记录是用户行为数据最简单的存在形式。网页原始日志可以按照用户行为的类别汇总成日志,每个会话用于表示一次用户行为和相应的行为反馈。会话日志通常存储在分布式数据系统中。利用网站用户行为日志可以方便地收集相关数据[1]。
批量化的系统文件日志数据通常使用编写语言脚本的方式采集,利用各种编程语言的网络爬虫方式从网站上获取批量数据信息,提取网页日志中文本形式的数据,并均衡分配到分布式存储系统的不同计算机上,以便进行下一步的统计分析处理。文件数据的收集方式为开发人员提供了一个高可扩展的、高可靠性以及高容错性的推荐方案。
存储的用户行为数据越全面,推荐系统给出的结果就越准确。分布式存储可以用来实现海量数据的存储管理,通过可扩展的系统结构,使用多个存储服务器共享存储负载,从而满足大规模存储应用的需求。此外,分布式存储系统的自动负载平衡和高容错性允许在廉价的服务器上构建分布式存储系统,可以选择使用标准MySQL数据库、键值数据库、文档数据库甚至是某种实时流处理。不同的数据库按不同的数据结构进行联系和组织。
利用统计方法对海量用户行为数据进行深度分析挖掘,提取所需信息,这一过程称为数据分析。根据数据的实时性分类,数据分析可以分为实时分析、批量分析以及近实时分析3种方式。
实时数据分析可以通过对访问用户日志的实时采集与推送,实现快速对日志数据进行多维度的分析与检索,在存储数据的同时进行信息挖掘分析,从而为互联网用户提供具有实效性的推荐结果,以获取更大的数据价值[2]。但是,实时数据流的不断涌入导致必须重塑系统基本架构。批量数据分析可以给定数据的处理期限,如每隔1 h执行一次数据处理。但是,这种数据分析方式只能在一定程度上满足用户需求,无法保证数据一致性和可靠性。近实时分析介于实时分析和批量分析两种数据分析方式之间,可以在间隔很小的一个时间段内进行用户行为数据的采集。这样的推荐系统在用户每次浏览页面时能给出推荐结果,具有较好的实时性。
数据过滤是整个推荐系统中最核心的部分,本文主要介绍协同过滤算法。协同过滤算法是信息过滤技术中的一种常用方法,一般采用最近邻技术,处理对象是由用户行为所表示的数据。协同过滤进一步挖掘了互联网用户的兴趣所在,旨在找到与大量其他用户具有相似喜好的用户,对物品评价以类似于加权的方式进行处理,由此预测系统中该用户对此信息或物品的兴趣程度。
基于用户的协同过滤算法可以理解为:推荐系统中为单个用户给出个性化建议时,先要找到和他的兴趣爱好具有较高相似程度的用户群体,通过统计用户群体大概率喜欢的商品,使得该用户能找到其他用户喜欢的且自己没见过的物品[3]。基于用户的协同过滤算法主要包括获取特定用户的兴趣爱好、发现兴趣相似的用户和推荐潜在物品3个基本步骤。
基于物品的协同过滤算法不使用内特征属性项来计算物品之间的相似度,商品之间的距离通过比较不同用户的行为记录来计算。应用该算法可以得出结论,两个不同的物品具有很大相似度的原因是喜欢其中一件物品的网络用户大都对另一件物品感兴趣。基于物品的协同过滤算法分两步实现,即计算不同物品的距离,在此研究基础上通过生成物品的相似度矩阵,为特定用户生成物品推荐列表。
目前,主要有3种评测推荐效果的方法。
离线实验的方法。首先,通过企业网站日志获取相关数据,按照标准生成一个结构化数据集;其次,将结构化数据集按照一定比例分为训练集和测试集,分别用于训练模型和预测;最后,通过建立相应的评测算法,在用户物品模型上进行预测。存在的缺点是稀疏数据集限制了系统的应用范围[4]。
用户行为调查。用户行为调查需要现实中的用户在系统中回答给定问题,根据答案和行为计算系统的各项评测性能指标[5]。这有利于了解用户的主观感受,及时更正错误,因为预测率较高并不等同于用户确实较为满意。缺点是时间成本较高,需要尽可能保证用户行为的真实有效性。
AB测试。在完成离线实验和用户行为调查的基础上,可以执行AB测试。AB测试的基本思想是并行测试多个系统,而不同的系统以某种规则进行比较,且每个测试系统只存在一个不同的变量。缺点是周期较长,为了得到可靠的结果需要进行长期的实验。
推荐系统上的AB测试与其他系统的联系如图1所示。
图1 评测系统和其他系统的关系
推荐系统的出现一定程度上弥补了传统信息搜索处理方法的局限。这一系统的执行依赖于海量的用户信息,能够快速帮助用户找到感兴趣的信息,目前已应用于大量商业软件,并将逐渐成为用户发现信息的重要来源。