自适应数据平台的制作方法

文档序号:26009196发布日期:2021-07-23 21:28阅读:134来源:国知局
自适应数据平台的制作方法

优先权要求

本申请要求于2019年12月5日提交的美国申请序列号16/210,845的优先权的权益,其全部内容通过引用并入本文中。

本文公开的主题总体上涉及数据平台。具体地,在一些示例实施方式中,本公开内容致力于用于自适应数据平台的配置和管理的系统和方法。



背景技术:

a/b测试使不同组的用户体验不同的功能,同时测量差异对用户的影响。可以使用一小部分用户来测试关于功能和接口的新想法,并且如果影响是期望的,则可以向所有用户推广更改,或者如果影响是负面的或可忽略的,则可以停止测试。

将不同功能中的每一个提供给一定百分比的用户,并收集测试数据。在收集足够的数据以确保任何观察到的行为差异具有统计意义或者行为差异不具有意义之后,停止测试并选择一个功能以供将来使用。

附图说明

在附图的图中以示例而非限制性的方式示出一些实施方式。

图1是示出根据一些示例实施方式的适合于实现自适应数据平台的网络环境的网络图。

图2是示出根据一些示例实施方式的计算机(例如,实验服务器)的部件的框图。

图3至图4是示出根据一些示例实施方式的适合于实现自适应数据平台的数据库模式的框图。

图4是示出根据一些示例实施方式的在使用自由空间复制协议的方法中的复制的键值存储的第一节点的操作的流程图。

图5是示出根据一些示例实施方式的在修改用户接口的方法中的自适应数据平台的操作的流程图。

图6是示出根据一些示例实施方式的在预计测试时间的方法中的实验服务器的操作的流程图。

图7是示出根据一些示例实施方式的在评估用户接口的版本的方法中的实验服务器的操作的流程图。

图8是示出第一示例用户接口的用户接口图。

图9是示出与第一示例用户接口相关但由根据第一实验的自适应测试平台修改的第二示例用户接口的用户接口图。

图10是示出与第一示例用户接口相关但由根据第二实验的自适应测试平台修改的第三示例用户接口的用户接口图。

图11是示出第一示例用户接口流程的流程图。

图12是示出与第一示例用户接口流程相关但由根据第三实验的自适应测试平台修改的第二示例用户接口流程的流程图。

图13是示出与第一示例用户接口流程相关但由根据第四实验的自适应测试平台修改的第三示例用户接口流程的流程图。

具体实施方式

示例方法和系统针对自适应数据平台。示例仅代表可能的变化。除非另有明确说明,否则部件和功能是可选的并且可以被组合或细分,并且操作可以在顺序上变化或者被组合或细分。在以下描述中,出于说明的目的,阐述了多个具体细节以提供对示例实施方式的透彻理解。然而,对于本领域技术人员将明显的是,可以在没有这些具体细节的情况下实践本主题。

实验平台(例如,实验服务器)可以通过应用服务器控制功能的a/b测试。示例功能包括页面流和页面配置。例如,在一个页面流中,点击结帐按钮将用户带到显示购物车内容的页面;在另一页面流中,点击结帐按钮将用户带到请求信用卡信息的页面。作为另一示例,在一个页面配置中,按钮具有一定大小;在另一页面配置中,按钮的大小较大。

来自应用服务器的对页面的每个请求与用户标识符相关联。示例用户标识符包括因特网协议(ip)地址和账户标识符。基于用户标识符,实验平台确定应在页面上提供哪个功能,并且应用服务器提供页面的相应版本。

通常,一个版本是当前版本,而另一版本是提议的版本。如果用户行为数据显示使用提议的版本而不是当前版本带来了改进(例如,增加用户参与度、增加销售量、增加广告收入、减少投诉、减少回报或其任何合适的组合),则提议的版本将被采用并替换当前版本。为了确定是否观察到改进,收集具有统计意义的大量数据。

实验平台针对功能版本收集关于用户行为的数据,并作为响应调整每个版本被提供的频率。例如,提议的版本最初被提供给10%的用户,而当前版本最初被提供给90%的用户。在前100个用户接收所提议的版本之后,所得数据表明:与当前版本相比,销售机会增加了10%。因此,实验平台增加接收所提议的版本的用户的百分比。向更高百分比的用户提供所提议的版本会减少收集具有统计意义的数据所需的页面服务的总数。实验平台可以基于接收所提议的版本的用户的变化百分比提供更新的预计时间以完成a/b测试。

管理员可以向实验平台提供用户接口的元件的标识和用户接口的属性。作为响应,实验平台自动确定属性的第一值和第二值,并使用属性的两个值执行a/b测试。在获得显示一个值表现优于另一个值的具有统计意义的结果之后,将自动选择属性的表现更好的值。

关于a/b测试存在技术问题。本文描述的系统和方法通过减少完成显示早期结果的功能测试的时间来解决这些问题。由于该技术改进,改进后的功能更快地被提供给用户。此外,本文描述的系统和方法使选择功能和属性的过程自动化,允许实验服务器不断尝试改进应用。更具体地,如下面进一步描述的,可以向系统添加功能以改进计算机、计算机集群或数据中心的技术方面。

可以通过使用本文描述的系统和方法节省计算资源,这是进一步的技术改进。这样的计算资源的示例包括处理器周期、网络流量、内存使用、数据存储容量、功耗和冷却能力。仅作为一个示例,通过避免要求管理员提供要测试的每个属性和功能的细节,系统和方法可以避免处理器周期、内存使用、网络带宽或与改进应用相关联的其他计算资源。作为第二示例,如果将第一功能与第二功能进行比较,则可以基于第一功能对系统性能、网络带宽、内存消耗、功耗、所需冷却等的影响来选择第一功能。换句话说,技术和/或经济方面的考虑可以用来选择要推广以更广泛使用的功能。

