zoukankan      html  css  js  c++  java
  • 【点击模型学习笔记】Predicting Clicks_Estimating the Click-Through Rate for New Ads_MS_www2007

    概要:
    微软研究院的人写的文章,提出用逻辑回归来解决ctr预估问题,是以后ctr的经典解决方式,经典文章。

    详细内容:

    名词:
    CPC —— cost per click
    CTR —— click through rate

    1. 研究初衷

    搜索引擎主要靠商业广告收入,在广告位上面打广告,用户点击,之后广告商付费。在通用搜索引擎,通常广告位置是在搜索结果之前,或者在搜索结果右边。

    商业广告收入 = pClick * CPC

    要提升广告收入,关键问题是在有限的广告为上面,放什么广告?非常自然的想法就是,放用户可能点击的广告,而且放每次点击广告商付费多的广告,如上面公式所看到的。总而言之,计算广告的点击率就是问题的关键。

    一点常识:
    * 搜索广告平均点击率是2.6%。(个人记得展示广告的平均点击率比这个要低一个到两个数量级,能超过千分之中的一个就不错了)
    * 搜索广告的点击率和广告的展示位置关系很密切,通常排在第一个的广告的点击率要远超过排在后面几个的广告

    2. 问题抽象

    对于某个广告,要素:bid term(query命中这些term,则有机会展示这个广告)、广告本身、广告商等等
    当用户搜索的query命中了bid term的时候,此时会索引到一系列广告,计算这些广告在当前情况下(query、用户等)的点击率,而且依照点击率进行排序、展示。

    3. 朴素的想法

    用极大似然方式来预计点击率,即广告被点击的次数除以广告的总展示量。
    缺点:
    * 广告实际被点击的次数可能非常少,计算误差会比較大
    * 对于新广告,无法解决冷启动问题

    Regelson and Fain的方法:
    对于冷启动问题,这两个人用该广告bid term中的其它广告的ctr来对其进行预測


    4. 本文的方法

    整体思路:把点击率预測问题转换成机器学习问题,将详细广告、环境抽象成特征,用特征来进行达到泛化的目的,从而对冷启动中的广告进行预測。

    详细来说:

    p(click|ad, pos) = p(click|ad, pos, seen) * p(seen|ad, pos)

    当中,ad表示广告,pos表示展示位置,seen表示广告被用户看见。上述表示:用户在当前位置点击广告的概率等于用户在当前位置看到广告的概率及看到广告后点击广告的概率。对于上述概率进一步简化(在直观上作简化),得到:

    p(click|ad, pos) = p(click|ad, pos, seen) * p(seen|ad, pos) = p(click|ad, seen) * p(seen|pos)

    对于每一个广告位置,能够预计广告放在这里被用户看到的概率——非常多追踪眼球运动的装置能够发现用户观看搜索结果的情况——这样p(seen|pos)的值就能够预计出来。
    问题的关键转成计算p(click|ad, seen)的值。

    作者把概率预计问题转成回归问题(曲线拟合问题),只是用的是逻辑回归、而不是线性回归。对此,作者的解释是,逻辑回归(不考虑最后的阶跃函数来分类)将函数值映射到[0,1]区间,这个区间和概率的区间是一致的,所以就用它了。

    训练方式:
    对于某个广告,依据历史统计广告的经验点击率,并从广告和广告位等信息中抽取特征,有些是实值特征,组成<特征....,经验点击率>这种训练样本,用来进行训练。
    而如今实际经常使用的系统中,往往採用的是0-1特征,而输出值,也是0-1,表示这个广告在当前是否被点击。这样的话,随着广告被不断展示,可以不断进行增量训练。而原文作者这样的方式,仅仅能是积累了一段时间之后,又一次统计,生成新的经验点击率,然后再进行又一次训练。并且,原文这样的方式,不可以利用那些稀疏点击——否则依据MLE来预计的“经验点击率”会非常不准确(这也是本文要解决的问题),这时候会影响训练。

    数据选择:
    选择那些展示了100次以上的广告,进行训练。避免数据稀疏问题。

    评測方式:
    依照广告商来区分训练集和測试集——这样,训练集中的经验点击率用于训练,測试集中的经验点击率用于測试。
    两个评測标准:MSE和KL距离

    作者提道了一句:作者也尝试了回归树(MART: multiple additive regression trees),就像通用搜索做的那样,只是后来发现效果和逻辑回归非常接近,就採用逻辑回归了。

    5. 特征选择

    在模型确定之后,在deep learning延伸到这个领域之前,特征project就是最重要的——差点儿是唯一——的能够做的事情了。

    对于每个数值特征,假设count是c,则作者同一时候用了log(c+1)和c^2作为特征。作者把这些特征归一化到均值是0方差是1的正态分布中。

    5.1 term ctr

    和当前广告用同样bid term的广告的ctr,计算方式为:
    f = {alpha * average_total(ctr) + N(ad_term) * ctr(ad_term)} / {alpha + N(ad_term)}

    当中,average_total(ctr)是指训练集合中全部广告的总的ctr,N(ad_term)是指同当前广告具有同样term的广告的数目,ctr(ad_term)是指这些广告的平均ctr

    5.2 related term ctr

    对term ctr中的term进行扩展——字面意义上相关的term,如:red shoes 和 buy red shoes

    5.3 ad特征

    * 外观
    * 是否吸引眼球
    * 广告商信誉
    * 广告页面质量
    * 广告与query的相关性

    作者还用了unigram特征:选择1w个在广告title和正文中常常出现的词语作为特征。值得注意的是,作者以前用这些词的词频作为特征,来取代如今用的0-1特征,只是效果没有明显变化。

    5.4 广告的specificity特性

    基本假设是:假设一个广告是非常明白的针对某种类别的,如:衣服、鞋、等等,则这个广告更加easy被用户点击;相反,假设一个广告所针对的类别、受众的人群非常模糊,则不easy被用户点击。

    作者的做法是:通过bid term来作为搜索query,进行搜索,在搜索结果中作文本分类(伪相关反馈,不求精度,用NB就能够),用各个类别组成的熵来反映这个广告是仅仅针对某种特定的类别(熵非常小)还是面向非常多类别(熵比較大),将这个熵值作为特征加进去。须要注意的是,这个过程能够进行离线计算,不必在线计算。

    5.5 外部数据特征

    bid term在搜索引擎中返回的页面数量等等。由于这个数值差异比較大,作者没有进行通常意义上的归一化,而是把它bin化,即分成几个桶(20个),不同区间的数值映射到不同的桶中。


    6. 试验和讨论

    哪些特征比較好?或者说起到的作用比較大?
    作者单独用某类特征,取得的提高例如以下:
    (1)广告质量特征,提升12%;当中,广告词语的unigram特征就提升了10%
    (2)广告specificity特性,提升9%
    (3)搜索数据体征(外部数据特征)提升3%

    注意:
    1. 不可以依据特征的权重大小来决定特征的好坏,由于各个特征事实上不是独立的
    2. 某些特征(如:某些词)会对点击率起到非常正面的作用,此时有两个用处:(1)当广告上买bid term的时候,给广告商推荐这些词;(2)当某些广告商恶意的购买这些词的时候,通过该广告商广告的ctr的剧烈变化,能够侦測到这个情况,从而进一步处理。

    7. 未来工作

    引入term的相关词特征


  • 相关阅读:
    容器跨主机网络通信学习笔记(以Flannel为例)
    Kubernetes控制器Job和CronJob
    记一次使用Flannel插件排错历程
    Kubernetes控制器Deployment
    Kubernetes如何通过StatefulSet支持有状态应用?
    react18 来了,我 get 到...
    gojs 实用高级用法
    vuecli3 vue2 保留 webpack 支持 vite 成功实践
    calibre 报错 This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. 解决
    unable to recognize "*.yaml": no matches for kind "RoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3826332.html
Copyright © 2011-2022 走看看