本申请涉及数据处理技术领域,特别涉及一种预估用餐等候时间的方法及装置。
背景技术:
排队就餐已成为各大商业圈火爆餐厅的常态,为了规范排队秩序一般采用按照取号的顺序进行有序就餐,同时为了给用户带来更好的排队体验,一般在其取号单上标明前面还需等待的桌数。随着智能手机的普及和移动互联网的发展,基于线上取号线下用餐的新模式逐级成为主流,用户无需到达餐厅现场即可在线上取号,并根据当前等待桌数合理安排自己的行程。然而用户仅仅根据当前的等待桌数难以准确知道需要等待的时间,如何准确预估就餐前需要等待的时间是亟待解决的技术问题。
相关技术中,用餐等候时间的预估方案主要是基于统计模型,即以某一固定时间长度(比如5分钟)将全天划分为多个时间段,统计每个时间段内平均每桌所需的用餐等候时间。之后根据这一统计信息,计算用户当前每等待一桌所需时长,通过对所有等待桌数的等待时长累加求和得到当前用户所需的总等待时长。然而,该方案不仅需要在每次估算时重新统计分析用餐数据,估算效率低,而且无法基于用餐数据的动态变化及时调整估算参数,导致用餐等候时间预估不准确。
技术实现要素:
有鉴于此,本申请实施例提供了一种预估用餐等候时间的方法及装置、预估模型构建方法及装置,以解决现有技术中存在的技术缺陷。
本申请实施例公开了如下技术方案。
一种预估用餐等候时间的方法,包括:
获取当前用户的用餐数据,所述用餐数据至少包括桌型标识、用餐号码、需等候桌数、取号时刻、用餐地址标识;
基于当前用户的用餐号码、需等候桌数、取号时刻中至少之一,调用与所述桌型标识相对应的预估模型进行估算,以得到当前用户的用餐等候时间;
向当前用户提供所述用餐等候时间。
其中,所述方法还包括:基于模型树对历史用餐数据中取号时刻、需等候桌数及用餐号码中至少之一与用餐等候时间之间的关系进行最小二乘法线性拟合,经过训练得到树状结构的所述预估模型,所述树状结构中各叶子结点存储用于估算用餐等候时间的线性拟合参数。
其中,所述预估模型为树状结构,所述树状结构的各叶子结点存有用于估算用餐等候时间的线性拟合参数;所述基于当前用户的用餐号码、需等候桌数、取号时刻中至少之一,调用与所述桌型标识相对应的预估模型进行估算,包括:查找与所述桌型标识相对应的预估模型;基于当前用户的用餐号码、需等候桌数、取号时刻中至少之一在所查找到的预估模型的树状结构中查找当前用户所属的叶子结点,利用所述叶子结点存储的线性拟合参数以及当前用户的用餐号码、需等候桌数、取号时刻中至少之一进行估算,得到当前用户的用餐等候时间。
其中,所述树状结构的各结点上分别存储有边界阈值及其对应的数据标识,所述数据标识与用餐号码、需等候桌数、取号时刻中之一相对应;
所述基于当前用户的用餐号码、需等候桌数、取号时刻中至少之一在所述预估模型的树状结构中查找当前用户所属的叶子结点,包括:从所述树状结构的根结点开始沿所述树状结构执行如下处理:将当前用户的用餐号码、需等候桌数、取号时刻中对应当前结点上数据标识的一项与当前结点的边界阈值比较,如果大于所述边界阈值,则转向当前结点左分叉的分支结点,如果小于等于所述边界阈值则转向当前结点右分叉的分支结点,如此类推,直到找到无分叉的叶子结点,该叶子结点即为当前用户所属的叶子结点。
一种预估模型的构建方法,包括:
获取历史用餐数据,所述用餐数据至少包括桌型标识、用餐号码、需等候桌数、实际就餐时刻、取号时刻、用餐地址标识;
基于所述历史用餐数据,利用模型树构建对应各桌型标识的预估模型。
其中,所述基于所述历史用餐数据,利用模型树构建对应各桌型标识的预估模型,包括:将所述历史用餐数据按照各桌型标识进行分类,形成各桌型标识对应的历史用餐数据集合,分别利用各桌型标识对应的历史用餐数据集合通过模型树与最小二乘法构建相应的预估模型。
其中,所述利用模型树构建对应各桌型标识的预估模型,包括:基于模型树对历史用餐数据中取号时刻、需等候桌数及用餐号码中至少之一与用餐等候时间之间的关系进行最小二乘法线性拟合,经过训练得到树状结构的预估模型,所述树状结构的各叶子结点存储用于估算用餐等候时间的线性拟合参数。
其中,所述利用模型树构建对应各桌型标识的预估模型,还包括:针对所述预估模型的树状结构的相邻叶子结点,满足如下条件时将其合并:相邻叶子结点在合并前后通过预估模型得到的用餐等候时间预估值之间的预估误差小于等于预先设定的预估误差阈值。
其中,所述方法还包括:获取历史用餐数据之后,识别历史用餐数据中满足预先配置的清洗规则的数据并按照所述清洗规则执行清洗操作;所述清洗规则至少包括如下之一:包含两个取号时刻的用餐数据,将所述用餐数据中靠前的取号时刻清除;当前用餐数据中的实际就餐时刻在后一用餐数据之后,其中,所述后一用餐数据的用餐号码在当前用餐数据的用餐号码之后,则将当前用餐数据全部清除;当前用餐数据中的实际就餐时刻大于后p位用餐数据,其中,所述后p位用餐数据的用餐号码在当前用餐数据中用餐号码的后p位,则将当前用餐数据全部清除,p为不小于1的整数;当前用餐数据中的实际就餐时刻在前一用餐数据之前,其中,所述前一用餐数据的用餐号码在当前用餐数据的用餐号码之前,则将当前用餐数据全部清除;当前用餐数据中的实际就餐时刻小于前q位用餐数据,其中,所述前q位用餐数据的用餐号码在当前用餐数据中用餐号码的前q位,则将当前用餐数据全部清除,q为不小于1的整数。
一种预估用餐等候时间的装置,包括:
第一获取模块,获取当前用户的用餐数据,所述用餐数据至少包括桌型标识、用餐号码、需等候桌数、取号时刻、用餐地址标识;
调用模块,用于基于当前用户的用餐号码、需等候桌数、取号时刻中至少之一,调用与所述桌型标识相对应的预估模型进行估算,以得到当前用户的用餐等候时间;
提供模块,用于向当前用户提供所述用餐等候时间。
一种用于预估用餐等候时间的预估模型的构建装置,包括:
第二获取模块,用于获取历史用餐数据,所述用餐数据至少包括桌型标识、用餐号码、需等待桌数、实际就餐时刻、取号时刻、用餐地址标识;
构建模块,用于基于所述历史用餐数据,利用模型树构建对应各桌型标识的预估模型。
一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现上述预估用餐等候时间的方法的步骤。
一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现上述预估模型构建方法的步骤。
一种计算机可读存储介质,其存储有计算机指令,其特征在于,该指令被处理器执行时实现上述预估用餐等候时间的方法的步骤。
一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现上述预估模型构建方法的步骤。
本申请的技术效果至少可包括如下之一:
一方面,本申请通过调用与当前用餐数据中桌型标识相匹配的预估模型进行估算,不仅估算效率较高,而且对用餐等候时间的预估更加准确。
另一方面,本申请利用历史用餐数据构建对应不同桌型标识的预估模型,便于在需要预估用餐等候时间时直接调用相应桌型的预估模型进行估算,可有效提高估算效率、估算的稳定性以及预估的准确性。
附图说明
图1是本申请实施例计算设备示例性结构图;
图2是本申请实施例预估用餐等候时间的方法流程示意图;
图3是本申请实施例预估模型的树状结构示例图;
图4是本申请实施例预估模型构建方法的流程示意图;
图5是本申请实施例预估模型构建的示例性具体流程示意图;
图6是预估用餐等候时间的装置的结构示例图;
图7是本申请实施例预估模型构建装置的结构示例图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请中,提供了一种预估用餐等候时间的方法及装置、预估模型构建方法及装置,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110相连接。
虽然图1中没有示出,但是应该知道,计算设备100还可以包括网络接口,网络接口使得计算设备100能够经由一个或多个网络通信。这些网络的示例包括局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。网络接口可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi‐max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。计算设备可以通过网络接口访问页面。
在本申请的一个实施例中,计算设备100的上述以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,处理器120可以执行图2所示方法中的步骤。图2是示出了根据本申请一实施例的预估用餐等候时间的方法的示意性流程图,包括步骤201至步骤203。
步骤201,获取当前用户的用餐数据,所述用餐数据至少包括桌型标识、用餐号码、需等候桌数、取号时刻、用餐地址标识;
步骤202,基于当前用户的用餐号码、需等候桌数、取号时刻中至少之一,调用与所述桌型标识相对应的预估模型进行估算,以得到当前用户的用餐等候时间;
步骤203,向当前用户提供所述用餐等候时间。
本发明实施例的上述方法,对应同一餐厅用餐地址标识的不同桌型标识构建不同的预估模型,基于用餐数据中的用餐号码、需等候桌数、取号时刻中至少之一调用对应当前桌型标识的预估模型即可确定用餐等候时间,不仅估算效率更高、估算稳定性更佳,而且预估准确度也更高。
本发明实施例中,用餐数据可以包括桌型标识、取号时刻、需等候桌数、用餐号码、实际就餐时刻和用餐地址标识。具体来讲,对于已完成用餐的情况来说,用餐数据(即历史用餐数据)可以包括桌型标识、取号时刻、需等候桌数、用餐号码、实际就餐时刻和用餐地址标识。对于未完成用餐的情况来说(即需要预估用餐等候时间的情况),用餐数据可以包括桌型标识、取号时刻、需等候桌数、用餐号码、用餐地址标识。其中,桌型标识用于表征餐桌类型,桌型标识的个数及其具体标记形式可根据实际需要预先设定。比如,一般餐厅可设置双人桌、四人桌和超过四人的大桌,那么相应的桌型标识可以有三种,对应双人桌的桌型标识(比如,标记为s),对应四人桌的桌型标识(比如,标记为m),对应超过四人的大桌的桌型标识(比如,可以记为l)。取号时刻为相应用户在当前餐厅取得用餐号码的时刻值。需等候桌数表征对应同一桌型标识的预约就餐用户数,用餐号码表征当前用户在等候就餐队列中的次序。比如,某一用餐数据中的需等候桌数为5,用餐号码是9,取号时刻为11:30,则表明相应用户在11:30预约餐厅,在11:30分时需要等待5桌才能就餐,在该预约餐厅的等候就餐队列中排在第9位。
本发明实施例中,用餐等候时间可通过时刻和/或时长来表示。具体来说,用餐等候时间可以包括如下之一或两项:自取号时刻到就餐之间的预计时长、预计实际就餐时刻。除此之外,该用餐等候时间还可通过其他方式表示,对此,本文不予限制。
本发明实施例上述预估用餐等候时间的方法,还可以包括:基于模型树对历史用餐数据中取号时刻、需等候桌数及用餐号码中至少之一与用餐等候时间之间的关系进行最小二乘法线性拟合,经过训练得到树状结构的所述预估模型,所述树状结构中各叶子结点存储用于估算用餐等候时间的线性拟合参数。其中,所述树状结构的各结点分别存有边界阈值及其对应的数据标识,所述数据标识对应所述用餐号码、需等候桌数、取号时刻中之一,所述边界阈值表征相应结点的数据覆盖范围。
这里,模型树是基于分类回归树(classificationandregressiontree,cart)技术创建一种决策树,但叶子结点返回的不是具体某一数值或类别,而是线性回归模型,从而实现了对待拟合曲线(在高维空间中对应超平面)的分段线性拟合功能(由决策树部分实现对曲线的分段划分,由线性回归模型实现了对同一段曲线的线性拟合)。本发明实施例中,模型树的线性回归模型为下文公式(1)所示的最小二乘法线性拟合模型。
本发明实施例的一种实现方式中,步骤202中调用与所述桌型标识相对应的预估模型进行估算,可以包括:查找与所述桌型标识相对应的预估模型;基于当前用户的用餐号码、需等候桌数、取号时刻中至少之一在所查找到的预估模型的树状结构中查找当前用户所属的叶子结点,利用所述叶子结点存储的线性拟合参数以及当前用户的用餐号码、需等候桌数、取号时刻中至少之一进行估算,得到当前用户的用餐等候时间。当然,除此之外,调用预估模型进行估算的过程还可通过其他方式实现,对于调用预估模型进行估算的具体实现方式,本文不予限制。
上述实现方式中,所述基于当前用户的用餐号码、需等候桌数、取号时刻中至少之一在所述预估模型的树状结构中查找当前用户所属的叶子结点,可以包括:从所述树状结构的根结点开始沿所述树状结构执行如下处理:将当前用户的用餐号码、需等候桌数、取号时刻中对应当前结点上数据标识的一项与当前结点的边界阈值比较,如果大于所述边界阈值,则转向当前结点左分叉的分支结点,如果小于等于所述边界阈值则转向当前结点右分叉的分支结点,如此类推,直到找到无分叉的叶子结点,该叶子结点即为当前用户所属的叶子结点。当然,在所述预估模型的树状结构中查找当前用户所属的叶子结点时还可通过其他方式实现,对于在所述预估模型的树状结构中查找当前用户所属的叶子结点的具体实现方式,因树状结构而不同,对此本文不予限制。
图3为某一预估模型中树状结构的示例。该示例中,树状结构的每个结点通过下文式(1)的线性拟合模型构建,该树状结构包括五个结点:一个根结点、一个中间结点和三个叶子结点。其中,每个叶子结点上存储有不同的线性拟合参数(即下文所述的b、w1、w2、w3),这些线性拟合参数适用于不同的用餐数据,这些线性拟合参数的适用范围可基于根结点到相应叶子结点的路径所涉及的所有边界阈值而定。图3中,xi1_valj1为根结点的边界阈值,xi2_valj2为根结点左分叉的叶子结点的边界阈值,xi3_valj3为根结点右分叉的中间结点的边界阈值,xi4_valj4、xi5_valj5分别为中间结点两个分支上的叶子结点的边界阈值,这里,标识xi为数据标识,i=1、2、3,i为1时边界阈值对应用餐号码,i为2时边界阈值对应需等候桌数,i为3时边界阈值对应取号时刻。假设树状结构中的边界阈值分别取为:x11_valj1、x22_valj2、x23_valj3、x24_valj4、x35_valj5,此时,步骤202的执行过程可以包括:从根结点开始,先将当前用餐数据中的用餐号码与根结点的x11_valj1比较,如果用餐号码大于x11_valj1则转向左分叉的叶子结点,取该叶子结点存储的线性拟合参数(即(b、w1、w2、w3)2)估算当前对应当前用餐数据的用餐等候时间,如果用餐号码不大于x11_valj1则转向右分叉的中间结点,将当前用餐数据中的需等候桌数与该中间结点的x23_valj3比较,如果该需等候桌数大于x23_valj3则转向该中间结点左分叉的分支结点即叶子结点(b、w1、w2、w3)4,取该叶子结点存储的线性拟合参数(即(b、w1、w2、w3)4)估算当前对应当前用餐数据的用餐等候时间,如果该需等候桌数不大于x23_valj3则转向该中间结点右分叉的分支结点即叶子结点(b、w1、w2、w3)5,取该叶子结点存储的线性拟合参数(即(b、w1、w2、w3)5)估算当前对应当前用餐数据的用餐等候时间。
本发明实施例中,步骤203中向当前用户提供用餐等候时间的方式可以有多种。比如,可以将用餐等候时间发送至当前用户的用户设备上,用户设备向当前用户展示该用餐等候时间,当前用户即可及时查看到用餐等候时间。再比如,可以将用餐等候时间发送至餐厅的点餐终端,由点餐终端直接显示,供当前用户在到店之后查看,或者由点餐终端将该用餐等候时间转发至用户设备,用户设备通过相应餐厅的用户界面向用户展示,以便当前用户查看。除此之外,还可通过其他方式实现,对此,本文不予限制。
本申请一实施例还提供一种预估模型的构建方法,该预估模型用于预估用餐等候时间,如图4所示,可包括:
步骤401,获取历史用餐数据,所述用餐数据至少包括桌型标识、用餐号码、需等候桌数、实际就餐时刻、取号时刻、用餐地址标识;
步骤402,基于所述历史用餐数据,利用模型树构建对应各桌型标识的预估模型。
本发明实施例的一种实现方式中,所述基于所述历史用餐数据,利用模型树构建对应各桌型标识的预估模型,可以包括:将所述历史用餐数据按照各桌型标识进行分类,形成各桌型标识对应的历史用餐数据集合,分别利用各桌型标识对应的历史用餐数据集合通过模型树与最小二乘法构建相应的预估模型。除此之外,还可采用其他线性拟合模型与模型树结合来构建预估模型。对于构建预估模型时所采用的线性拟合模型的具体形式,本文不予限制。
本发明实施例的一种实现方式中,步骤402中基于所述历史用餐数据,利用模型树构建对应各桌型标识的预估模型,可以包括:基于模型树对所述用餐数据中取号时刻、需等候桌数及用餐号码中至少之一与用餐等候时间之间的关系进行最小二乘法线性拟合,训练得到树状结构的预估模型,所述树状结构中各叶子结点存储用于估算用餐等候时间的线性拟合参数,各结点分别存有边界阈值及其对应的数据标识,所述数据标识对应所述用餐号码、需等候桌数、取号时刻中之一,所述边界阈值表征相应结点的数据覆盖范围。除此之外,还可以采用用餐数据中的其他内容作为预估模型构建时的线性拟合参数,对于预估模型构建所使用的线性拟合参数的具体值,本文不予限制。
为避免因预估模型中树状结构的分叉过于繁杂而影响估算效率,还可在训练预估模型之后对预估模型的树状结构进行剪枝操作。本发明实施例的一种实现方式中,步骤402中基于所述历史用餐数据,利用模型树构建对应各桌型标识的预估模型,还可以包括:针对所述预估模型的树状结构的相邻叶子结点,满足如下条件时将其合并:相邻叶子结点在合并前后通过预估模型得到的用餐等候时间预估值之间的预估误差小于等于预先设定的预估误差阈值。这里,预估误差阈值的取值可根据实际应用场景的需求自由设定,举例来说,该预估误差阈值可以设为接近零的正数。此外,剪枝操作也可通过其他方式实现,比如相邻叶子结点合并的条件可以设置为其他形式,对于具体的合并方式、合并条件等,本文不予限制。
本发明实施例的一种实现方式中,为去除历史用餐数据中的噪声,确保最终构建的预估模型更准确可靠,还可在构建预估模型之前将历史用餐数据进行清洗。本发明实施例中,对历史用餐数据进行清洗的过程可以包括:识别历史用餐数据中满足预先配置的清洗规则的数据并按照所述清洗规则执行清洗操作。这里,所述清洗规则可以包括但不限于如下之一:
1)包含两个取号时刻的用餐数据,将所述用餐数据中靠前的取号时刻清除;
2)当前用餐数据中的实际就餐时刻在后一用餐数据之后,其中,所述后一用餐数据的用餐号码在当前用餐数据的用餐号码之后,则将当前用餐数据全部清除;
3)当前用餐数据中的实际就餐时刻大于后p位用餐数据,其中,所述后p位用餐数据的用餐号码在当前用餐数据中用餐号码的后p位,则将当前用餐数据全部清除,p为不小于1的整数;
4)当前用餐数据中的实际就餐时刻在前一用餐数据之前,其中,所述前一用餐数据的用餐号码在当前用餐数据的用餐号码之前,则将当前用餐数据全部清除;
5)当前用餐数据中的实际就餐时刻小于前q位用餐数据,其中,所述前q位用餐数据的用餐号码在当前用餐数据中用餐号码的前q位,则将当前用餐数据全部清除,q为不小于1的整数。
除此之外,还可采用其他清洗方式,对于数据清洗的具体方式,本文不予限制。
实际应用中,在等待就餐的过程中可能存在过号后再取号就餐的情况,比如,用户u取号为an,等待时间t1后,餐厅叫到an号,但当时用户u不在餐厅,就发生了过号情况,然后用户u并没取消就餐,而是在又过了时间t2之后再来就餐。此时,用户u实际的用餐等候时间为t1+t2,但其中的时间t2部分是由于用户u自己的原因导致,不是由于候餐本身所需要的客观时间,候餐实际所需的客观时间为t1。此时,用餐数据中如果包含用餐等候时间t1的取号时刻、用餐等候时间t2的取号时刻,则必然对预估模型的训练有较大的干扰,需要进行清洗。举例来说,用户a的用餐数据包括:实际就餐时刻t1和用餐号码1,用户b的用餐数据包括:实际就餐时刻t2和用餐号码2,用户b的用餐号码在用户a的用餐号码之后,用户b的实际就餐时刻t2应该在用户a的实际就餐时刻t1之后,但如果t1大于t2,就说明用户a属于过号的情况,此时可通过上述的清洗规则将用户a的用餐数据全部清除,用户a的用餐数据不参与预估模型的训练,以避免影响预估模型的准确性。再例如,用户a的用餐数据包括:实际就餐时刻t1、取号时刻1和取号时刻2,用户a的用餐数据包含两个取号时刻但仅有一个实际就餐时刻,显然用户a属于过号的情况,可以通过上述的清洗规则将用户a的用餐数据中靠前的取号时刻去除,比如取号时刻1在取号时刻2之前,那么将取号时刻1清除,但保留用户a用餐数据中的其他部分。
实际应用中,在等待就餐的过程中还可能存在插队的情况。举例来说,用户n1的用餐数据包括:实际就餐时刻t1和用户号码1,用户n2的用餐数据包括:实际就餐时刻t2和用户号码2,用户nm的用餐数据包括:实际就餐时刻tm和用户号码m(m为大于2的整数),如果tm在其前q个用户的用餐时间tm-q之前,说明用户nm为插队用户,将其用餐数据清除。其中,q可以预先设定,比如,可以设定为20。
实际应用中,上述清洗规则可以预先配置,具体的配置方式可以包括动态配置和/或静态配置。举例来说,静态配置可以包括预先将清洗规则写入存储器,执行清洗时从存储器或内存中直接读取该清洗规则即可;动态配置可以包括提供可视化用户界面,通过该可视化用户界面接收相关人员输入的清洗参数(比如,上文清洗规则中提到的q),基于所述清洗参数自动生成相应的清洗规则并写入存储器或内存。此外,清洗规则还可定期更新,更新方式与上述配置方式类似,不再赘述。
如图5所示,为本发明实施例中预估模型构建的示例性具体流程。该示例中,预估模型构建的具体流程可以包括:
步骤501,基于用餐数据包含的内容,确定用于训练预估模型的特征变量(x1,x2,x3)和目标变量y。一种实现方式中,可以将取号时刻、需等候桌数及用餐号码分别被作为三个特征变量x1、x2及x3,用餐等候时间作为目标变量y。
实际应用中,可以收集包含桌型标识的历史用餐数据,按照桌型标识将历史用餐数据进行分类,分类后某一桌型标识对应的历史用餐数据中对应于某一用户u的用餐数据可以记录为{y:(x1,x2,x3)},并将对应同一桌型标识的历史用餐数据分别划分为训练集、验证集和测试集。
步骤502,基于模型树(modeltree)对(x1,x2,x3)与y之间的关系进行拟合。
本步骤的一种实现方式中,具体拟合过程可以包括如下步骤:
第一,基于训练集{y:(x1,x2,x3)},对特征变量(x1,x2,x3)与y之间进行最小二乘法线性拟合,并计算出对应的预估误差e=sum(y-yhat)2,训练的目标是预估误差e越小越好。
一种示例中,可以按照下式(1)所示的线性拟合函数进行最小二乘法线性拟合:
yhat=b+w1*x1+w2*x2+w3*x3(1)
其中,yhat为y的拟合值,b为偏置量,w1、w2、w3分别为三个特征变量x1、x2、x3的权重值。具体应用中,公式(1)还可采用其他形式,例如,偏置量b可以选为平方项、指数项等。
第二,对训练数据集进行划分。以某一个特征变量xi(i=1、2、3)的某一个实际值xi_valj作为划分边界,将训练集划分为两组,例如,对应特征变量xi的值大于xi_valj的用餐数据划分到集合{left},对应特征变量xi的值小于等于xi_valj的用餐数据划分到集合{right},然后分别对集合{left}、{right}进行最小二乘法线性拟合,并计算出对应的误差eleft和eright。以此遍历训练集中每个特征变量(即x1、x2、x3)的每一个实际值,选择对应eleft+eright最小的xi_valj作为划分边界,对训练集进行划分。同理,再分别对划分后的集合{left}、{right}进行上述操作,不断迭代,直至划分后的集合中数据量小于预先设定的模型参数num,则停止对该训练集的划分操作。
这里,模型参数num是指树状结构中每个结点覆盖的样本点数量的最大值,该样本点是指一个有效的用餐数据。对于模型参数num的取值,可以根据具体应用的情况自由设定。例如,数据量大、数据噪声大时,模型参数num可以设为较大的值,如果数据量较小,模型参数num可以设为较小的值,比如,num可以设为50、40、30等。此外,同一预估模型还可多次训练,每次训练时选用不同的模型参数num。
这里,执行划分操作的过程中,每次划分时的判断条件可以包括:xi_valj,xi可以为x1、x2、x3中之一,为上文所述数据标识的一种示例,valj为当前次划分所生成的对应xi的边界阈值,该边界阈值通过上述训练自动生成。这里,每次划分会产生两个结点,这两个结点分别位于相应结点的左分叉和右分叉,可以是中间结点,也可以是叶子结点,划分操作中不同结点上的特征变量可以相同、也可以不同,如果不同结点上的特征变量相同(比如两个结点上都是x1),那么这两个结点上该特征变量的边界阈值肯定是不同的。
第三,最终根据训练得到的边界阈值xi_valj(i=1、2、3,j=1、2、……、m,m为不小于2的整数)形成一种树状结构,该树状结构中每个叶子结点上存储有经过训练得到的线性拟合参数(b,w1,w2,w3),由此,形成了预估模型h。
如图3所示,为树状结构的示例图。其中,不再分叉的数据集作为叶子结点,叶子结点存储对应的线性拟合参数(b,w1,w2,w3),该结构在机器学习算法上被称为模型树。模型树中每个结点记录一组参数值,在计算当前用户等待时长时在树状结构中找到对应的结点,利用该结点的参数值计算当前用户的用餐等待时间。
步骤503,基于验证集对模型树进行剪枝操作,以抑制过拟合情况。
一种实现方式中,本步骤的剪枝过程可以通过如下步骤实现:
第一,预估用餐等候时间;
具体的,根据某一用餐数据的具体特征变量(x1,x2,x3)的值,在预估模型h中找到对应的叶子结点,然后根据该叶子结点的线性拟合参数(b,w1,w2,w3),通过式(1)计算用餐等候时间的预估值yhat,式(1)的简化表达式如式(2)所示。
yhat=h(x1,x2,x3)(2)
第二,基于验证集,遍历每对相邻叶子结点的合并尝试,完成模型树的剪枝操作。
具体的,对于每对相邻叶子结点来说,可以根据用餐等候时间的预估值yhat,尝试将两个相邻的叶子结点合并(合并后叶子结点的线性拟合参数b,w1,w2,w3为合并前两个叶子结点的平均值),分别在合并前后对验证集进行预估,根据式(2)计算其用餐等候时间的预估值yhat,假设合并前预估误差为epre=sum(y-yhat)2,合并后预估误差为eafter=sum(y-yhat)2,若eafter-epre<es则合并,否则不合并。
其中,es属于模型参数,表示结点合并的预估误差阈值。实际应用中,es可以设为接近零的正数,比如,es可以设为零,此时只要eafter小于epre即将两个叶子结点合并。es设为0.1,那么只要eafter与epre的差值小于0.1即将两个叶子结点合并。
步骤504,基于测试集对预估模型进行测试。
基于测试集{y:(x1,x2,x3)}中的特征变量(x1,x2,x3),根据预估模型h以及式(2)计算出对应的用餐等候时间预估值yhat,以yhat与y之间的预估误差e作为预估模型h的性能指标,预估误差e越小,说明预估模型h性能越好,通过不断调整优化模型参数num及es并重复上述的训练、剪枝、测试,使yhat与y之间的预估误差e最小化,预估误差e最小时预估模型h即构建完成。
需要说明的是,上述构建过程中使用的历史用餐数据为一家餐厅的同一种桌型相关的历史用餐数据,即上述构建过程中是以对应同一桌型标识的历史用餐数据作为基础执行的上述训练、剪枝、测试的过程。比如,训练集可以是从对应该桌型标识的历史用餐数据中抽取70%;验证集可以是从对应该桌型标识的历史用餐数据中抽取20%;测试集可以是从对应该桌型标识的历史用餐数据中抽取10%。原则上,训练集、验证集和测试集不可交叉。实际应用中,使用不同桌型标识对应的历史用餐数据重复上述过程即可构建出对应不同桌型标识的预估模型h。
本申请一实施例还提供一种预估用餐等候时间的装置,如图6所示,可包括:
第一获取模块61,获取当前用户的用餐数据,所述用餐数据至少包括桌型标识、用餐号码、需等候桌数、取号时刻;
调用模块62,用于基于当前用户的用餐号码、需等候桌数、取号时刻中至少之一,调用与所述桌型标识相对应的预估模型进行估算,以得到当前用户的用餐等候时间;
提供模块63,用于向当前用户提供所述用餐等候时间。
这里,预估用餐等候时间的装置可实现上述预估用餐等候时间的方法的所有技术细节,在此不再赘述。
本申请一实施例还提供一种预估模型的构建装置,如图7所示,可包括:
第二获取模块71,用于获取历史用餐数据,所述用餐数据至少包括桌型标识、用餐号码、需等待桌数、实际就餐时刻、取号时刻、用餐地址标识;
构建模块72,用于基于所述历史用餐数据,利用模型树构建对应各桌型标识的预估模型。
这里,该预估模型的构建装置可实现上述预估模型构建方法的所有技术细节,在此不再赘述。
本申请一实施例还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现如前述预估用餐等候时间的方法的步骤。
本申请一实施例还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现如前述用于预估用餐等候时间的预估模型的构建方法的步骤。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述预估用餐等候时间的方法的步骤。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述用于预估用餐等候时间的预估模型的构建方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述方法的技术方案的描述。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。