图1是示出根据一些示例实施方式的适合于实现自适应数据平台的网络环境100的网络图。网络环境100包括经由网络140全部通信地耦接至彼此的基于网络的系统110、装置160a、装置160b和装置160c。装置160a至160c可以被统称为“多个装置160”,或者一般地被称为“装置160”。基于网络的系统110包括经由网络140或另一网络进行通信的实验服务器120和应用服务器130。装置160可以使用web客户端150a或app客户端150b与基于网络的系统110交互。如下面关于图2所描述的,实验服务器120、应用服务器130和装置160可以各自在计算机系统中整体或部分地实现。

应用服务器130经由网络140向其他机器(例如,装置160)提供应用。实验服务器120配置应用服务器130以向不同用户提供用户接口的两个或更多个不同版本。应用服务器130可以以网站的方式提供应用。web客户端150a(例如,web浏览器)在装置160a的显示装置上呈现应用的用户接口。因此,用户接口的不同版本可以是作为网站的一部分的网页的不同版本。

每个用户可以与唯一的账户标识符相关联。在一些示例实施方式中,实验服务器120基于用户的唯一账户标识符来确定要呈现用户接口的哪个版本。例如,偶数账户标识符使得呈现用户接口的第一版本,而奇数账户标识符使得呈现用户接口的第二版本。作为另一示例,可以对账户标识符进行哈希处理,并基于账户标识符的哈希值选择用户接口的版本。

图1中还示出了用户170a、170b和170c,用户170a、170b和170c可以一般地被称为“用户170”,或者被统称为“多个用户170”。每个用户170可以是人类用户(例如,人类)、机器用户(例如,由软件程序配置成与装置160和基于网络的系统110交互的计算机)、或其任何合适的组合(例如,由机器辅助的人类或由人类监督的机器)。用户170不是网络环境100的一部分,但是每个用户170与装置160中的一个或更多个相关联并且可以是装置160的用户(例如,用户170a可以是装置160a的所有者,用户170b可以是装置160b的所有者,并且用户170c可以是装置160c的所有者)。例如,装置160a可以是属于用户170a的台式计算机、车辆计算机、平板计算机、导航装置、便携式媒体装置或智能电话。

用户170对装置160上的由应用服务器130呈现的用户接口的版本的响应从应用服务器130发送到实验服务器120以进行分析。如通过预定度量所测量的,实验服务器120确定用户接口的哪个版本提供更好的结果,并相应地调整版本的未来呈现。例如,预定度量可以是点击、页面查看、购买、观看用户接口所花费的时间、发布的评论、放置的广告、提供的评论或其任何合适的组合。预定度量还可以包括计算目标,例如目标性能度量、内存使用、目标网络延迟、网络带宽等。基于根据所述度量一个版本表现优于另一版本,可以增加接收所述表现更好的版本的用户的百分比,并可以减少接收另一版本的用户的百分比。在接收到足够的响应以确定用户接口的一个版本在统计意义程度上表现优于其他版本之后,可以终止实验,从而使得在此后将表现更好的版本呈现给所有用户。

图1所示的任何机器、数据库或装置可以在通用计算机中实现,该通用计算机由软件修改(例如,配置或编程)成执行本文针对该机器、数据库或装置所描述的功能的专用计算机。例如,将在下面关于图2说明能够实现本文所描述的方法中的任何一个或更多个方法的计算机系统。如本文所使用的,“数据库”是数据存储资源,其存储被结构化为文本文件、表、电子表、关系数据库(例如,对象关系数据库、nosql数据库、网络或图形数据库)、三元组存储、分层数据存储或其任何合适的组合的数据。另外,经由应用编程接口(api)或远程过程调用(rpc)访问(或存储)的数据可以视为从数据库访问(或存储到数据库)。此外,图1所示的机器、数据库或装置中的任何两个或更多个可以被组合成单个机器、数据库或装置,并且本文针对任何单个机器、数据库或装置所描述的功能可以在多个机器、数据库或装置之中细分。

网络140可以是能够实现机器、数据库和装置(例如,应用服务器120和装置160)之间或机器、数据库和装置(例如,应用服务器120和装置160)间的通信的任何网络。因此,网络140可以是有线网络、无线网络(例如,移动或蜂窝网络)或其任何合适的组合。网络140可以包括构成专用网络、公共网络(例如,因特网)或其任何合适的组合的一个或更多个部分。

图2是示出根据一些示例实施方式的计算机200(例如,实验服务器120)的部件的框图。无需在各种实施方式中使用所有部件。例如,客户端、服务器、自治系统和基于云的网络资源可以各自使用不同组的部件,或者在服务器的情况下,使用例如较大的存储装置。

计算机200(也被称为计算装置200和计算机系统200)形式的一个示例计算装置可以包括全部通过总线240连接的处理器205、计算机存储介质210、可移除存储器215和不可移除存储器220。尽管示例计算装置被示出并被描述为计算机200,但是在不同的实施方式中,计算装置可以具有不同的形式。例如,计算装置200可以替代地为智能电话、平板电脑、智能手表或者包括与关于图2示出和描述的元件相同或相似的元件的另一计算装置。诸如智能手机、平板电脑和智能手表的装置被统称为“移动装置”。此外,尽管各种数据存储元件被示为计算机200的一部分,但该存储可以附加地或替选地包括可经由诸如因特网的网络访问的基于云的存储或基于服务器的存储。

