您的位置:首页 > 其它

Mining Massive Datasets课程笔记(五)Web广告

2015-10-27 00:44 246 查看

Online Algorithm

通常的算法工作流程是,输入数据全部准备好了,我们能随时访问到所有的数据然后进行处理,从而输出结果,这类算法称之为”离线“算法(Off-line)

但是,有时候我们并不能获取全部数据,或者数据太大且有时间要求,需要在当前数据达到时作出应答,如前面课程中的流数据。这类算法称为”在线“算法(Online),在线算法与data Stream Model有些类似但并不完全相同。

二分图匹配问题(Bipartite Matching)

我们首先从二分图的匹配问题来了解在线算法。

完美匹配:给定一个二部图,一个匹配是指的由边构成的自己,对于这些边任何节点都不会同时是两条或多条边的端点,如果所有节点都出现在某个匹配中,则该匹配为完美匹配。



匹配问题也就是找到对于给定二分图的最大匹配,存在有完美匹配更好。在离线算法中,有一个多项式时间的算法,Hopcroft-Karp算法可以实现最大匹配问题。

Online Graph Matching Problem



贪心算法(for the online graph matching problem)

可以按照任意次序来考虑边,当考虑边(x, i)时,如果x, i 都不是已有匹配中的端点,则将该边加入匹配,否则跳过。

竞争率

对于输入I,假设最大匹配的贪心算法得到的匹配为Mgreedy ,而理想匹配是Mopt, 则竞争率为:

Competitive Ratio=minall possible inputs I(|Mgreedy||Mopt|)

也就是贪心算法在所有可能的输入情况下的最差结果。

Analyzing the Greedy Algorithm

G表示在理想匹配中存在,但在贪心匹配中不存在的右节点的集合,B表示G中素有节点的邻接边的左节点的集合。易得:





由于算法的竞争率是在算法在所有可能的输入下所得到的最小值和最优结果的比值,因此竞争率的上界也是1/2,因此,竞争率正好是等于12 的。

The AdWords Problem

下面我们看在线算法在搜索广告上的一个应用——Adwords 问题。我们关注的是对于给定的搜索条目应该显示哪些广告。

Adwords Problem



这个问题和上一节讲到的二部图的最大匹配问题类似,左节点是查询的条目,右节点是广告商。不过这里需要最大化的是搜索引擎商的收益。很显然这也是一个在线算法的问题。

一次广告选择的收益是每个选出广告的价值之和,而每条广告的价值等于对应查询的出价和广告点击率的乘积。



因此对候选广告的排序采用的是收益排序而不是出价的排序。

因此对Adwords问题的定义如下:

给定如下信息:



对每个搜索查询,算法会给出一些列广告商的展示结果集合,该结果满足:

该集合的大小不会超过上述每条查询所显示的广告数目上限

该集合中的每个广告商都对本条搜索查询出价了

每个广告商必须剩余足够的预算来为广告点击付费

对于上述过程仍有一些问题需要解决,首先,我们开始是没有广告商在对应搜索的点击率的,我们应该如何计算这个点击率呢?

Estimating CTR (clickthough ratio)



还有一个问题是:advertisers have limited budgets and bid on multiple ads。下节的balance Algorithm将处理该问题。

The Balance Algorithm

首先我们对Adwords问题的设定进行一个简化:



简化后我们先来看下最简单直接的贪心算法的处理:

对每次搜索,贪心算法会选择出价为1的广告商,该算法的竞争率为12

Example:



Balance Algorithm

对贪心算法的改进,使得竞争率为34 。

对于每次查询,选择出价最高且剩余预算最多的广告商。如果多个广告商剩余预算相同,则任意挑选一个。

再看同样的例子,balance 算法的处理结果:



Analyzing 2-advertiser Balance

Generalized Balance

Ref:

https://class.coursera.org/mmds-003/lecture

《大数据:互联网大规模数据挖掘与分布式处理》

From:

http://blog.csdn.net/sherrylml/article/details/49404863
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: