一些初步的想法

metric 是什么?

最近经常听见一些关于 metric 的讨论,很多时候实验使用的 metric 和实际还是有差异的,因此找到一个合理的 metric 来进行优化是很重要的事情。很多 internet 上的服务都需要进行 CTR 优化,点的比例越高往往说明这个东西越对用户有吸引力:

  • 对搜索引擎来说,高的点击率可能是由于 relevance 带来的,但是也很可能是别的原因
  • 对新闻浏览站点来说,高的点击率可能意味着重要的新闻,但是也很可能只是因为标题党

但是 CTR 会被非常多的因素所影响,

  • UI 对 CTR 的影响是显著的,比如放置在显著位置的 item 会平均拥有更高的 CTR,UI 对某些 item 增加了强调也可能导致 CTR 的变化
  • 常见的 modelling 可以 handle 的是 position bias

为此我们常用某些 model 来解释用户浏览的习惯,以期望消除各种因素对 CTR 造成的各种影响,获得某种“理想环境”下对某个点击概率的无偏估计(如给定 query 情况下 CTR 的估计反应某种 relevance)。这样一来 CTR 往往会作为我们评估某个应用的重要 metric。换言之,我们很多情况下直接拿 CTR 作为 exploit 的目标,对 IR 的结果进行 re-rank。

另外一些想法是取与 CTR 相关的值,比如广告里面的 eCPM、或者 per click 带来的 revenue 这些类似的概念。这并不是说 CTR 不好或者 eCPM 好,往往实际问题参与的对象并非唯一,如 search 除了用户,search engine 以外还有 advertiser。对用户来说 CTR 可能从某种程度已经反映了广告本身的 clickability(这往往表示某种 relevance),但是对 search engine 来说可能希望最大化自己的 revenue 而将 clickability 稍低但愿意多出钱的广告放在更前面一点。

因此明确 metric 其实需要第一对“谁的 metric”有个比较清晰的界定,第二需要与问题本身相关。参与者越多,我们拿到的 metric 其实越多,这个优化问题往往会因此变得更加错综复杂。

某些问题的 metric

对一个具体的应用来说,比如我们希望建立一个推荐系统,我们首先应该弄明白参与的对象:

  • 用户,主要目的是 consume content,share information 以及 kill time
  • publisher,主要目的是迎合用户的 information need,提供 content,并且伺机赚取 advertiser 的广告费用
  • advertiser,希望能精准的定位到自己需要的人群

那么对建立推荐系统的人(publisher)来说,很重要的是搞清楚自己的 user 的合理 metric:CTR 的确能够反应某种程度上的好坏,那么是否这是唯一的一个?用户停留时间,每个 session 的 page view,时间长度,还是 page view/time。有的 metric 看起来很美好,却在操作上很困难,比如停留时间,我们肯定没法直接在屏幕前监视用户看看他什么时候结束,我们只能用一些技巧性的东西来估计。有的东西和上下文相关,比如每个 session 的 page view,很可能前后的 page view 之间存在某些关联性。说来很简单的一个 user experience 却是复杂的,难以用一个指标来表述的。

实际情况下 UI/business logic design 和 science 介入并不在同一时间,各行其是的情况是大多数。这意味着每个角色是按照自己的 objective 来对最终的应用进行的考量,很可能某些极端情况下,两者是完全冲突的。个人比较倾向能将这些复杂的问题 decouple 开,然后 post-processing 的时候注意不要抵触前面的。但是也希望能看到三者能更好的 align 的用例出现。如果三个角色提出了自己的 objective 和 constraint 之后我们能够 jointly optimize,那是不是有可能给我们一个不错的解答呢?

按什么来 serving?

单一的 objective 会导致很简单的解。但的确一般不会很 work,比如按照 similarity 提供的结果必定 diversity 不高,那么有时候还得重新修正 objective。那么 serving 的机制是什么呢?是按照某个 objective 提供结果还是多个 objective 联合?单个 objective 有的时候比较容易对用户 justify,而多个有时候就不那么容易了。因为某些事情是不能说的。

其实总觉得很多问题下所谓的 personalization 其实是提高三赢的一个必须的策略,因为相当于对特定的用户量身定制了最合适的内容,这样对 user engagement 明显是有好处的,这样通过同样的技术投递的广告也会更加精准。传统的 serving 不考虑 user 的差异性,这样就会使得优化的时候是按照“大众”需要来进行定制内容,这样牺牲少数用户的体验获得主要的收益。因此,看起来 personalization 是一个救星!

但是 personalization 并不容易进行,往往我们有一些常用的 demographics 的特性帮助我们但并不是 domain-specific 的 user segments,这造成的后果是 segments 还是偏少,而且很不相关。通过 segmentation,我们相当于为特定的人群建立特定的估计,但是需要注意的是并不是每个 segment 上的估计是一样的准确的,很大程度上,先验用户的分布决定了估计准确的用户类型。比较笨的策略是将所有的 segmentation 的 cross product 上分别引入参数进行估计,但是这随着 segment 的细化很快出现参数过多,数据稀疏。最终我们得依赖 machine learning 建立起一些参数较少的 model,不论是 logistic regression 还是 GBDT 他们最后其实都是在拟合每个 segmentation 上真实的 CTR 或者类似的 metric,只是 linear additive model 和 nonlinear 的区别。

除了这种策略以外,莫过于使用 feedback feature。这类 feature 统计某些 segmentation 或者 cross segmentation 上的 stats,但一般并不使用非常多的 segments 进行 cross product,以保证统计仍然是比较合理的。统计出来的值通过 quantification 变成 binary feature,这看起来更像是讨论某个用户是否是某个 segment 上的 heavy user 一样,比如我们做 gender x age,获得的男性低龄用户或者女性高龄用户 CTR 高,他们可能通过 quantization 变成一个 feature,而其他的如男性高龄用户就变成另一个 feature。这帮助我们很快的将 segments 依照 CTR 之类的 metric 进行划分(inference 的时候可以直接根据 quantization 的结果来看看哪个 feature on 了)。这类 feature maybe 对于 CTR 预测真的有效(本身就是用 CTR 弄出来的),但是对于别的 metric 呢?

personalization 的作用从某个角度来说是在对 torso 或者 tail 部分的 improvement,个人感觉评估起来除了 overall CTR 的少量增加似乎并不会带来额外的很多很大的变化。这意味着做的人很花钱,很难做好,赚到的却并不是那么显著。对投资人来说,看起来怎么都不是一个好生意…

hmm… 哪天继续…

——————
And Abraham sojourned in the Philistines’ land many days.

Advertisements
一些初步的想法

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s