计算机存储介质210包括易失性存储器245和非易失性存储器250。易失性存储器245或非易失性存储器250存储程序255。计算机200可以包括或能够访问计算环境,计算环境包括各种计算机可读介质,例如易失性存储器245、非易失性存储器250、可移除存储器215和不可移除存储器220。计算机存储器包括随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)和电可擦除可编程只读存储器(eeprom)、闪存或其他存储器技术、致密盘只读存储器(cdrom)、数字多功能盘(dvd)或其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁存储装置、或任何其他能够存储计算机可读指令的介质。

计算机200包括计算环境或能够访问计算环境,计算环境包括输入接口225、输出接口230和通信接口235。输出接口230接口连接至或包括诸如触摸屏的显示装置,显示装置也可以用作输入装置。输入接口225接口连接至或包括以下中的一个或更多个:触摸屏、触摸板、鼠标、键盘、相机、一个或更多个装置特定的按钮、集成在计算机200内或者经由有线或无线数据连接耦接至计算机200的一个或更多个传感器以及其他输入装置。计算机200可以使用通信接口235在联网环境中操作,以连接到一个或更多个远程计算机诸如数据库服务器。远程计算机可以包括个人计算机(pc)、服务器、路由器、网络pc、对等装置或其他公共网络节点等。通信接口235可以连接到局域网(lan)、广域网(wan)、蜂窝网络、wifi网络、蓝牙网络或其他网络。

存储在计算机存储介质上的计算机指令(例如,存储在计算机存储介质210中的程序255)由计算机200的处理器205执行。如本文中所使用的,术语“机器存储介质”、“装置存储介质”和“计算机存储介质”(统称为“机器存储介质”)是指同一事物,并且可以互换使用。术语指的是存储可执行指令和/或数据的单个或多个存储装置和/或介质(例如,集中式或分布式数据库以及/或者相关联的高速缓存和服务器)以及包括多个存储装置或装置的基于云的存储系统或存储网络。因此,术语应该被认为包括但不限于固态存储器以及光学和磁性介质,包括处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或装置存储介质的具体示例包括非易失性存储器,通过示例的方式包括:半导体存储器装置,例如可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、现场可编程门阵列(fpga)和闪存装置;磁盘,例如内部硬盘和可移除盘;磁光盘;以及cd-rom和dvd-rom盘。术语“机器存储介质”、“计算机存储介质”和“装置存储介质”明确地排除了载波、调制的数据信号和其他这样的介质,载波、调制的数据信号和其他这样的介质中的至少一些涵盖在下面讨论的术语“信号介质”中。

术语“信号介质”或“传输介质”应当被认为包括任何形式的调制的数据信号、载波等。术语“调制的数据信号”是指具有以将信息编码在信号中的方式来设置或改变其特性中的一个或更多个的信号。

术语“机器可读介质”、“计算机可读介质”和“装置可读介质”是指同一事物,并且可以在本公开内容中互换使用。这些术语被定义成包括机器存储介质和信号介质两者。因此,这些术语包括存储装置/介质和载波/调制的数据信号两者。

程序255还可以经由通信接口235使用传输介质并利用多个已知的传输协议(例如,超文本传输协议(http))中的任一个通过网络140被发送或接收。网络140的示例包括局域网(lan)、广域网(wan)、因特网、移动电话网络、普通老式电话服务(pots)网络和无线数据网络(例如,wifi、lte和wimax网络)。术语“传输介质”应被认为包括能够存储、编码或携带用于由计算机200执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进这样的软件的通信。

程序255被示为包括分析模块260、实验模块265和用户接口(ui)模块270。本文描述的模块中的任何一个或更多个可以使用硬件(例如,机器的处理器、专用集成电路(asic)、fpga或其任何合适的组合)来实现。此外,这些模块中的任何两个或更多个模块可以被组合成单个模块,并且本文中针对单个模块描述的功能可以在多个模块之中细分。此外,根据各种示例实施方式,本文中描述为在单个机器、数据库或装置内实现的模块可以跨多个机器、数据库或装置分布。

实验服务器120的分析模块260分析来自用户接口的不同版本的用户的输入,以根据预定度量来确定哪个版本表现更好。应用服务器120的分析模块260向实验服务器120提供数据并且可以预处理该数据。例如,点击按钮或填写表单的原始用户输入可以被转换为表示正进行购买、正放置广告或其他更高级别动作的数据。

实验服务器120的实验模块265指示应用服务器130向不同用户提供用户接口的不同版本(例如,基于用户的帐户标识符)。应用服务器130的实验模块265接收来自实验服务器120的指令,并可以请求来自实验服务器120的指令。例如,当具有账户标识符的用户请求具有接口标识符的用户接口时(该用户接口具有第一版本和第二版本),应用服务器130向实验服务器120发送请求,该请求包括账户标识符和接口标识符。响应于该请求,实验服务器120提供被选择要提供给用户的用户接口的版本的标识符。

ui模块270使得向用户170呈现所选择的ui版本。例如,可以在由实验服务器130为用户170选择的版本中呈现命令行或图形接口。在各种示例实施方式中,ui模块270是应用的一部分或者是操作系统的一部分。所呈现的用户接口可以呈现在专用显示装置(例如,通过显示线缆附接到计算机的监视器)或者可以呈现在与计算装置集成的显示器(例如,集成到平板计算机、移动电话或可穿戴装置中的屏幕)上。ui在本文中一般被描述为图形用户接口,但是考虑包括语音接口的其他类型的ui。例如,语音接口可以接收语音命令、提供音频输出或者两者。

