一种基于流式计算的全自动竞价优化方法及系统与流程

文档序号:11708376阅读:168来源:国知局
一种基于流式计算的全自动竞价优化方法及系统与流程
本发明涉及互联网广告领域内实时竞价广告(realtimebidding,rtb)的自动竞价策略优化,具体是一种采用基于流式计算技术,自动评估广告曝光机会的价值和权重,根据限定的广告预算,自动优化广告主收益的方法及系统。
背景技术
:程序化广告购买依靠数据分析技术,精确定位受众,并且在此基础上可实现广告的自动投放、评估和优化,它已成为国内外在线广告的一种重要趋势。实时竞价广告是程序化广告的主要形式。通过rtb广告交易所,广告主对每次广告曝光机会(展示机会)进行实时报价。一旦竞价成功,成功者的广告就会立刻展示给当前访客。需求方平台(dsp)解决广告主如何在交易所实时购买广告曝光的问题。它能够简化购买方式,提高购买效率。高效易用的dsp必须能在指定约束条件下,以最大化获利(点击、订单或者其他动作)为目标,自动优化竞价策略,把人的参与程度降到最低。要达成这个目标,需要从以下两个方面解决:a.定价机制:自动根据预算消耗情况和曝光机会的价值,快速调整定价,追求最大化收益。b.预算消耗控制:能自动根据市场波动,平滑预算消耗,从时间维度上,覆盖到尽可能多的高性价比的曝光机会。目前的相关研究和系统常见方法的缺点是:1.估计和优化定价机制的参数依赖大批量的历史投放数据,反应不灵敏。如果市场和预算发生波动,又得重新来一轮试投和估计,缺乏实际应用价值。2.定价机制包含在消耗节奏控制算法中,让定价机制变得缺乏灵活性。3.没解决在广告主目标收益最大化的要求下,如何自动组合,协调三个关键机制:广告曝光机会估值、定价、和消耗节奏控制,实现全自动竞价。附图说明图1是根据本发明实现的智子云opendsp的竞价引擎的总体结构,它是本发明的某个实施样例。引擎结构中包括了组成全自动竞价优化机制的全部过程。图2显示的影响广告曝光机会价值的四大因子类别。本发明根据曝光机会的价值确定价格水平。曝光机会的估值取决于各类影响因子的价值。图3描述的是本发明采用预算消耗控制进程,保障每个预算消耗窗内的消费,满足条件:a.总消耗不超过预算总额;b.消耗尽可能均匀分布在窗口期内。整个计算过程每隔固定时间执行一次。图4给出的是opendsp的某个版本实现的一个随机流量过滤样方法。这是发明的一个实施样例,用来辅助讲解本发明支持的流量过滤方法。图5显示的是根据当前询价请求、根据出价函数,为每个活动计算出价,价高者赢。这是opendsp的竞价引擎某个版本的实现过程。这是与发明出价过程的一个实施样例,用来辅助讲解本发明的原理。图6a是定价优化过程的描述。它根据流量价值和消耗节奏控制参数,以最大化活动收益(点击、注册或者订单)为目标,定期调整定价权重。这个过程每隔固定时间执行一次。图6b是定价优化过程的一部分,根据已确定的权重调整方向,确定每个价值分段的调整幅度,并搜索权重调整的终点价值分段。技术实现要素:我们将基于智子云opendsp产品的竞价引擎讲解本发明的各项特征和方法。opendsp的竞价引擎只是本发明的一个实施案例,技术细节只用于清楚完整地阐述本发明的特征和方法,而不是限制该发明的实施方法。基于本发明的特征和方法,本领域内技术人员所获得的所有其他实施例,都将属于本发明保护的范围。整个发明的保护范围在权利要求书中有完整描述。1.opendsp竞价引擎作为本发明的一个实施样例,图1是opendsp的某个版本的竞价引擎的总体结构,其中灰色标记的不属于竞价引擎。100代表输入给竞价引擎的四个主要的活动配置:目标访客、创意素材、活动需求和约束、交易渠道。数据库125存储来自竞价服务145的竞价日志和来自其他系统的日志,包括但不限于:点击日志、网站浏览日志、订单日志等。竞价引擎基于各种日志反馈,组合和协调三个过程实现自动寻优的功能,这三过程分别是:定价优化(115)、消耗节奏控制(130,budgetpacing)和竞价服务(145)。分区估值(105)根据反馈的各种日志、访客标签或者价值,计算和评估影响曝光机会价值的各种因素,并把计算的分区价值(标记为seg_v)存储在分区价值数据库(110)中,然后推送seg_v给动态出价(150)。外部系统(比如数据管理平台,dmp)为目标访客定义标签,例如,“购物喜好→高端手机”。本发明允许每个标签附加有一量化值,通常代表转化或者点击可能性的高低。定价优化(115)根据来自数据库(110)的分区价值和消耗节奏控制(130)的参数反馈,以最大化活动收益(点击、注册或者订单)为目标,定期调整定价权重(记为vsect_w),推送到流量价值分段库(120)中,然后同步vsect_w给动态出价(150)。进程140实时在线统计每个活动的费用消耗情况,存储在数据库(135)中,供给消耗节奏控制(130)使用。过程130根据实时消耗统计数据,计算两个控制参数:流量选择概率p和消耗比例d。前者会被流量过滤(155)使用。参数p和d也会进入日志数据库(125),被统计后,反馈给定价优化(115)。这些统计指标有:1.平均流量选择概率avg_p,2.平均消耗比例avg_d,3.曝光价值分段消耗占比vsect_c。竞价服务(145)根据输入数据和参数,执行既定的竞价规则。在本发明中,它是竞价策略的执行者,不具备优化能力。本发明通过调整输入竞价服务的数据和参数,优化竞价策略。竞价服务包括两个关键的过程:动态出价(150)和流量过滤(155)。过程150根据出价函数和当前的询价请求r,解析并读取对应的分区价值(seg_w)和定价权重(vsect_w),确定当前曝光机会的价格。155根据流量选择概率p,过滤广告曝光机会。160代表rtb交易所。它发送询价请求r给竞价服务(145),经过流量过滤(155)和动态出价(150)后,竞价服务会给交易所发送广告创意和价格。其中询价请求r是每次广告曝光需要竞价时发送给dsp的消息,dsp必须在规定的时间内响应,否则视为弃权。在处理询价请求前,dsp必须结构化(解析和转化)询价请求,才能应用竞价策略,确定一个合理的价格。询价请求可以结构化定义为:<user_id,context_set>user_id是访客的id。web广告便是存储在cookie中的id,而移动广告则是移动设备的id。context_set是name:value对的集合。大小是k>0的context_set定义为:{name1:value1,name2:value2,…,namei:valuei…,namek,valuek}namei是conext中数据项名称,比如地理区域名、媒体、广告位、app名、操作系统、分辨率、界面语言等;valuei是数据项namei的值。2.分区规则影响因子本发明根据曝光机会的价值确定价格水平。曝光机会的估值是基于各类影响因子的。图2是影响曝光机会价值(240)的四大因子类别。这些类别解释如下:a.频次(230):除了广告曝光次数,其中还包括其他相关行为,比如点击和购买。b.媒体(200):展示广告的地方,例如,网站和app。甚至细化到每个显示广告的区域。c.曝光上下文context(210):与访客当前行为相关的信息,比如地理位置、时间、采用浏览器、设备型号等。从广义上将,媒体是context的一部分。为了方便描述,后续说明单列媒体,而不是把它们归属到context。d.人群(220):广告针对的访客。流量分区(ais)和划分规则流量分区ais(adimpressionsegment,简称分区)是根据某个因子,对曝光机会流量的一个划分或者分类。某个因子的分区允许出现流量重叠。本发明不限定ais的划分规则,具体可以由实施者根据具体情况确定。opendsp的某个版本的使用到常见划分方法有:a.人群b.媒体c.频次d.曝光上下文context3.分区估值本发明的一个关键特征是为每个分区(ais)评估价值。图1中的分区估值(105)根据反馈的各种日志、访客标签或者价值,计算和评估影响曝光机会价值的各种因素,并把计算的分区价值(标记为seg_v)存储在数据库(110)中。虽然本发明不限定量化价值的具体过程,但是限定a.量化方法必须用流式增量统计方法实现。流式是指只需要扫描一遍日志文件或者数据表;增量方法是指,计算价值的时候,只用新增的日志,不需要回溯历史日志。b.量化的价值必须规范化到小数。代表与当前平均水平相比,提升或者降低的幅度。例如,0代表与平均水平持平,0.5代表,提升50%,-0.5代表下降50%。实施者可以根据不同的需求定义收益和消耗。常见定义有:需求收益消耗最大化点击数点击数竞价费用最大化到达数到达数竞价费用最大化订单数订单数竞价费用最大化收入订单收入竞价费用对于某个分区s,opendsp的某个版本的分区估值通用规则是:seg_v(s)=s的近期收益/s的近期消耗4.实时消耗统计图1的实时消耗统计进程(140)实时统计每个活动的每个时间片的费用消耗数据,提供给消耗节奏控制算法使用。时间片的大小代表着预算控制精度。5.消耗节奏控制图1中预算消耗控制进程(130)的目标是保障每个预算消耗窗内的消费过程,满足以下条件:a.总消耗不超过预算总额;b.消耗尽可能均匀分布在窗口期内。预算消耗控制的主要功能是是计算流量选择概率p,竞价服务的流量过滤模块会根据p值过滤(或者采样)曝光机会。每天的投放的时间平均切分成多个预算控制窗口,总预算也平均分配给每个预算控制窗口。系统定时计算实际每秒消耗的预算与预定每秒消耗的预算的比值:消耗比例d,用来调控p。d越大,流量选择概率p越小;反之,流量选择概率p越大。计算过程定义如图3示。整个计算过程每隔固定时间执行一次。执行间隔=预算控制窗口长度/m,m是一正整数。m越大,控制越精细。在调用前系统自动计算好310的各项输入,存储在内存中。ps是当前系统使用的p值,ps+1是下一个结算周期使用的p值。320判定是否还未开始结算,如果是,在340采用默认的p值和d值;如果不是,则采用以下更新d和p值:d←(b*l)/(t*b)(公式1)ps+1←min(ps/d,1)(公式2)最后系统在360把所有计算值记录到日志中,并根据ps+1更新当前预算控制窗口采用的p值。6.流量过滤图3消耗节奏控制过程计算出的参数,保持在推广活动数据中。图1的流量过滤(155)读取这些参数,过滤掉超量的广告曝光,从而控制预算消耗。本发明并不规定具体的过滤方法,只规定总体的流量采样比例要达到p值要求既可。通常有两种方法:1.根据p值随机过滤,不考虑分区价值;2.根据p值和广告流量的价值,偏向性过滤。图4给出的opendsp的某个版本实现的一个随机过滤样方法。如果460返回的是false,系统则放弃后续的竞价。在步骤440中,系统根据当前的p值,判定是否过滤当前的询价请求。7.动态出价根据分区(ais)的价值动态定价,其核心是出价函数。曝光价值预测设r是一个结构化的曝光请求,以下是曝光价值预测函数:(公式3)1)f是影响因子数,i是某类影响因子。2)seg_id,解析竞价请求r,获得i类影响因子的分区标识。3)seg_v,获取i类影响因子的某个(流量)分区的价值。4)β[i],是i类影响因子的权重。本发明不限定β[i]的确定方法。在opendsp的一个实现版本中,β[i]固定是1;另外一个实现版本中,β[i]会采用历史投放数据,采用线性回归的方法定期优化。曝光价值分段预测出的曝光价值,按照某种单调增函数(记为vsect_index)分段。vsect_index映射实数到一个连续的整数区间。opendsp的一个实现版本采用[1,n]整数区间,采用长度n的递增序列<v1,v2,…,vn>来划分,其中任意i>j,则vi>vj。vsect_index的定义如下:后面我们用函数vsect_v(i)=vi来代表根据索引i来检索第i区段的曝光价值。出价函数出价函数融合了所有因子的影响,计算的值实际是多种因素权重的乘积。设r是一个结构化的曝光请求,以下是统一出价函数bid_fun的定义。min{base·vr·vsect_w[vsect_index(vr)],max_b}(公式5)其中1)base是基础价格,是一个预先设定的大于0的常数。2)max_b是最大的价格,即价格帽,大于0;3)vr是r的流量价值预测价值(公式3)。4)vsect_index是分段函数(公式4)。5)vsect_w是定价权重数组,由定价优化过程计算。长度是分段函数最大值n。出价过程根据当前询价请求、根据出价函数,为每个活动计算出价,价高者赢。opendsp的竞价引擎某个版本的实现过程如图5示。其中540返回的是出价响应,它是<价格,创意>的二元组,如果价格是空(用null)表示dsp不参与竞价。步骤530对每个活动调用query_campagin,它根据公式3,4,5计算出计划ai的价格,然后和创意一起返回。系统则根据价格高低,选择价高的响应。8.定价优化图6a是自动调整定价权重数组vsect_w的计算方法。系统每隔固定时间执行一次,间隔一般是预算消耗控制算法执行间隔m的倍数。在图6a的601中接受的参数有:1.min_p:最小的平均流量选择概率;2.min_d:最小的平均消耗比例概率。每次执行前,在605必须统计好三项数据:1.avg_p:从日志中获取最近一段时期的平均流量选择概率;2.avg_d:从日志中获取最近一段时期的平均消耗比例;3.vsect_c:从日志中获取最近一段时期的每个曝光价值分段的消耗占比,也就是属于这个分段的曝光产生的费用占整体的比例。如果满足条件610,则表明系统已经选择了大部分的流量,但是平均消耗比例还是偏低,需要提升价格水平。如果不满足610的条件,则需要检测615的条件。如果615的条件满足,则表明平均消耗比例达到了高点,但是已经过滤掉太多的流量,整体出价偏高,需要降低价格水平。620计算提升的幅度,采用公式g←(min_d-avg_d)/min_d(公式6)公式计算的结果介于0到1之间。625计算下降的幅度,采用公式g←(min_p-avg_p)/min_p(公式7)公式计算的结果介于0到1之间。调整幅度计算完成后,调用图6b的adjust_vsect_w过程。在步骤630中,调整方向是从n到1提升权重,在步骤635中,从1到n降低权重。图6b的640接收的是一个调整幅度g和调整方向sp。根据645的判定,负的幅度,代表要降低权重,正的要的提高权重。650设定从预测权重低到高调整vsect_w元素的权重,655则设定从高到低降低vsect_w元素的权重。图6b的660则根据设定调整方向,从起点尝试搜寻一元素,当前累计权重调整幅度,正好与g相近。每次搜寻从起点更新元素的权重值直到当前元素k。如果是提高权重,第i个分段的调整权重的公式是:b(i)←min[vsect_v(i)/vsect_v(k)*z(i),l](公式8)w(i)←w(i)*[1+b(i)](公式9)其中l是最大幅度;如果是降低权重,第i个分段的调整权重的公式是:b(i)←min[vsect_v(k)/vsect_v(i)*z(i),1](公式10)w(i)←w(i)*[1-b(i)](公式11)其中每次搜索前,w是vsect_w的一个复制,但是计算结束后把w复制到vsect_w。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1