首页 / 混合推荐系统

混合推荐系统无效专利 发明

技术内容

混合推荐系统 背景技术 [0001] 在线购物和在线购买历年来显著地增加。在线零售商之间的竞争已经变得激烈,并且这些在线零售商尝试提供最好的用户体验,并且还尝试实施技术来增加销量。一个这样的技术是通过推荐。对于在线零售商向浏览特定产品的网页的用户提供推荐并不罕见。 通常,该推荐将由其他用户购买的其他产品与用户当前正在浏览的产品一起标识。然而,在许多情况中,推荐是过时的或者重复的或者不是零售商进一步明确的目标。 附图说明 [0002] 在下面的描述中参考以下附图详细描述各实施方式。这些附图图示了各实施方式的示例。 [0003] 图1图示了混合推荐系统。 [0004] 图2图示了推荐引擎。 [0005] 图3图示了可以用于本文所述方法和系统的计算机系统。 [0006] 图4图示了可以由混合推荐系统执行的方法。 [0007] 图5图示了为了确定推荐函数需要考虑的因素的示例。 [0008] 图6图示了用于确定推荐的详细步骤和因素的示例。 [0009] 图7图示了用于选择推荐的过程的概要的示例。 [0010] 图8图示了针对优惠券的特定使用情形的示例。 [0011] 图9图示了用于提供实时推荐和在选择推荐时可以被考虑的因素的示例。 具体实施方式 [0012] 为了简单和说明的目的,本发明的各实施方式主要参考示例进行描述。此外,许多特定的细节被陈述以便于提供对各实施方式的全面理解。然而,本领域技术人员容易理解各实施方式可以不限制于一个或多个这些特定细节而被实施。在一些情况中,众所周知的方法和结构没有被详细描述,从而不会不必要地使各实施方式的描述主题不明。 [0013] 根据一个实施方式,混合推荐系统基于离线和在线测试确定用于产品购买的推荐。离线测试分析和调节多个推荐函数,并且在线测试可以用于验证或者进一步调节推荐函数,从而最大化一个或多个性能指标。这些推荐函数可以用于创建推荐索引,该推荐索引代表针对不同产品和用户的推荐。该索引继而用于在实时环境中确定向正在浏览产品页面的用户提供的候选推荐。因此,该索引可以被生成以改进响应时间的技术问题。此外,自动函数调节是对数据稀缺问题的技术方案,数据稀缺问题是指缺乏数据来生成用于推荐函数的模型的问题。不同的所推荐的函数可以被测试和调节,以找到针对推荐函数的精度和模型复杂度之间的平衡。此外,当存在数据稀缺时,种类层次(category-level)关系可以用于确定和调节推荐函数。此外,评分函数可以被应用以选择向用户显示的候选推荐。 [0014] 根据一个实施方式,图1公开了混合推荐系统100。系统100包括混合推荐核110和推荐提供器子系统120。混合推荐核110生成推荐的推荐索引,并且推荐提供器子系统 120从索引中确定向用户提供的推荐。 [0015] 混合推荐核110包括离线测试模块111、在线测试模块112、推荐函数优化器113以及推荐引擎115。推荐函数102可以由用户或者另一系统向系统100输入。推荐函数是用于基于一个或多个参数确定推荐的函数。推荐函数102可以包括统计模型、评论、可调节参数、测试计划、增强步骤、可应用推荐场景、不同场景所需的变化等中的至少一个。不同的函数可以被测试,并且其参数周期地被调节以优化推荐函数。推荐函数102可以标识购买模式,标识一起购买的同等产品或者成对产品,分析包裹(bundles),考虑合并来自不同的购买和时间段的篮等等。篮可以是在线购物车,在进行交易来购买产品之前,用户选择要购买的产品被置于在线购物车中。 [0016] 离线测试模块111仿真在测试数据集上提供推荐的结果,以基于一个或多个性能指标测量推荐函数的有效性。在一个示例中,性能指标包括查全率(例如,消费者篮中的物品匹配我们的推荐的比率)和查准率(例如,证明是成功(例如,使得购买所推荐的产品)的推荐的百分比),但是其他的性能指标也可以被使用。用于示例的物品或产品物品是适于购买的产品。产品可以是商品或服务。在一个实施方式中,来自数据101的数据包括历史购买数据和用户简档。历史购买数据包括与在线销售、离线销售、交易、日期、浏览历史等有关的任何数据。训练数据集和测试数据集可以从数据101生成。训练数据集可以用于创建推荐函数。例如,机器学习技术可以用于生成分类器,所述分类器标识购买模式并且确定用户和其购买模式之间的关系。这些关系可以用于从训练集生成推荐函数102。贝叶斯(Bayesian)网络、神经网络、奇异值分解(SVD)、分类器可以应用于训练集以确定推荐函数。爬山算法或其他数学优化技术可以用于优化推荐函数102。 [0017] 测试数据集用于测试由推荐函数102生成的推荐性能。例如,测试数据集被评估,以确定所推荐的产品的转化数量,或者确定其他的性能指标。推荐函数102可以包括被调节以尝试改进函数102的可调节参数,并且它们在迭代过程中能够被重新测试。 [0018] 在线测试模块112评估由在线测试系统104测试的推荐函数102的性能。在线测试系统104可以关于不同的用户尝试不同的推荐函数或推荐函数的不同变化,并且捕获在线行为,包括交易。例如,在线测试系统104为了评定推荐引擎115的性能,通过将已经向其提供了推荐的顾客组的表现与没有给其推荐的对照组的表现进行比较来执行在线测试。推荐的效果能够由离线测试模块111在宏观层次,通过比较性能指标,如每个顾客的平均篮大小、每个篮的平均销量、以及每个顾客的平均销量,而被评估。这些指标也可以在更精细的层次被分析,例如在产品种类层次,或者顾客群(customer segment)层次。备选地,推荐的有效性能够在宏观层次,通过将向顾客推荐的物品与最终放置在他们的购物车中的物品匹配,或者通过针对那些物品的点通率(click-through rate)而被评定。性能指标的其他示例以及评估推荐的关键性能指标包括:基线分析指标,比如发生次数或访问次数是否超过阈值;针对每个所推荐物品的漏斗分析指标,比如点击次数、物品添加到购物车的次数、购买的次数;篮指标,比如包含所推荐物品的篮的百分比,由推荐驱动的销售百分比;顾客分析指标,比如重复访问,顾客生命值;以及在运行时的系统性能指标。 [0019] 推荐函数优化器114可以基于性能指标对推荐函数中的可调节参数建议调节,并且可以允许用户进行调节。继而,该函数能够被重新测试。数据存储116可以存储推荐函数102、不同的数据集、性能指标以及由核110使用的任何其他信息,以生成推荐索引。数据存储116和数据存储125可以是数据库或其他类型的存储系统。 [0020] 推荐引擎115基于优化后的推荐函数生成推荐索引。推荐索引通过SKU或其他产品标识符标识一个或多个产品,该一个或多个产品针对用于在线销售或离线销售而提供的每个产品而将被推荐。这些索引存储在例如数据存储125中,并且由推荐提供器子系统120用于为用户实时地提供推荐。存储推荐索引的数据存储125可以是低时延数据存储,低时延数据存储向用户提供推荐而不招致令人不满意的延迟。数据存储可以包括被应用来进行最终推荐选择的附加过滤器或规则。推荐选择模块121,例如,通过执行索引查找,选择产品进行推荐。动态数据103可以标识用户当前正在浏览的产品,以及其他用户信息,因而查找能够被执行。过滤器模块122应用过滤器,比如确定产品是否无现货或者是否符合零售商目标,来确定最终的产品推荐。用于确定和提供推荐的处理速度,通过使用关于推荐索引的查找、对后期处理推荐的最小计算量(过滤器)、快速附加、过滤器、以及推荐的排序表而被改进。 [0021] 接口服务层130可以作为对web浏览器140或应用141的web服务而显示提供的推荐。web服务可以包括用于通过因特网在两个设备之间的通信的方法或协议。例如,接口服务层130可以提供与PHP(超文本预处理器,其是适于web开发的开源通用脚本语言)、JAVA、.NET等兼容的web服务。因此,推荐可以经由网络向用户发送。 [0022] 图2示出了用于推荐引擎115的更详细的框图。推荐引擎115可以包括内核201、顾客聚类组件202、宏观个性化组件203、微观个性化组件204、时间效应组件205、预测过滤组件206以及业务规则组件207。内核201,例如基于由推荐引擎115的一个或多个组件实施的推荐函数,生成标识推荐产品的推荐索引。物品至物品、客户至物品、以及其他的关联由物品的购买行为、顾客群的购买行为以及特定用户的购买行为确定。查找可以关于索引而被执行,以标识一个或多个物品用以推荐。 [0023] 图2的左侧示出由数据源提供的信息的示例。推荐引擎115,例如通过使用图2中示出的组件处理若干数据源,确定用于用户的目标产品或服务推荐。数据源可以提供关于交易、顾客偏好、产品分类(product taxonomy)、产品属性、人口统计学等的信息。 [0024] 例如,数据源可以提供与顾客人口统计学有关的信息,比如年龄、性别、位置等。顾客人口统计学以及其他数据(如用户偏好)可以用于标识顾客之间的相似度以进行协同过滤。顾客人口统计学还能够用于,通过应用例如性别、年龄和婚姻状况信息,对推荐后置过滤。 [0025] 交易数据可以包括交易文件,交易文件除了其他信息外还包括物品被特定用户购买的时间、价格和数量。交易数据可以标识顾客篮和追踪属于相同篮的物品。该类型的信息可以用于通过分析篮来确定产品之间的隐藏关联,来生成“买这个的顾客也买了那个”类型的推荐。从交易文件,每个用户的交易历史可以被标识,并且用作对解决了问题“像您一样的顾客也买了这个”的协同过滤技术的输入。交易数据可以用于估计涉及顾客价值和顾客偏好的关键性能指示符的重要性。例如,从交易文件,一天中的时间标识何时用户访问店铺以及一周或一个月的哪些天他/她执行他的/她的购买。顾客对零售商的价值以及顾客偏好的支付方法(如果这被适当地记录了)也可以被确定。而且由每个用户购物的偏好种类,以及而且他们的产品或服务用法以及产品相关的偏好可以被确定。此外,从销售数据的角度,销售量、顾客的计数、以及购买次数能够被确定。 [0026] 数据源可以提供与产品层级有关的信息,产品层级包括产品层级的各种层次。例如,对于具有大的产品范围的零售商,大的产品范围可以具有“长尾的(long tailed)”购买模式或者其中用户至物品的关联索引是稀疏的,产品分类能够用于在产品层级的各种层次应用关联分析,并且因此充实了所推荐的物品列表。该方法还能够用于处理“冷启动”问题,其中针对还没有销售的物品需要推荐。 [0027] 数据源可以提供涉及产品属性的信息,以标识特定产品种类内的产品之间的相似度。该类型的信息能够对于评定相同种类内的产品的相似度做出贡献。产品属性以及产品评级(如果可用)或者销量能够用于,执行属性权重分析并且估计每个属性对零售商的收入的重要度。当产品属性不可用时,产品描述可以用于标识产品的相似度,例如通过应用文本相似度函数。 [0028] 当可用时,产品评级也能够被处理以生成有用的推荐。根据一个用户被估计为评级高的产品能够被推荐给处于相似人口统计学中的另一用户。店铺特性可以用于说明购买位于所生成的推荐中的位置,以及说明店铺大小和其他的店铺特性。 [0029] 来自数据源的数据还能够用于生成顾客分析记录(CAR),顾客分析记录提供涉及顾客行为和特点的信息。CAR可以包括顾客相关的KPI,如由顾客的购买次数、他的/她的平均篮大小、时间(一周中的几天、一天中的时间)和他的/她的购买进行的位置、到店铺往返的平均次数、所购买的产品种类、偏好的支付方法等等。CAR能够用于执行微观或宏观分割(segmentation),并且用于辅助推荐个性化的性能。 [0030] 顾客聚类组件202标识具有相似的购买相关行为,并且具有相似人口统计学的用户集群。宏观个性化组件203可以使用该集群,基于由相同集群中的其他人购买的物品,来确定集群中的用户可以被推荐一个物品。 [0031] 微观个性化组件204基于对该用户的个人信息生成推荐。 [0032] 时间效应组件205基于交易数据的季节性和近期性(recentness)生成推荐。例如,更近的交易数据被权衡得更重,并且与季节性的购买有关的交易数据可以被权衡得更重。 [0033] 预测过滤组件206基于他们的历史购买标识针对用户的未来购买兴趣。预测过滤组件206可以使用隐马尔科夫(Hidden Markov)模型来进行“用户至物品”推荐。 [0034] 业务规则组件207可以应用于由推荐核201生成的一组推荐,以选择将向用户展现的最终推荐。例如,业务规则可以指示无论何时显示书籍,则仅推荐书籍。在另一示例中,给出前5名促销物品,而不是提供正常的推荐。 [0035] 最终推荐可以被提供至测试平台,测试平台可以包括离线测试模块111和/或在线测试模块112,离线测试模块111和/或在线测试模块112与图1中示出的在线测试系统 104一起工作,来优化推荐函数。 [0036] 图2中示出的推荐引擎115的组件执行对确定物品至物品关联的关联分析。例如,因为交易数据提供了涉及谁购买了什么、何时、以及何地的信息,所以交易数据用于标识篮并且辨认经常被一起购买的物品组。这能够作为关联分析的基础。使用该信息,物品至物品(借此,物品能够是产品或服务)推荐被生成。例如,对于篮中的每个产品,通常与该产品一起购买的产品被推荐。因此,“买了这个的顾客也买了那个”类型的推荐被生成。因此,针对每个产品和每个篮的一组推荐能够被生成。具体地,一起购买的成对产品或者甚至多组产品之间的关联用于推荐而被确定。 [0037] 为了确定这些关联,推荐函数可以包括评分函数来分析顾客篮,并且篮中的每个物品组的重要性被估计。可以作为推荐函数使用的评分函数的示例包括,支持计数、支持(support)、置信、以及余弦度量(cosine metric)。用于为这些评分函数来计算值在下面被描述。 [0038] 物品组的支持计数是包含该特定物品组的交易的数量。数学上,物品组X的支持计数定义为: 其中算符|·|表示一组中元素的数量,ti是由若干 物品ik组成的交易,T={t1,t2,...,tN}是所有交易的组,并且I={i1,i2,...,ia}是所有可用物品的组。 [0039] 支持,其确定了具有形式ik→im的关联规则可应用在给定的由N个交易组成的数据集中的频繁程度: [0040] 置信测量物品im出现在包含物品ik的交易中的频繁程度: [0041] 余弦度量,其定义为: [0042] 针对这些评分函数的值被计算并且它们的性能被评估。这些值可以与预定的基准进行比较,来确定物品之间是否存在关联。该些值可以被合并以及被权衡来与基准进行比较。其他的度量也可以被使用,比如,互信息和皮尔逊相关(Pearson Correlation)。 [0043] 其他因素可以被用在评分函数中。例如,交易数据的近期性可以 被考虑,物品的价格和种类可以被考虑。例如,评分函数可以包括如下: 其中wprice和wgeo是非线性 权重因子,非线性权重因子考虑了物品ik和im的相对价格,还考虑了该对物品的购买发生的地点之间的相对距离,以及推荐将被提供的位置。此外,在该评分函数中,t是指明交易进行时间的时间参数。t0是交易的数据集中的第一交易的时间;t1是最新交易的时间;并且tm是第m个交易完成的时间。M是数据集中的交易总数量。n是确定交易的时效性效应的指数。这是一个可调节参数,其可以在迭代过程中由用户或者由预定的量来调节,以改进评分函数的结果。典型值可以是2、3、4、...。n的值越大,历史的交易变得越不重要。函数UniqueUser(ik,im)是购买了该物品的不同用户的数量,并且是测度该物品流行度的度量。 [0044] 协同过滤可以由一个或多个图2中示出的组件执行,来确定顾客至物品的关联。 每个顾客的完全交易历史能够从交易数据被提取。完全交易历史能够然后被用于协同过滤技术的应用。这些技术试图为每个顾客找到,具有相似的购买行为的顾客、特性和购买模式、以及偏好。然后针对顾客的推荐通过标识相似顾客的最频繁购买而被生成。用该方法生成的推荐具有“像您一样的顾客也买了这个”的形式。 [0045] 顾客之间的相似度能够以若干方式被定义。一个方法是基于他们的CAR,将每个顾客的记录与其他顾客的记录进行比较,并且生成相似度索引。该索引可以频繁地更新,因为顾客是如被记录在CAR中的,不断购买新的物品并且因此不断改变他们的偏好和行为的动态实体。另一方法是应用微观聚类技术以将顾客分组成为具有相似行为的用户群,并且使用相同组内与他同等的人的购买,为顾客生成推荐。该方法具有较少的计算强度,但是可能不如前一种方法准确。 [0046] 图2图示了可以用于实施系统100的计算机系统200。计算机系统200可以包括没有示出的另外组件,并且所描述的组件中的一些可以被移除和/或修改。计算机系统200可以是服务器,或者系统100可以被实施在多个服务器上的分布式计算系统中。每个服务器可以包括计算机系统200的组件。 [0047] 计算机系统300包括处理器301,比如中央处理单元、ASIC或其他类型的处理电路、输入/输出设备302,比如显示器、鼠标键盘等、网络接口303,比如局域网(LAN)、无线 802.11x LAN、3G或4G移动WAN或WiMax WAN、以及计算机可读介质304。这些组件的每一个可以操作地耦合至总线308。计算机可读介质304可以是参与提供指令至处理器301用于执行的任何适当的介质。例如,计算机可读介质304可以是非暂时性的或非易失性的介质,比如磁盘或固态非易失性存储器或易失性介质,比如RAM。存储在计算机可读介质304上的指令可以包括机器可读指令,机器可读指令由处理器301执行,以执行系统100的方法和功能。 [0048] 系统100可以被实施为存储在非暂时性的计算机可读介质上并由一个或多个处理器执行的软件。例如,计算机可读介质304可以存储操作系统305,比如MAC OS、MS WINDOWS、UNIX、或者LINUX,以及用于内核110/子系统120的代码。操作系统305可以是多用户的、多处理的、多任务的、多线程的、实时的等。例如,运行时间段,操作系统305正在运行,并且用于内核110/子系统120的代码由处理器301执行。 [0049] 计算机系统300可以包括数据存储307,数据存储307可以包括非易失性数据存储。数据存储307存储由系统100使用的任何数据。数据存储307可以用于图1中示出的数据存储116或数据存储125的一个或多个,或者数据存储116或数据存储125可以由分离的数据库服务器托管(hosted)。 [0050] 网络接口303,例如,经由LAN将计算机系统300连接至内部系统。此外,网络接口 303可以将计算机系统300连接至因特网。例如,计算机系统300可以经由网络接口303和因特网,连接至web浏览器以及包括在线测试系统104的其他外部应用和系统。 [0051] 混合推荐系统100的推荐函数处理多种多样如上面描述的数据源,并且在该过程中创建若干类型的输出。输出的一个重要种类是不同的推荐索引,不同的推荐索引由推荐引擎115和在被用于离线测试的中间级处所创建的测试推荐索引所生成。索引的创建为了更快的计算时间,对存储空间是用于服务推荐还是用于离线测试进行折衷。因此,混合推荐系统100可能对数据存储和处理器强加某些资源需求。在一个示例中,混合推荐系统100可以被实施在分布式计算环境中,比如机器(例如,服务器)的集群,以及将这些机器链接在一起的连接上的网络带宽。 [0052] 在一个示例中,由混合推荐系统100执行的操作可以以用于运行并行程序的映射化简(map-reduce)编程风格而被实施。映射器和简化器程序被写为能够分离地且并行地在分离的数据片段上被执行的无副作用(side-effect free)的函数。它们是提供了计算加速的隔离计算线程。为了实现该并行性,由混合推荐系统100执行的操作被设计为能够并行地被执行的映射和简化任务序列。 [0053] 由推荐引擎115对索引执行的操作可以有效地被简化为自连接操作的变化。例如,单独的交易订购在关联对映射器任务中分离地被处理,关联对映射器任务作为密钥输出第一位的物品,并且作为值输出第二位的/推荐的物品和它们的权重。映射简化框架通过它们的密钥(第一位的物品)将输出打乱并重排,用于馈送至简化器任务中。简化器然后以物品至物品关联或相似度索引的形式,计算并整理最终的成对关联。 [0054] 每个映射器可以足够小,从而所计算的总关联或所需要的资源被限制于数据分离中的所有产品对的总计数,或者sum(basket_size^2)。物品至物品相似度索引的每一行可以被整理,以由预先指定的度量将推荐分等级。这意味着简化器过程的大小取决于所提供的产品范围,以及索引的稀疏度。更大的产品范围以及更密切的关联可以具有更大的简化器任务或更多的简化器。 [0055] 图4图示了根据一个实施方式的方法400。方法400可以由系统100执行。在 401,性能指标被选择用于评估推荐函数。性能指标的示例可以包括查准率、查全率、产品种类的多样性、用户的多样性、时间等。本文描述了性能指标的其他示例。不同的性能指标可以用于不同的购买阶段。 [0056] 在402,推荐函数102被确定并存储,并且在403,推荐函数102通过离线测试被优化。优化可以被执行来实现一个目标,比如,通过提供目标产品或服务推荐以增加零售商的收入。离线测试可以由离线测试模块111在402和403执行。例如,训练数据集合从历史购买数据和用户简档被生成,并且被用于标识模式和性能指标与其他变量之间的关系。在一个示例中,历史交易数据分离成为训练和测试数据集,借此80%的数据可以用于训练并且 20%可以用于测试。当更为新的数据到达时,数据集(即,训练和测试)可以在周期性的间隔被重新定义,以保持新鲜度。而且数据集可以是关于时间非重叠的。附加地,给定具有训练和测试集合之间良好定义的时间间隔的若干数据集,推荐中的近期效应可以被量化。推荐关于时间的性能提供了产品或服务的销售趋势的另外指示,并且提供了用于处理数据来提供及时推荐的适当频率的指示。 [0057] 使用常规的机器学习技术,比如朴素贝叶斯(Naive Bayes),训练数据集可以用于生成推荐。推荐然后关于测试数据集被评估。在测试期间,通过将所推荐的物品的集合与顾客篮中的物品相比较,离线测试被执行。这两个集合越相似,推荐越成功。推荐的有效性可以使用查全率(例如,匹配我们的推荐的顾客篮中的物品的比率)和查准率(例如,被证明是成功的推荐的百分比)而被评定。查全率评估了顾客篮中多少个物品是由推荐所触发的,并且它被评估为在推荐集合并且在篮中的普通物品的数量除以篮中物品的数量。因此,如果篮中物品p1、p2、p3、p4和p5被使用,并且推荐引擎115推荐了物品p2、p4、p6、p8、p9和p10,则查全率是2/5=40%。查准率是所提供的推荐的有效性的度量,并且它被评估为在推荐集合并且在篮中的普通物品的数量,除以所提供的推荐的数量。因此,在前面的示例中,查准率是2/6=33.33%。查准率可以是关于所提供的推荐数量的单调递减函数,而查全率可以是所提供的推荐数量的单调递增函数。因此,被提供的推荐越多,查全率将越高,因为存在更多的机会来触发转化,但是同时查准率变得更低。 [0058] 查准率和查全率可以用作性能指标来优化推荐函数。例如,推荐函数应用于测试数据集来确定推荐,并且查准率和查全率被测量。查准率和/或查全率可以与阈值比较,以确定它们是否是令人满意的。如果不是,推荐函数中的可调节参数可以被调节,并且推荐函数被重新测试,以在迭代过程中改进性能指标。例如,当新的交易从顾客发出时,被一起购买的物品的数量改变了。该改变导致了支持计数(增加或减少)评分函数中的改变,其随后反映在推荐中。此外,该效应由可调节的设计参数确定。例如,评分函数在上面被描述,其考虑了wprice和wgeo,wprice和wgeo是考虑了物品的相对价格和位置的非线性权重因子。如上面指出的,该评分函数包括指数权重参数n,其是可调节参数,可以在迭代过程中被调节以改进评分函数的结果。此外,用于生成推荐的时间窗的长度可以变化,例如,该长度可以在从数月到数年的范围内,或者甚至在所有的历史交易范围内。 [0059] 针对索引大小、产品范围覆盖、以及综合性的另外指标也可以用于评估推荐。重叠或相似度的交叉推荐比较也可以用于帮助优化期间的调节过程。 [0060] 离线性能指标也能够用于测量业务规则在无约束推荐的性能上的效应。这可以提供一种评估的方式,该方式不同于来自使用不同的业务规则或业务规则的变化的后期处理推荐的场景。作为一个示例,假设提议“将针对书籍的推荐限制为仅是书籍”的业务规则被引入。这将非书籍产品从那些推荐中排除。这增加了对于所推荐书籍的印象,并且减少了对(不再被推荐的)非书籍产品的印象。用于评分函数的分数可以指示来自整个书籍种类的全部转化,如从全部查全率度量中的减少所评估的,已经被降低。反过来,该规则可以在某些顾客群(例如“书籍爱好者”群)内提供一个抬升,特别是如果基本推荐函数还没有调整到辨认这样的顾客群。 [0061] 离线和在线测试不是相互排斥的。离线测试可以用于最初校准推荐函数的参数。 在线测试继而可以对其进行精细调整。离线测试是所提供的推荐将具有的影响的评估,而在线测试是推荐的实际影响的评定。 [0062] 在404,优化后的推荐函数通过在线测试由在线测试模块112测试。在一个示例中,多个推荐函数通过在线测试而被测试,并且前K个推荐函数基于性能指标而被选择,其中K是大于0的整数。 [0063] 在405,例如,从顶级表现的推荐函数,由推荐引擎115创建推荐索引。推荐索引被存储在低时延数据存储125中。该些索引标识宏观或个性化的推荐。例如,对于每个产品,索引标识了待推荐的一个或多个其他产品,或者对于每个产品和针对购买了该产品的用户的用户信息,索引标识了待推荐的一个或多个其他产品。该些索引可以用另外的信息补充,比如产品的种类、关于包括周期性的时间的产品购买模式、用于产品的概要等。 [0064] 在推荐索引被创建并存储之后,索引可以用于向用户提供推荐。例如,在406,动态数据103被接收,其指示了用户的当前行为,比如,当前正被浏览的产品、购物车中的产品、最新被访问的网页、地理位置、当前的时间、近期的购买、人口统计学等。在407,产品信息、用户信息或其他信息从动态数据103中被标识,以在推荐索引上执行查找。在408,推荐选择模块121在推荐索引上执行查找,以确定推荐。在409,过滤器或业务规则被应用来选择推荐,比如仅为其他书籍提供推荐,或者为长尾(long-tail)产品提供推荐。例如,规则可以指示,无论何时显示书籍,仅推荐书籍(从索引移除不是书籍的任何物品)。在另一示例中,替代提供正常的推荐,给出前5名促销物品。在410,所选择的推荐被传送给用户。例如,所选择的推荐被显示在用户当前浏览的网页上。 [0065] 所选择的推荐可以是对于待购买的其他产品的推荐。推荐可以包括优惠券或其他促销。推荐可以被示出在当前被浏览的页面上,或者可以经由电子邮件或另一通信信道被传送。 [0066] 图5图示了用于确定推荐函数而考虑的因素。此外,图5示出了索引可以针对物品至物品,顾客至顾客而创建,或者对于特定顾客或人口统计学而个性化,以确定推荐。用于确定推荐函数而考虑的因素可以包括购买历史、订购数据、产品属性、购买的时间、产品评论、导航和检索行为(例如,先前浏览的网页、点击路径、检索词)、以及顾客反馈。图5还示出了所推荐的函数作为使用多个索引的结果,并且随着数据量增大,可以变得更加成熟。推荐函数可以包括统计模型。不同的所推荐的函数可以被测试,以在针对推荐函数的查准率和模型复杂度之间找到平衡。测试计划可以与推荐函数关联,以测试可调节参数。此外,不同的场景可以被标识对于不同的推荐函数是最好的。此外,稀疏处理是指当没有很多数据时的问题。例如,当存在新产品时,或者当对于产品只有很少的购买历史可用时,如果索引不能提供推荐,产品种类层次关系可以用于推荐函数。图6图示了一些用于确定推荐的详细步骤和因素。图7图形地示出了用于确定推荐的步骤。推荐函数标识一起购买的产品。 例如,它们标识由多个用户频繁一起购买的物品对,并且考虑购买对的近期性,以及购买每个对的用户的数量。多个性能指标可以用于评定和优化推荐函数。此外,推荐可以在相似的物品之间共享。例如,产品层级可以被确定具有多个层次,比如L0-L4,其中L0是根。在一个层次中,针对一个产品确定的推荐可以被应用至该层次中的其他产品,或者推荐可以从向上更高的层次被提供。例如,如果L4不具有足够的推荐,则推荐可以从L3层次取出。 此外,多个推荐可以基于规则或相似度控制而被确定并且过滤,以确定最终的推荐。例如,线程相似度算法将每个L3种类分解为若干L4种类;推荐在L4种类的产品之间共享,以解决冷启动问题;并且如果L4没有提供足够的推荐,则更多推荐被从L3层次取出。 [0067] 图8示出了特定使用情形,由此情形,推荐是针对优惠券的。数据源除了图2中示出的信息之外可以包括,涉及优惠券的信息,比如每个优惠券的印象以及优惠券列表。推荐引擎115生成推荐,并且业务规则可以应用于确定最终的推荐。例如,推荐是优惠券。优惠券可以基于购物篮中的物品而被推荐。优惠券可以从可用的优惠券列表中被选择,或者不在列表上的新优惠券被推荐。推荐可以是基于用户的,比如基于用户的购买历史和/或偏好。优惠券可以从可用的优惠券列表中被选择,或者不在列表上的新优惠券被推荐。性能指标可以用于测度推荐的实际性能,并且执行推荐函数的精细调节和优化。 [0068] 图9示出了一个示例,该示例图示了基于实时的信息,比如位置、一天中的时间、实时的接受/拒绝以及其他顾客/用户特性,对推荐过滤。例如,用户已经接受一个供应用于珍藏的确定被做出,或者用户刚刚购买了咖啡的交易被记录。实时的供应瞄准目标能够通过排除在实时环境中不相关的高倾向供应,进一步改善合格供应的列表。优惠券或用于咖啡的其他推荐对于下一个小时对于该用户可以被抑制,即使该用户在其他咖啡店的附近。在另一示例中,实时位置排除可以将在用户的行进区域中不可用的供应过滤掉。 [0069] 如上面指出的,不同的性能指标可以被考虑来选择并评估推荐函数和推荐。性能指标可以被组合来确定选择。除了上面描述的示例之外,其他的示例还可以包括时间和多样性。例如,更为近期的购买可以给予更大的权重。多样性确定了购买一对产品的不同用户的数量。此外,为了考虑到冷启动问题,其中冷启动问题可以是存在新产品的时候,或者只有很少的购买历史可用于产品的时候,产品种类层次关系可以被确定。例如,如果一个人买了牙膏,他们买了什么其他类型的产品以及买的频繁程度。此外,定基准可以针对指标而被执行,以确定离线或在线测试结果是否令人满意。 [0070] 下面描述用于计算性能指标的一些示例。例如,可以计算查全率和查准率。对于每个等级,对于篮中的每个产品p的查全率是: [0071] 如 果 count(others) > 0,sum(count(intersection(recommendations,others))/count(others)/count(basket))。 [0072] Others是不包括p的篮的其余产品,并且推荐是recommendation_function(p)。 [0073] 针对查准率,对于篮中的每个产品p,如果count(others)>0,则sum count(intersection(recommendations,others))/count(basket)/count(recommendations)。 [0074] 在用于计算查全率的另一示例中,使推荐是空集并且对于篮中的每个产品p: [0075] recommendations=recommendations UNION recommendation_algorithm(p); [0076] recall=count(intersect(recommendations,basket))/count(basket);and[0077] precision = count(intersect(recommendations,basket))/ count(recommendations)。 [0078] 在另一示例中,f-measure(其为2*precision*recall/(precision+recall))用于组合两者的指标,并且然后时间效应被考虑。 [0079] 尽管各实施方式已经参考示例进行了描述,但是本领域技术人员能够对所描述的实施方式做出各种修改而不背离所要求实施方式的范围。

相关技术
混合推荐相关技术
S·D·柯克比发明人的其他相关专利技术