图3至图4是示出根据一些示例实施方式的适合于实现自适应数据平台的数据库模式300的框图。数据库模式300适合于由应用服务器130和实验服务器120使用。数据库模式300包括会话表310、实验表340、事件表410和自动实验配置表440。

会话表310由表定义320来定义,包括全局唯一标识符(guid)字段、会话标识符字段、事件计数字段、会话开始字段、会话结束字段和装置信息字段。会话表310包括行330a、330b、330c和330d。行330a至330d中的每一行存储客户端装置160与由应用服务器130服务的应用的会话的信息。每行的guid是客户端装置160的用户的唯一标识符。例如,guid可以是用户的账户标识符。会话标识符是会话的唯一标识符。会话开始字段和会话结束字段表示会话的开始时间和结束时间。当前进行中的会话可以具有会话结束的空值。在一些示例实施方式中,会话被定义为长达24小时的连续用户活动(如在行330b中)或无活动时段之前的持续30分钟的连续用户活动。在其他示例实施方式中,会话的其他定义用来对事件分组。

事件计数字段存储在会话中发生的事件的计数。事件的定义在不同的示例实施方式中有所不同。在一些示例实施方式中,事件是点击、右击、页面查看、购买、广告查看、放置评论或在在线市场中列出待售物品。可以将不同类型的事件合计为事件计数字段的事件。装置信息字段存储关于会话中参与的客户端装置160的信息。装置信息字段可以存储web浏览器名称、web浏览器版本、处理器品牌、处理器类型、操作系统名称、操作系统版本、客户端装置(例如,台式计算机、膝上型计算机、车辆计算机、平板电脑、电话或可穿戴计算机)的形状参数或其任何合适的组合。

实验表340由表定义350来定义,包括实验标识符字段、版本字段、名称字段、类型字段、实验开始字段、实验结束字段和站点字段。实验表340包括行360a、360b和360c。实验标识符和版本字段包含实验的标识符和版本号。名称字段包含实验的名称。实验开始字段和实验结束字段标识实验运行的时间范围。当前运行的实验可以在将来具有实验结束或具有空值。类型字段表示实验的类型并且可以与正被实验的用户接口的元件对应。站点字段表示包含正被实验修改的元件的用户接口。在一些示例实施方式中,会话表310的表定义320包括存储每个会话的一个或更多个实验标识符的字段。

事件表410由表定义420来定义,包括guid字段、会话标识符字段、事件标识符字段和事件时间字段。行430a和430b中的每一行包含由会话标识符标识的、由与guid对应的用户或帐户执行并且在事件时间发生的会话中的单个事件的数据。事件的类型由事件标识符标识。事件标识符可以标识与之交互的用户接口的元件。例如,事件标识符501可以表示特定用户接口的特定按钮被按下(例如,图8的用户接口800的按钮840)。事件表410的行中的会话标识符可以与会话表310的行中的会话标识符交叉引用,从而允许分析模块260处理与会话相关联的各个事件。因此,在图3至图4的示例中,行430a至430b示出了在行330a中计数的两个事件的附加信息。

自动实验配置表440由表定义450来定义,包括元件类型字段、属性类型字段和属性值字段。自动实验配置表440包括行460a、460b和460c。元件类型字段标识要进行实验的用户接口元件的类型。属性类型字段标识要进行实验的用户接口元件的属性。属性值字段标识属性的值、值的范围或值的列表。因此,行460a提供按钮的自动实验配置,允许按钮的大小从当前大小增加或减小高达50%。行460b允许通过将颜色属性改变为黑色、红色或黄色来在按钮上运行实验。行460c允许通过在任一方向上将按钮的垂直(y轴)位置改变多达25个像素同时保持水平位置固定来在按钮上运行实验。

图5是示出根据一些示例实施方式的由自适应数据平台在修改用户接口的方法500中的操作的流程图。方法500包括操作505、510、515、520、525、530、535、540、545和550。作为示例而非限制,方法500被描述为由图1至图4的系统、模块和数据库执行。

在操作505中,实验模块265接收用户接口的元件的标识。例如,管理员使用客户端装置(例如,装置160c)选择用户接口的元件,使得元件的唯一标识符经由网络140从客户端装置发送到实验服务器120。作为另一示例,控制程序自动地选择用户接口的元件。

在操作510中,实验模块265接收元件的属性的标识。例如,管理员(例如,从属性列表中)选择属性,使得将该属性的唯一标识符发送到实验服务器120。作为另一示例,控制程序自动地选择属性。应用于用户接口元件的术语“属性”包含影响用户接口元件的显示或功能的任何内容。示例显示属性包括大小、颜色、位置、着色、阴影、方向、形状、文本内容、图像内容等。示例功能属性包括用户接口对与用户接口元件交互的响应。示例交互包括点击、右击、按下、长按、拖动、将另一个对象放到用户接口元件上等。示例响应包括引起弹出菜单的显示、引起另一用户接口的显示、引起物品的购买等。

在操作515中,实验模块265自动地确定属性的第一值和第二值。可以通过机器学习算法基于属性的当前值、基于属性的预定范围或其任何合适的组合来随机确定第一值和第二值。例如,如果用户接口元件是按钮并且属性是按钮的位置,则属性的第一值和第二值可以是按钮的两个不同位置,随机生成的不同位置在由按钮的预定阈值和当前位置限定的范围内(例如,由自动实验配置表440的行460c限定的范围),使得位置在当前位置的预定阈值内。在一些示例实施方式中,属性的第一值是属性的当前值,而属性的第二值是对属性的当前值所提议的改变。

