首先概述了电子商务推荐系统的相关研究工作,指出目前的推荐系统结构不够灵活、柔性,然后运用柔性理论对电子商务推荐系统进行了柔性分析,进而提出了一个柔性的电子商务推荐系统。该系统通过策略模块去完成推荐需求与实现之间的映射,通过这个映射完成不同的推荐服务。系统的设计遵循构件化的原则,以做到随着策略的改变能够灵活调整。
Internet和Web技术推动着电子商务的蓬勃发展,企业建立了大量的商业门户,提供了大量的产品信息以拓展市场,创造更多的商业机会。然而,随着电子商务提供越来越多的选择的同时,其结构也变得越来越复杂,经常出现“信息迷航”的问题,即用户会迷失在大量的商品信息空间中,无法找到自己需要的商品。解决这个问题的一个方法是发展智能推荐系统,提供个性化服务,即依据顾客的偏好或需求,为其推荐商品,以帮助顾客完成购买过程。目前几乎所有大型电子商务系统,如Amazon、eBay、新浪商城等,都不同程度地使用各种形式的个性化推荐系统。推荐系统在电子商务中取得了巨大的成功。研究表明,电子商务的销售行业在使用个性化推荐系统后,销售额能提高2%~8%。
1 相关研究
电子商务个性化推荐系统(personalized recommendation systems for e-commerce)的正式定义由Resnick等人在1997年给出:“电子商务个性化推荐系统是利用电子商务网站向用户提供产品信息和相关建议,帮助用户决定购买什么产品,通过模拟销售人员帮助用户完成购物过程的系统”。这个定义现在已经被广泛引用。目前的电子商务推荐系统主要有基于协同过滤的推荐系统如GmupLens、基于内容的推荐系统如Personal Web Watcher、基于规则的推荐系统如ILOG等类型。它们各有优缺点,在不同的应用领域所表现的性能也不同。例如基于协同过滤的推荐系统适合推荐音乐、电影这些内容比较难分析的物品;基于内容的推荐系统比较适合推荐新闻、文章及网页等。克服单一推荐技术的局限性的一种方法是采用混合推荐系统,如Schafer等人提出的元推荐系统以电影推荐为例讨论了将基于内容过滤推荐技术与基于协同过滤技术结合使用的方法。ZHANG Xi-zheng提出一个结合关联规则和分类的推荐方法,该方法先用A两硎算法产生一系列关联规则,然后用CBA-CB算法产生分类器,最后通过分类器为用户进行推荐。混合推荐系统可以同时利用更多的数据,使推荐效果更好,在一定程度上也突破了单一推荐技术在应用上的局限性。但是混合推荐系统在本质上也只是推荐技术本身的改进,在复杂、动态和充满挑战的商业环境中,推荐系统面临着更大的挑战,主要表现在以下几个方面:不能灵活提供多种推荐功能;没有充分考虑到商业策略;不能根据推荐需求的变化采用不同的推荐策略;由于推荐需求与应用系统之间的差别,推荐系统需要根据具体Web站点进行定制开发,集成代价高,系统移植性差;难以动态有效地管理和维护多个推荐工具和大量数据。这些问题限制了推荐系统在实际中的大规模应用。因此,如何构建灵活的推荐系统以适应复杂的商业环境是目前推荐系统的一个研究热点。左子叶等人提出了一个开放通用的电子商务推荐系统OARs,支持多种推荐模型并对所有推荐模型进行统一管理。杨引霞等人提出并实现了一种多模型推荐系统,该系统提供了关联规则推荐模型、热门销售推荐模型和协同过滤推荐模型三种,并提供可扩展的接口,可以方便地增加新的模型。这些多模型推荐系统在一定程度上可以满足多种推荐需要,但是系统继承代价仍然很高,系统移植性差。Weng Li-Tung等人从推荐系统市场的角度出发,提出了一个由推荐服务用户、推荐服务提供商、推荐生产者构成的推荐系统市场,并在此市场的基础上提出了一个基于组件的推荐系统框架。它能够基于不同的商业策略生成不同的个性化推荐,这为开放性推荐系统的设计提供了很好的思路,但是提出的框架仅为了说明其推荐市场理论的实现方式,并没有进行详细的分析和设计。马辉民等人提出柔性推荐系统的概念,但是并没有深入探讨。本文从柔性理论出发,设计电子商务推荐系统,通过添加一个策略模块完成推荐需求与推荐实现之间的映射去实现柔性。该系统可以根据不同的商业环境进行定制,具有较好的继承性和移植性。
2 柔性理论
2.1 柔性软件理论
柔性思想起源于机械制造系统,柔性制造系统(flexible manufacturing system,FMS)是能够满足小批量、快节奏、多品种的生产制造系统。为了缓解软件危机,设计出能够较好适应不断变化的环境和满足不断变化需求的软件,人们将柔性的思想引进了软件信息行业。柔性软件系统(flexible software system,FSS)是在一定范围内能够满足和适应不断变化的环境和需求的软件系统。它具有以下几个特征:以复用和变化为目的;分层独立、松散耦合、模块组件化的系统框架;个性化界面定制、结构重构及扩展、功能模块替换及扩充;提供基于柔性适应的一定的互操作功能。柔性软件系统是目前软件系统发展的一个趋势。
2.2 多agent技术
Agent技术是人工智能技术的最新发展技术之一。现在普遍认为,agent是一个实体,具有一定的知识,并能够针对特定目标有效地运用知识求解问题,具有自主性、交互性、适应性、社会性、进化性等特性。多agent系统是由多个agent组成的系统,其基本思想是将具有不同目标的多个agent对其目标、资源等进行合理的安排,以协调各自行为,最大程度地实现各自的目标,每一个agent又是一个具有目标、知识和能力的自治计算实体,多个agent协调合作形成问题的求解网络。多agent技术正适应柔性系统的灵活性、复杂性、分布性等多方面的特点和要求。
3 电子商务推荐系统的柔性分析
3.1 领域分析
领域分析是对一类应用系统的共同应用领域进行系统化分析的过程,以发现该领域应用系统的共性和变性。
1)对现有的电子商务推荐系统的共性分析共性(commonality)是一类应用系统的共同特征。现有的电子商务推荐系统虽然种类繁多,服务形式各不相同,但是都可以抽象成一个共同的体系结构,即收集用户信息,然后根据用户信息进行建模,在此基础上提供个性化的推荐信息(图1)。
图1 电子商务推荐系统的体系结构
2)对现有的电子商务推荐系统的变性分析变性(variability)是不同系统各自特有的不同于其他系统的特性。通过分析,笔者发现推荐系统变性的内容包括以下几个方面:
a)应用不同。一方面是应用领域的不同,推荐系统在许多领域都得到了应用,如电影、音乐、新闻、零售等;另一方面是应用场合不同,如对登录客户和非登录客户的推荐,对选购商品和未选购商品的客户的推荐等。
b)推荐算法不同。推荐算法是推荐系统的核心,目前存在各种不同的推荐算法,如协同过滤推荐、基于内容的推荐、基于案例的推荐、基于规则的推荐等。每种推荐技术都有其局限性,于是还有一些改进的推荐算法和混合推荐算法。随着推荐算法的进一步研究,还会有更多的推荐算法产生,以满足各种不同的推荐应用。
c)用户模型的表示不同。因为几乎所有的技术都以一种私有形式来表示知识,使得每种表示形式仅能够被具体类型的系统所运用。目前用户模型表示方法有基于向量空间模型的表示、基于神经网络的表示、基于用户一项目评价矩阵的表示、基于案例的表示以及基于本体论的表示等。
d)数据源不同。有许多不同的数据源可供推荐系统使用,其中包括产品数据库、交易数据库、日志数据库和客户数据库等。发掘新的数据源来扩大推荐系统的信息来源,也是目前研究的一个热点。
3.2 电子商务推荐系统的柔性分析
在领域分析的基础上可以确定系统柔点。通过对电子商务推荐系统的共性和个性分析发现,柔性电子商务推荐系统必须满足以下几点要求:能够在不同的应用领域方便地移植;能够随着企业的商业策略进行调整;能够方便地更新推荐技术;能够利用多种不同的数据源。为此,柔性推荐系统必须具备:
1)结构柔性:a)构建松散耦合的多层架构体系。在传统的推荐系统设计中,紧耦合产生僵化的难以移植和维护的密集体。要使系统具有一定的结构柔性,必须降低系统各模块间的耦合度,使之松散耦合。多层体系架构能够将模块的修改和扩展限制在一个层的内部,使之不会跨层传播,一定程度上降低了系统的耦合性。同时能够较方便地实现数据库与业务模型分离、业务模型与用户视图分离,这样就可以使它们可以各自独立地改变和复用,提高系统的灵活性。b)采用组件技术封装各个模块,这样就能像搭积木似的构建系统。c)封装推荐算法和模型,可以在需要的时候对算法和模型进行添加、删除和更新。
2)数据柔性能够利用多种不同形式的数据源,如文本、XML文本、Excel表、数据库等;能够集成多种ETL工具来进行数据处理,产生满足推荐需求的数据集。
3)业务流程柔性这是柔性推荐系统的核心,体现出系统整体柔性所在。针对不同的应用需求,通过简便的业务流程调整便能够满足推荐需求。本文采用构建一个策略模块的方式实现,通过配置推荐策略来满足推荐需求。传统的推荐系统推荐策略是在设计时定义好了,推荐需求发生变化将会导致修改整个系统。本文中策略模块将负责推荐需求到推荐实现之间的映射。当需求发生变化时,只要修改策略文件,便能够很好地满足需求,而不用重新规划整个系统。策略模块承担着反映推荐变化的角色,并指挥推荐系统满足这个变化。结构柔性和数据柔性都是为这一部分服务的,构建一个基础框架,在这个框架基础上可以方便地添加数据集、算法和模型来响应不同的推荐策略。
4 柔性电子商务推荐系统的模型
在上文分析的基础上,采用多agent技术,本文构建的柔性电子商务推荐系统如图2所示。该系统运行的基本流程如下:用户agent识别用户推荐需求,并向推荐引擎agent请求推荐;推荐引擎agent向推荐策略agent请求推荐策略,然后依据策略驱动推荐agent群协同完成推荐任务,并返回推荐结果。推荐agent工作时会从用户模型agent和数据库agent中调用相应的模型和相关数据,协同完成推荐过程。除了图2中的主要模块外,系统中还应该有一个综合管理agent负责数据、数据清理工具、模型、算法、策略的添加、删除和更新等管理工作。本系统实现柔性的核心在于推荐策略agent、推荐引擎agent和推荐agent群之间配合。推荐策略agent的角色类似于参谋系统,提供建议;推荐引擎agent类似于指挥系统,主要功能是协调指挥;推荐agent群类似于执行系统,完成推荐任务。各部分功能详细描述如下:
a)用户agent。负责随时捕获登录网站的客户信息,并依据客户的浏览或购买行为向推荐引擎agent发送推荐请求;接收来自推荐引擎的推荐结果,并格式化返回给商务系统;同时将收集的用户相关信息提交给数据库agent,以更新数据库用户信息。
b)推荐引擎agent。负责接收用户agent发出的推荐请求,从推荐策略agent那里查询推荐策略;然后根据推荐策略驱动推荐agent群为其服务得到推荐结果,再将得到的结果返回给用户agent。
c)推荐策略agent。负责接收推荐引擎agent的查询策略请求,识别策略类型,返回相应的策略。推荐策略agent的内部结构如图3所示。推理机负责分析用户的策略类型并存放在用户策略库中;推荐引擎请求推荐策略时由控制模块在用户策略库查询策略类型,然后再从推荐策略库中取出相应策略。
图2 基于agent的柔性推荐系统模型
图3 推荐策略agent
客户策略库存放的是客户ID和通过一些计算得到的推荐策略类型,当推荐策略agent接收推荐引擎agent的策略查询请求时,在该数据库中查询相应的策略类型。每个客户都指定一种推荐类型。
推荐策略库存放一系列推荐策略,这些策略根据推荐的需求去定制,它提供推荐模型、推荐算法和商业策略的合理配置,推荐策略库中有一个缺省策略用来处理缺省情况。图4给出推荐策略的两个案例。
商业策略S1:处理存放时间过长的商品。推荐策略:给存放时间过长的商品一个较高的等级,以便优先推荐。
商业策略S2:针对价格敏感的客户。推荐策略:结合常用的个性化推荐算法,然后把一系列比较便宜的商品和目前推销的商品推荐给客户。
d)推荐agent群。它是由协调agent和多个推荐agent组成的一个微社会系统,其逻辑结构如图5所示。推荐agent一般包含一种推荐算法,可以完成具体的推荐工作,它会向用户模型agent和数据库agent请求用户模型及相关数据以联合完成一项推荐任务。协调agent按照推荐策略的指示协调多个推荐agent联合完成推荐任务。
推荐agent总体上可以分为两类:一类推荐agent包含的是常用的推荐算法,如协同过滤、基于内容推荐、贝叶斯网络等,用于完成主要的推荐计算;另一类推荐agent包含的是辅助算法,主要是用于完成辅助功能,实现一定的推荐策略。通过分析,在本系统中采用三类辅助算法:
(a)过滤算法。从推荐列表中进一步过滤掉不符合推荐期望的商品,把符合推荐期望的商品推荐给用户。比如把新进的商品优先推荐给具有体验心强的青少年用户。
(b)混合算法。综合不同推荐技术的推荐结果,这样可以改善推荐结果,提高推荐精度。比如可以综合基于项目的协同过滤推荐结果和基于用户的协同过滤推荐结果,以改善推荐质量。实现混合器的方式有混合、转换、层叠、特征增量等。
(c)分类算法。按照类型、价格等调整推荐结果,把符合公司策略的商品优先推荐给客户。比如在利用协同过滤推荐技术产生的推荐列表的基础上,通过分类将价格低廉的商品推荐给价格敏感型客户。
随着研究的深入,大量的数据挖掘算法可以添加到该推荐系统中,以辅助推荐过程,提供更好的推荐服务。
e)用户模型agent。负责接受推荐agent的调用请求,调用相关模型,完成推荐功能。其内部含有用户模型算法库,以供必要时调用算法动态生成模型,满足推荐请求。
f)数据库agent。负责接收用户agent收集的用户信息,格式化存放到数据库中。同时接受推荐agent和用户模型agent的数据请求。
g)数据库。存放了相关数据库,如产品数据库、交易数据库、日志数据库、客户数据库等。这尴数据库为推荐提供资源。
h)除了图2中的主要模块外,模型中还包括一个综合管理agent,负责对数据库、数据库agent、用户模型agent、推荐agent、用户策略agem、推荐引擎agent进行管理。负责数据、数据清理工具、用户模型、算法、策略的添加、删除和更新等管理操作。
5 柔性推荐系统的业务流程
客户甲和乙登录某个Web站点,用户agent首先获取客户信息,并向推荐引擎agent提出推荐请求;推荐引擎agent向策略agent查询推荐策略。经过查询,识别出客户甲是普通客户,采取的是存放时间过长的商品优先推荐的策略S1;客户乙是价格敏感性客户,采取的是将价格比较低的商品和目前推销的商品优先推荐的策略S2。然后推荐引擎agent驱动推荐agent群分别为甲、乙客户服务。推荐agent群中的协调agent接收到推荐引擎agent执行策略S1的指令后,首先运行基于内容的推荐agent,得到一个推荐结果RI;然后将R1传递给分类agent,它给存放时间过长的商品一个较高的排序等级;再重新排序得到推荐结果R1*,返回给推荐引擎agent;推荐引擎agent将结果交给客户agent格式化显示给客户甲。推荐agent群中的协调agent接收执行策略s2时,首先运行基于内容的推荐agent和协同过滤推荐agent,分别得到推荐结果R21和R22;然后将B21、R22传递给混合agent处理得到推荐结果B2;B2再被传递给过滤agent,将推销商品过滤出来优先推荐,得到推荐结果R2*,再将R2*交给分类agent,它给价格低的一个较高的排序等级;将R2’重新排序得到结果R2**,返回给推荐引擎agent;推荐引擎agent将结果交给客户agent格式化显示给客户乙。运行推荐agent时会向用户模型agent和数据库agent请求模型和数据。
6 结束语
本文设计的电子商务推荐系统需要进一步研究的是:推荐策略的评价及自动调整、客户策略类型的计算、辅助算法的整理、推荐agent之间的冲突等问题。这些将是笔者下一阶段研究的重点。