太阁x微项目Ads Search System 总结


(sonyzh) #1

广告搜索使用情境

主讲Yin Zhang 首先用Google, Baidu搜索引擎举了个例子。当我们在搜索窗口输入一些关键字,在搜索窗口下方会出现一些相关的广告搜索结果。这些广告是从哪来的呢?

![](data:image/svg+xml;utf8,)

以LinkedIn 为例, 中小客户的广告策划可以在LinkedIn的广告账户,首先设计广告的内容和图标,用于搜索的关键字,预览在网络上看到的广告的效果。然后可以设定广告的面向人群,比如面向中国和美国的用户。然后选择竟投广告的付费方式, 按点击支付还是按千次浏览支付,每次支付多少钱。最后输入本次广告的预算金额。 当预算金额用光,广告就不会再显示了。

Ads Search System项目实现

XSearch 小组在上述的情境下,构建了一个广告投放平台。

![](data:image/svg+xml;utf8,)

前端采用了AngularJS + Bootstrap 做了一个普通用户的简洁搜索界面。后端采用Google App Engine, Google Cloud Storage 进行了数据的存储管理。

![](data:image/svg+xml;utf8,)

当用户输入点击搜索按钮。服务器经过Lucene的自然语言处理功能,从用户输入中提取出关键字(Query Parse),然后从数据库(Inverted Index)中提取含关键字的一部分广告,计算每个广告的排名得分(Scoring)。

Relevance Score= hitCount / keyWordSize

Quality Score= 0.75 * pClick + 0.25 * Relevance Score

Rank Score = Quality Score * bid

如上所示, 相关性(Relevance Score)指广告中找到的用户输入的关键字个数(hitCount)与自身设定的关键字个数(keyWordSize)的比值。广告品质主要取决于被点击的概率(pClick),同时也与广告与用户的相关性(Relevance Score)有关。(0.75与0.25为估计值。)广告的品质越好,广告的排名得分(Rank Score)越高,所需的投标费用(bid)会越低。

相关性过小(relevance score<0.3), 投标价格过低(bid<4.5)的广告从结果中删除。

选择排名分最高的几个结果(Select Top k)。

如果选出的几个广告有多个广告来自于同一个广告策划或相同的广告商,就只显示其中的一个广告(Dedup)。避免广告商自己的广告之间竞争。

至些我们已经选出了要返回给客户端的广告数据。将原始数据进行一些加工(Rendering)就可以返回给用户了。在这一步可以加入一些帮助跟踪用户点击广告和浏览广告的信息。这样当用户点击广告或浏览广告时,相应的行为就可以在服务器端进行统计。

根据最终选择的广告的品质分数,我们可以用Second Price Auction算法来计算使用了广告位的广告的合理定价,并更新广告策划(Campaigns)数据库。

业界的广告搜索系统

业界的广告搜索系统功能更为强大,除了XSearch包括的用户搜索关键字服务(Serving Platform)以外,还有一个对用户操作进行跟踪的服务(Tracking Platform)。

![](data:image/svg+xml;utf8,)

通过分析用户对广告的点击情和浏览情况,我们可以运用机器学习算法来修正广告被点击的概率,以及计算广告品质得分的公式中的各个参数的权重,得到更精确的排名结果和广告位定价。

在真实广告投放的过程中, 我们希望广告投放期间均均的使用完预算(Pacing), 同一客户在一段时间内点击或浏览同一广告的次数不能过多(frequency capping)。有了对用户操作的根踪服务以后就可以对这类问题进行处理。

最后根据用户的点击广告的情况,用户操作跟踪服务会及时的在预算耗尽前,将广告下架。

Ads Search System项目扩展

1. 广告索引的维护。广告策划会向数据库添加新的广告产生新的广告索引,原有的广告因为预算用完要从数据库中移除,如何将数据库的信息变化通知给应用程序?这需要利用后台线程对索引进行维护。一个可行的方案是采用对象变更通知的方法(Object Change Notification)。 应用程序作为客户端向数据库服务器发出监视数据变化的情求。当数据变更后,数据库服务器会通知应用程序,然后应用程序对得到的消息进行处理。

2. 进一步开发增加跟踪用户操作服务

1) 在用户关键字搜索服务的最后一步(Rendering), 加入一些帮助跟踪用户点击广告和浏览广告的信息。

2) 开发用户操作跟踪服务(Tracking Platform) 实现如下功能:

a. 按真实点击收费

b. 控制广告经费

c. 广告在一段时间内播放的频率的控制(Frequency capping)

d. 通过机器学习,进行用户行为的预测(Response prediction),比如更好的修正每个广告的点击率(pclick)

e. 均匀使用预算(Pacing)

本文作者:Zhihua Cai,更多精彩内容,欢迎访问官网 http://BitTiger.io 或关注 “论码农的自我修养” 微信公众号:bit_tiger