在操作520中,ui模块270自动地生成第一用户接口,所述第一用户接口具有设置为第一值的元件属性。在操作525中,ui模块270自动地生成第二用户接口,所述第二用户接口具有设置为第二值的元件属性。例如,第一用户接口在第一位置处具有按钮,而第二用户接口在第二位置处具有按钮。

在操作530和535中,ui模块270向第一帐户提供第一用户接口,并向第二帐户提供第二用户接口。在一个实施方式中,基于第一帐户的第一帐户标识符和预定阈值或范围来确定向第一帐户提供第一接口。例如,范围内的所有帐户标识符被提供第一用户接口,而范围外的所有帐户标识符被提供第二用户接口。在其他示例实施方式中,基于会话标识符来确定要提供哪个接口。因此,同一帐户可以在一个会话中接收第一用户接口而在另一会话中接收第二用户接口。作为另一替选实施方式,对用户接口的请求指示要呈现哪个版本(例如,通过对每个版本使用不同的url)。

在操作540中,实验模块265基于与第一用户接口中的元件的第一交互程度来确定第一用户接口的第一结果。该结果可以是二进制成功/失败值、预定范围内的数值或另外的结果。交互程度可以是二进制值(例如,是否与元件交互)或数值(例如,基于与元件交互的持续时间、基于与元件的交互次数、基于如果与元件交互则与元件相关联的物品的价格、或其任何合适的组合)。在操作545中,实验模块265基于与第二用户接口中的元件的第二交互程度来确定第二用户接口的第二结果。

操作515至545被描述为针对两个账户在两个用户接口中生成属性的两个值并基于两个交互程度来确定两个结果,但是方法500可以被扩展为支持针对相同数目的账户在相同数目的用户接口中提供的属性的任意数目的值。因此,可以同时测试多于两个不同的元件选项。

在操作550中,ui模块270基于第一结果和第二结果向第三账户自动地呈现第三用户接口,第三用户接口包括具有第一值或第二值的元件属性。在一些示例实施方式中,基于第一结果与第二结果的比较来选择属性的值。例如,根据预定度量,在第三用户接口中使用提供最佳结果的属性的值。步骤550可以被自动地执行,使得系统是自适应的并且不断地改进用户接口或系统的其他方面。

图6是示出根据一些示例实施方式的由实验服务器在预计测试时间的方法600中的操作的流程图。方法600包括操作610、620和630。作为示例而非限制,方法600被描述为由图1至图4的系统、模块和数据库执行。

在操作610中,实验模块265确定接收用户接口的使用第一属性值的元件的帐户的百分比,接收用户接口的使用第二属性值的元件的其他帐户的百分比。例如,帐户标识符的范围在阈值处划分,使得账户的百分比具有低于该阈值的账户标识符。响应于来自账户的对用户接口的请求,如果账户的账户标识符低于阈值,则提供使用第一属性的用户接口的版本,并且如果账户标识符不低于阈值,则提供使用第二属性的用户接口的版本。

在操作620中,实验模块265基于账户与用户接口的元件的交互来修改百分比。操作520、530和540(图5)可以用来收集使用具有第一属性值的用户接口的第一账户的交互,并针对在接收具有第一属性值的用户接口的账户的百分比内的另外账户重复操作520、530和540。操作525、535和545(图5)可以用来收集使用具有第二属性值的用户接口的第二账户的交互,并针对不在接收具有第一属性值的用户接口的帐户的百分比内(或在接收具有第二属性值的用户属性的帐户的百分比内)的另外帐户重复操作525、535和545。在测试多于两个属性值的示例实施方式中,针对使用具有第三属性值的用户接口的另外账户执行类似操作,并针对在接收具有第三属性值的用户接口的账户的百分比内的另外账户重复类似操作。

例如,修改阈值以增加或减小接收使用第一属性的用户接口的元件的帐户的百分比。在一些示例实施方式中,如果根据使用预定度量所测量的,与第一属性相关联的结果比与第二属性相关联的结果好,则增加接收使用第一属性的用户接口的元件的账户的百分比,并且如果与第一属性相关联的结果比与第二属性相关联的结果差,则减小接收使用第一属性的用户接口的元件的账户的百分比。

在一些示例实施方式中,在对使用第一属性值的用户接口(例如,第一用户接口)的第一性能和使用第二属性值的用户接口(例如,第二用户接口)的第二性能进行分析之后进行操作620中的对百分比的修改。例如,确定用户接口的两个版本的每个用户的交互程度,并且将结果聚合以生成每个版本的性能得分。对百分比的修改可以响应于性能得分。因此,在操作620中调整百分比之后确定用于将来向账户呈现用户接口的属性值间接地基于在分析之前针对每个账户确定的交互程度。

在操作630中,实验模块265基于修改的百分比更新完成第一属性值的测试的预计时间。例如,管理员确定具有使用第一属性的元件的用户接口应当被提供10,000次,以确定第一属性是否优于第二属性。例如,在操作610中,选择10%的帐户来接收使用第一属性的元件,但是基于良好的初始结果,在操作620中百分比增加到20%。因此,完成测试的剩余时间预计减少2倍。完成测试的预计时间可以基于用户接口的预计使用情况。例如,如果在操作620中修改百分比之前用户接口被提供2,000次,并且预计使用情况是每天对用户接口的4,000个请求,则预计将是每天提供使用第一属性的800个请求(4,000的20%)。因此,将提供具有第一属性的用户接口的剩余时间预计为10天,因为将800乘以10得到8,000,在完成测试之前提供第一属性的剩余次数。ui模块270使得向管理员呈现用户接口显示更新的预计完成时间。

图7是示出根据一些示例实施方式的在评估用户接口的版本的方法700中的实验服务器的操作的流程图。方法700包括操作710、720、730、740和750。作为示例而非限制,方法700被描述为由图1至图4的系统、模块和数据库执行。

在操作710中,分析模块260基于训练集训练机器学习系统以生成用户接口的性能度量。例如,训练集的每个元件包括由指示与用户接口的一个或更多个用户交互的数据和由用户交互产生的性能度量组成的向量。作为另一示例,向量包括具有用户接口的每个交互式元件的一个值的二进制值。如果用户没有与交互式元件交互,则交互式元件的值可以设置为0,而如果用户与交互式元件交互,则交互式元件的值可以设置为1。性能度量可以是基于用户交互的财务值的数值。例如,如果用户购买了物品,则性能度量是该物品的价格;如果用户点击了按点击付费的广告,则性能度量是该广告的支付值;并且如果用户取消了帐户,则性能度量是该账户被维持的(负的)预期收入。同样,性能度量可以是机器或机器系统的技术方面。例如,性能度量可以是用于每个用户接口配置的内存量、网络带宽、处理器周期。性能度量可以是聚合的一组技术度量。

在一些示例实施方式中,基于接收到的用户接口(例如,方法500的操作505中标识的用户接口)的标识自动地选择向量的元件。例如,遍历网页的文档对象模型(dom)以标识网页的交互式元件,并且自动地选择向量的元件以对应于网页的交互式元件。

在训练之后,机器学习系统响应于输入向量生成预测的性能度量。因此,不直接产生收入的用户接口可以基于其对收入产生活动的可能影响来评估。例如,根据包括待售物品的图片的首页,使得选择图片导致呈现物品的附加信息,一些训练向量将显示选择物品导致购买该物品的收入,而一些训练向量将显示选择物品没有导致售出,但不包括物品选择的所有训练向量将显示没有选择物品导致没有售出。因此,在训练之后,机器学习系统将为具有包括物品选择的首页的会话生成比不包括物品选择的会话更高的性能度量。

在操作720中,ui模块270向多个账户中的每个账户提供用户接口的版本,并从每个账户接收交互。如在操作610(图6)中,可以基于接收每个版本的账户的预定百分比来执行对接收每个版本的账户的选择。可以运行机器人过滤器以从多个帐户中移除自动化系统(机器人)进行的交互,从而防止机器人影响用户接口的开发。

在操作730中,分析模块260基于交互为多个账户中的每个账户生成用于机器学习系统的输入向量。在操作730中生成的输入向量与在操作710中使用的训练集的输入向量具有相同的格式。输入向量可以包括除仅指示与用户接口元件的用户交互的值之外或代替仅指示与用户接口元件的用户交互的值的导出值。例如,向量可以包括物品是否售出的指示、是否发生欺诈的指示或两者。

在操作740中,分析模块260向机器学习系统提供输入向量以生成每个账户的性能度量。在操作750中,分析模块260聚合帐户的性能度量以生成用户接口的每个版本的性能度量。例如,对接收用户接口的第一版本(例如,接收具有带有第一属性值的元件的第一用户接口)的账户的性能度量进行平均以生成第一版本的性能度量,并且对接收用户接口的第二版本(例如,接收具有带有第二属性值的元件的第二用户接口)的账户的性能度量进行平均以生成第二版本的性能度量。在操作620(图6)中使用所得到的性能度量来修改此后要呈现的每个版本的百分比。

图8是示出第一示例用户接口800的用户接口图。用户接口800包括用户接口元件810、820、830、840、850、860、870、880和890。用户接口元件810至890也可以被称为标题810、图像820、价格830、按钮840、850、860和890、运输信息870和交付信息880。用户接口800显示待售物品的列表。标题810指示待售物品是一套修订版双色地(duallands)。图像820是待售物品的图片。价格830表示物品的价格是$2,250。运输信息870表示运输是免费的并且将被加快。交付信息880表示预计在11月20日前交付物品。使用一组显示属性(例如,位置、颜色和大小)显示用户接口元件810至890中的每一个。

按钮840可操作以购买所列出的物品。例如,按下按钮840可以使得呈现接收信用卡信息并确认购买的另一用户接口。在该示例中,与用户接口800中的元件(按钮840)的交互使得另一用户接口被呈现,并且与用户接口800中的元件的交互程度(参考方法500的操作540和545)基于经由该另一用户接口接收到的输入。

按钮850可操作以将所列出的物品添加到购物车,以便以后购买。按钮860可操作以使得允许用户输入该物品的报价的另一用户接口被呈现。按钮890可操作以将物品列表保存到用户的关注清单。

图9是示出与第一示例用户接口相关但由根据第一实验的自适应测试平台修改的第二示例用户接口900的用户接口图。用户接口900包括用户接口元件910、920、930、940、950、960、970、980和990。用户接口元件910至990也可以被称为标题910、图像920、价格930、按钮940、950、960和990、运输信息970和交付信息980。

用户接口元件910至990中的每一个对应于用户接口元件810至890中的一个。用户接口元件910、920、930、970和980使用与其在图8中相应元件相同的属性来呈现。按钮940使用与按钮840不同的大小属性来呈现。按钮950、960和990使用与相应按钮850、860和890不同的位置属性来呈现。

根据第一实验,用户接口800和900被提供给不同账户以测试不同属性的影响(例如,通过使用方法500或600)。在一些示例实施方式中,在两个用户接口之间仅一个属性不同。在其他示例实施方式中,同时测试多个属性。

图10是示出与第一示例用户接口相关但由根据第二实验的自适应测试平台修改的第二示例用户接口1000的用户接口图。用户接口1000包括用户接口元件1010、1020、1030、1040、1050、1060、1070、1080和1090。用户接口元件1010至1090还可以被称为标题1010、图像1020、价格1030、按钮1040、1050、1060和1090、运输信息1070和交付信息1080。

用户接口元件1010至1090中的每一个对应于用户接口元件810至890中的一个。用户接口元件1010至1060、1080和1090使用与其在图8中的相应元件相同的属性来呈现。运输信息1070使用与运输信息870不同的字体大小属性,16点而不是14点,以及不同的样式粗体而不是普通。

根据第二实验,用户接口800和1000被提供给不同账户以测试不同属性的影响(例如,通过使用方法500或600)。在一些示例实施方式中,同时执行第一实验和第二实验,使得用户接口800、900和1000被呈现给不同的用户以评估三个选项的性能。

图11是示出第一示例用户接口流程1100的流程图。第一示例用户接口流程包括首页1110、物品页1120、购物车页1130、支付页1140和确认页1150。ui模块270呈现页1110至1150中的每一个。用户与首页1110的元件交互(例如,通过从一组显示的图片中选择物品的图片),并且作为响应接收物品页1120(例如,用户接口700),包含有关待售物品的信息。元件与物品页1120之间的关系是该元件的功能属性。

响应于与物品页1120的元件(例如,按钮740)的交互,显示购物车页1130,为用户显示购物车的信息,购物车包括物品页1120的物品。响应于与购物车页1130的元件的交互,显示支付页1140,允许用户输入或确认支付信息。响应于接收到进行交易的支付信息或确认,显示具有确认交易成功的信息消息的确认页1150。

图12是示出与第一示例用户接口流程相关但由根据第三实验的自适应测试平台修改的第二示例用户接口流程1200的流程图。第二示例用户接口流程包括首页1110、物品页1120、支付页1140和确认页1150。通过与第一示例用户接口流程1000比较,购物车页1030不再显示。取而代之,先前使得购物车页1130被显示的元件的操作现在使得支付页1140被显示。因此,通过第三实验修改物品页1120的元件的功能属性。

图13是示出与第一示例用户接口流程相关但由根据第四实验的自适应测试平台修改的第二示例用户接口流程1300的流程图。第二示例用户接口流程包括首页1110、物品页1120、购物车页1130和支付页1140。通过与第一示例用户接口流程1000比较,确认页1150不再显示。取而代之,先前使得确认页1150被显示的元件的操作改为使用户返回到首页1110。因此,通过第四实验修改支付页1140的元件的功能属性。

本文所公开的方法和技术提供了对用户接口的自动改进。在现有技术的系统中,管理员手动确定要测试的选项。此外,在整个测试过程中,接收每个选项的帐户的百分比是固定的。相反,通过使用本文所描述的系统和方法,能够实现用户接口元件的属性的自动变化,从而允许用户接口的连续自动改进。此外,接收正被测试的用户接口的版本的账户的百分比可以自动且动态地改变,从而减少在可以确认用户接口变化为改进并被部署到所有用户之前的时间量。

当这些影响被综合考虑时,本文描述的方法中的一种或更多种方法可以消除对某些工作或资源的需要,否则在测试用户接口的版本时将涉及这些工作或资源。可以类似地减少由(例如,在网络环境100内的)一个或更多个机器、数据库或装置所使用的计算资源。这样的计算资源的示例包括处理器周期、网络流量、内存使用、数据存储容量、功耗和冷却能力。

某些实施方式在本文中被描述为包括逻辑或多个部件、模块或机制。模块可以构成软件模块(例如,实施在非暂态机器可读介质上的代码)或硬件实现的模块。硬件实现的模块是能够执行某些操作的有形单元,并且可以以某种方式配置或布置。在示例实施方式中,一个或更多个计算机系统(例如,单机、客户端或服务器计算机系统)或一个或更多个处理器可以由软件(例如,应用或应用部分)配置为操作以执行如本文描述的某些操作的硬件实现的模块。

在各种实施方式中,硬件实现的模块可以机械地或电气地实现。例如,硬件实现的模块可以包括被永久配置成(例如,作为专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic))执行某些操作的专用电路或逻辑。硬件实现的模块还可以包括由软件临时配置成执行某些操作的(例如,如包括在通用处理器或其他可编程处理器内的)可编程逻辑或电路。应当理解,机械地、在专用和永久配置的电路中、或在临时配置(例如,由软件配置)的电路中实现硬件实现的模块的决定可以由成本和时间考虑来驱动。

因此,术语“硬件实现的模块”应当被理解为涵盖有形实体,是被物理构造、永久配置(例如,硬连线)或者临时或暂时配置(例如,编程)成以特定方式操作和/或执行本文描述的特定操作的实体。考虑硬件实现的模块被临时配置(例如,编程)的实施方式,硬件实现的模块中的每一个不需要在任一时刻处被配置或实例化。例如,在硬件实现的模块包括使用软件配置的通用处理器的情况下,通用处理器可以在不同时间被配置为相应的不同的硬件实现的模块。软件因此可以将处理器配置成例如在一个时刻处构成特定的硬件实现的模块,并且在不同的时刻处构成不同的硬件实现的模块。

硬件实现的模块可以向其他硬件实现的模块提供信息并且从其他硬件实现的模块接收信息。因此,所描述的硬件实现的模块可以被视为通信地耦接。在同时存在多个这样的硬件实现的模块的情况下,可以通过信号传输(例如,通过连接硬件实现的模块的合适的电路和总线)来实现通信。在多个硬件实现的模块在不同时间处被配置或实例化的实施方式中,可以例如通过将信息存储在多个硬件实现的模块可以访问的存储器结构中并且在该存储器结构中检索信息来实现这样的硬件实现的模块之间的通信。例如,一个硬件实现的模块可以执行操作,并且将该操作的输出存储在与其通信地耦接的存储器装置中。另外的硬件实现的模块然后可以在随后的时间处访问存储器装置,以检索并处理所存储的输出。硬件实现的模块还可以启动与输入或输出装置的通信,并且可以对资源进行操作(例如,信息的收集)。

本文描述的示例方法的各种操作可以至少部分地由被临时地配置(例如,通过软件)或永久地配置成执行相关操作的一个或更多个处理器来执行。无论是被临时地配置还是被永久地配置,这样的处理器可以构成进行操作以执行一个或更多个操作或功能的处理器实现的模块。在一些示例实施方式中,在本文中提及的模块可以包括处理器实现的模块。

类似地,本文描述的方法可以至少部分地处被理器实现。例如,方法的操作中的至少一些可以由一个或更多个处理器或处理器实现的模块来执行。操作中的某些操作的执行可以分布在一个或更多个处理器中,不仅驻留在单个机器中,而且跨多个机器部署。在一些示例实施方式中,一个处理器或多个处理器可以位于单个位置(例如,在家庭环境、办公室环境或服务器群内),而在其他实施方式中,处理器可以跨多个位置分布。

一个或更多个处理器还可以操作以支持在“云计算”环境中或作为“软件即服务”(saas)的相关操作的执行。例如,操作中的至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,api)访问。

示例实施方式可以以数字电子电路、以计算机硬件、固件或软件或者以它们的组合来实现。示例实施方式可以使用计算机程序产品来实现(例如,确切地嵌入在信息载体中例如机器可读介质中以用于由数据处理设备例如可编程处理器、计算机或多个计算机执行或控制其操作的计算机程序)。

计算机程序可以以包括编译语言或解释语言的任何形式的编程语言来编写,并且计算机程序可以以任何形式部署,包括作为单机程序或作为模块、子例程或适于在计算环境中使用的其他单元。计算机程序可以在一个计算机上或者在一个站点处或跨多个站点分布并通过通信网络互连的多个计算机上部署以执行。

在示例实施方式中,可以由一个或更多个可编程处理器来执行操作,一个或更多个可编程处理器执行计算机程序以通过对输入数据进行操作并生成输出来执行功能。方法操作还可以由专用逻辑电路系统(例如,fpga或asic)来执行,并且示例实施方式的设备可以被实现为诸如fpga或asic的专用逻辑电路。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络来进行交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在部署可编程计算系统的实施方式中,将理解的是,硬件和软件架构两者都值得考虑。具体地,将理解的是,是以永久配置的硬件(例如,asic)、以临时配置的硬件(例如,软件和可编程处理器的组合)还是以永久和临时配置的硬件的组合来实现特定功能的选择可以是设计选择。

在整个说明书中,多个实例可以实现被描述为单个实例的部件、操作或结构。虽然一种或更多种方法的个体操作被示出和描述为单独的操作,但是个体操作中的一个或更多个可以同时执行,并且不要求以所示的顺序执行操作。在示例配置中被呈现为分离部件的结构和功能可以被实现为组合的结构或部件。类似地,被呈现为单个部件的结构和功能可以被实现为单独的部件。这些和其他变型、修改、添加和改进落入本文主题的范围内。

虽然已经参照具体的示例实施方式描述了本发明主题的概述,但是在不偏离本公开内容的实施方式的较宽范围的情况下可以对这些实施方式作出各种修改及改变。仅仅为了方便,本发明主题的这样的实施方式在本文中可以单独地或共同地通过术语“发明”来指代,并且如果事实上公开了多于一个公开内容或发明构思,则并不旨在将本申请的范围主动限制为任何单个公开内容或发明构思。

本文示出的实施方式被足够详细地描述,使得本领域的技术人员能够实践所公开的教导。可以使用以及从本文示出的实施方式得出其他实施方式,使得可以在不偏离本公开的范围的情况下进行结构和逻辑替代和改变。因此,具体实施方式不应被认为是限制性的意义,并且各种实施方式的范围仅由所附权利要求以及被称为这样的权利要求的等同方案的全部范围来限定。

如本文所使用的,术语“或”可以被解释为包括性或排他性意义。此外,可以为在本文中描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、模块、引擎和数据存储之间的边界在某种程度上是任意的,并且特定操作在特定说明性配置的上下文中示出。功能的其他分配被预见并且可以落入本公开内容的各种实施方式的范围内。通常,在示例性配置中呈现为单独资源的结构和功能可以被实现为组合的结构或资源。类似地,呈现为单个资源的结构和功能可以被实现为单独的资源。这些和其他变型、修改、添加和改进落入由所附权利要求表示的本公开内容的实施方式的范围内。因此,说明书和附图应被认为是说明性的而不是限制性意义的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1