可扩展机器学习——分类——点击率预测(Click-through Rate Prediction)

注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的PPT可见参考文献的链接。这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图也是引用的原来的教程,若内容上有任何错误,希望与我联系,若内容有侵权,同样也希望告知,我会尽快删除。这部分本应该加上实验的部分,实验的部分在后期有时间再补上。

可扩展机器学习系列主要包括以下几个部分:

概述 - Spark分布式处理 - 线性回归(linear Regression) - 梯度下降(Gradient Descent) - 分类——点击率预测(Click-through Rate Prediction) - 神经科学

五、分类——点击率预测(Click-through Rate Prediction)

1、在线广告概述

1、典型的大规模机器学习问题

在线广告是典型的大规模机器学习问题,主要是因为:

  • 在线广告问题很复杂,需要收集大量的数据。
  • 数据量巨大:
    • 大量的用户在使用互联网,产生了大量的数据
    • 很多的带标签的数据

2、在线广告的参与者

在在线广告的活动中,主要包括如下的一些参与者:

  • 出版人(网站的拥有者),如NYTime,Google,ESPN。指的是将广告展示在他们的网站上以获得利润的人。
  • 广告商。
  • 媒介,如Google,Microsoft,Yahoo。连接网站拥有者与用户。
  • 用户。

用户是我的补充,通常再上述的参与者中,出版人和媒介属于同一个。

3、为什么广告商要付钱

通常,一个网站上的广告会产生如下的两种的效果:

  • 展示:让某些信息触达到目标用户
  • 效果:在展示的同时,用户会产生一些行为,如点击,购买等等

因此,展示广告的同时为商家带来了利润。

4、在线广告计算的核心问题

在线广告是一个多方博弈的过程,参与者包括广告商,平台,受众,关系如下图所示:

平台连接着广告商与受众(上图中的蓝色),因此如何高效地连接广告商与受众称为一个重要的问题,问题可以表述为:预测一个用户对于每一条广告的点击概率,并且选择最大概率的广告。数学过程可以表述为估计如下的概率:

P(clickpredictive feature)

即在给定预测的特征的条件下预测用户的点击概率。其中,预测特征包括:

  • Ad’s historical performance
  • Advertiser and ad content info
  • Publisher info
  • User info (e.g., search / click history)

5、特征数据的特点

平台每天可以获取巨大的量的展示数据,但是这些数据通常具有如下的特点:

  • 高维(high-dimensional)
  • 稀疏(sparse)
  • 有偏的(skewed):只有少数的广告会被点击,大量是未被点击的数据,正负样本极不均衡。

6、在线广告的目标

在上述的广告计算的核心问题中,需要计算一个概率,这个概率具体可以表述为:

P(clickuser,ad,publisherinfo)

2、线性分类器和Logistic回归

1、分类(Classification)

分类问题(Classification)是指通过训练数据学习一个从观测样本到离散的标签的隐射,分类问题是一个监督学习问题。典型的例子有:

  • 垃圾邮件的分类(Spam Classification):观测样本是邮件,标签是每个邮件是否是垃圾邮件({spam, not-spam})。这是一个二分类问题,目标是根据这些带标签的样本,预测一个新的邮件是否是垃圾邮件。
  • 点击率预测(Click-through Rate Prediction):观测样本是user,ad和publisher的特征,标签是是否被点击({not-click, click})。这是一个二分类问题,目标是根据这些带标签的样本预测一个新的user-ad-publisher三元组是否会被点击。

2、线性分类器(Linear Classifier)

决策边界如下图所示:

3、线性分类器的评价

在回归问题中,预测值和标签是连续值,因此在评价中,计算的是标签与预测值之间的接近程度,可以使用均方误差(Squared Loss)。但是在分类问题中,类别是离散值,可以使用0-1损失(0-1 Loss)。

0-1损失是指若预测正确,则实行0惩罚,否则实行1惩罚。0-1损失的形式与图像如下所示:

其中,y∈{−1,1}。

4、线性分类器的学习方法

问题:0-1损失函数是很难优化的,因为0-1损失函数是一个非凸的函数。

5、0-1损失函数的近似表示

对于上述的0-1损失函数,由于其是一个非凸的函数,因此很难对其进行优化,解决的办法是利用一些凸函数近似表示0-1损失函数,常见的分类模型及其损失函数如下所示:

  • SVM:hinge损失
  • Logistic回归:logistic损失
  • AdaBoost:exponential损失

各种损失函数如下图所示:

6、Logistic回归的优化

3、Logistic回归的概率解释

1、将输出转换成概率

其图像为:

2、利用概率值进行分类

3、设置不同的阈值

对于垃圾邮件的分类应用,可以对其建模为:

P[y=spamx]

对于垃圾邮件的检测问题,有两种预测错误的情况:

  • 将非垃圾邮件判定为垃圾邮件(False Positive, FP)
  • 将垃圾邮件判定为非垃圾邮件(False Negtitive, FN)

对于垃圾邮件的检测问题来讲,将非垃圾邮件判定为垃圾邮件比将垃圾邮件判定为非垃圾邮件带来的后果更加严重,因为这样会错过一些比较重要的邮件,因此在这样的请款下,为了保守,我们可以设置大于0.5的阈值。

4、ROC曲线

ROC曲线是根据FPR(False Positive Rate)和TPR(True Positive Rate)画出来的一条曲线,其中,横轴为FPR,纵轴为TPR。FP在上面已经介绍过,TP(True Positive)指的是将垃圾邮件判定为垃圾邮件。ROC曲线如下图所示:

上图中的虚线表示的是随机预测的情况,左上角的位置表示的是最好的情况,即没有将非垃圾邮件判定为垃圾邮件,而且垃圾邮件都被判定出来。通过调节阈值,我们可以得到这样一条曲线。

4、类别数据和one-hot编码

1、数值型数据和非数值型数据

在上述的线性回归以及logistic回归中,数据的形式通常是数值型的,下图中列举了一些数值型数据的情形:

还有一些非数值型数据的情形:

在广告的点击率预测中,有很多的特征是非数值型的数据,如: - 用户特征:性别,国籍,职业······ - 广告商/平台特征:行业,位置······ - 广告/网站特征:语言,文本,目标受众······

2、非数值型特征的处理方法

通常有两种方法处理非数值型特征的机器学习问题,第一种是选择支持这些类型特征的机器学习方法,如

  • 决策树(Decision Trees)
  • 朴素贝叶斯(Naive Bayes)

第二种方法是将这些特征转换成数值型特征,这样便可以使用适用于数值型特征的学习方法来处理这些问题。

3、非数值型特征的分类

对于非数值型特征,主要分为以下两种:

  • 类别特征(Categorical Feature)
  • 序列特征(Ordinal Feature)

对于类别特征,通常包括两个或者多个类别,在类别之间没有内定的次序,如性别,国籍,职业,语言等等;对于序列特征,通常包括两个或者多个类别,在类别之间有明显的内定的次序,但是在类别之间没有固定的间隔,只是一种相对的次序,如常见的在调查问卷中的问题,如“你的身体是否健康:不好(poor),一般(reasonable),好(good),非常好(excellent)”。

4、非数值型特征转换为数值型特征

非数值型特征转换成数值型特征通常有如下一些处理的方法:

  • 为每一个非数值型特征赋值。

如对于序列特征:

对于类别特征:

  • 使用One-Hot-Encoding。

如下:

5、One-Hot编码的计算和存储

对于One-Hot编码,通常是由以下两步完成:

  • 生成One-Hot编码的字典。
  • 利用字典生成特征。

对于下面的例子:

第一步是生成One-Hot编码的字典,在特征的列表中一共有77种特征。此时,将所有的特征都转换为一个数字,如下所示:

对于上述实现的字典,其实在字典中每一个key代表的是具体的特征,而value则对应了在One-Hot编码中的下标,对于如下的数据:

对于数据A1,其第一个特征”mouse”在字典中的value为:

则在One-Hot编码的序列中,对应的下标为22的位置上标注为11,如下所示:

对于One-Hot编码生成的特征的表示方法通常是稀疏的,如上的One-Hot编码所示。在这样的情况下,存储这样的稀疏序列通常是比较浪费的,可以通过key-value的形式存储,如下:

A1=[(2,1),(3,1)]

这样,只存储了非零项。

5、Hashing策略

5.1、One-Hot编码存在的问题

上述的One-Hot编码的策略可以有效地转换离散型的特征,但是,One-Hot编码一个明显的缺点就是在转换后的One-Hot编码串会变得很长,总的长度等于离散特征的个数,若是离散特征的个数特别多的情况下,这个One-Hot串就会特别长。这样的模型如同“Bag Of Words”模型一样,在Bag Of Words中,通过词典的形式表示一篇文章,如下图所示:

对于One-Hot编码,主要存在两个问题:

  • 不方便学习
  • 计算成本较大

5.2、解决的方法

对于One-Hot编码存在的上述的问题,可以有如下的解决方法:

  • 丢弃掉稀有的特征。这样的方法通常会丢弃掉一些有用的特征。
  • 特征hash。

特征Hash是指利用hash的方法减少特征的维数。Hash表是数据查找中卓有成效的数据结构,Hash函数同样也是密码学中很重要的函数。对于Hash函数,是将一个离散型的特征映射到mm个桶中,桶的大小比特征的类别要少。例如,取m=4m=4,则:

则对应的上述的A1A_1的特征表示为:

A1=[0 0 1 1]

5.3、Hash方法的解释

特征Hash具有很好的理论性质:

  • 特征Hash是One-Hot编码特征在一定条件下的内积的近似
  • 很多的机器学习算法,包括线性回归,Logistic回归都可以被认为是内积

使用特征Hash通常包括两步:

  • 对原始数据使用Hash函数,无需计算One-Hot编码形式;
  • 利用稀疏的表示方法存储Hash的特征。

6、CTR预测

任务:计算

P(clickuser,ad,publisherinfo)

流程:

步骤:

  • 获取数据
  • 切分数据,将数据分成training set,validation set和test set
  • 特征提取,使用one-hot编码和特征hash
  • 训练,使用Logistic Regression
  • 预测。

若需要PDF版本,请关注我的新浪博客@赵_志_勇,私信你的邮箱地址给我。

参考文献

scalable-machine-learning

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Python环境下的8种简单线性回归算法

GitHub 地址:https://github.com/tirthajyoti/PythonMachineLearning/blob/master/Linea...

16800
来自专栏大数据文摘

特征工程:数据科学家的秘密武器!

26370
来自专栏null的专栏

论文中的机器学习算法——基于密度峰值的聚类算法

一、前言     最近有一篇Science上的文章引起了大家的关注,是由Alex Rodriguez和Alessandro Laio发表的《Clustering...

50950
来自专栏计算机视觉战队

值得一看——机器学习中容易犯下的错

前言 在工程中,有多种方法来构建一个关键值存储,并且每个设计都对使用模式做了不同的假设。在统计建模,有各种算法来建立一个分类,每一个算法的对数据集有不同的假设。...

42550
来自专栏大数据挖掘DT机器学习

数据挖掘案例:基于 ReliefF和K-means算法的应用

.NET数据挖掘与机器学习 原文:http://www.cnblogs.com/asxinyu/archive/2013/08/29/3289682.html ...

32380
来自专栏段石石的专栏

自然语言处理第一番之文本分类器

文本分类应该是自然语言处理中最普遍的一个应用,这篇文章主要从传统和深度学习两块来解释下我们如何做一个文本分类器。

72920
来自专栏人工智能LeadAI

BAT机器学习面试1000题系列(第1~75题)

今17年,近期和团队整理BAT机器学习面试1000题系列,侧重机器学习、深度学习。我们将通过这个系列索引绝大部分机器学习和深度学习的笔试面试题、知识点,它将更是...

93760
来自专栏机器学习算法与Python学习

推荐|深度学习领域引用最多的20篇论文,建议收藏!

深度学习是机器学习和统计学交叉领域的一个子集,在过去的几年里得到快速的发展。强大的开源工具以及大数据爆发使其取得令人惊讶的突破进展。本文根据微软学术(acade...

19250
来自专栏大数据挖掘DT机器学习

R语言与机器学习(分类算法)朴素贝叶斯算法

前两个算法都被要求做出一个艰难的决定,给出数据所属分类的明确答案,但往往因为分类特征统计不足,或者分类特征选择有误导致了错误的分类结果,哪怕是训练集也有可能出...

54140
来自专栏PPV课数据科学社区

机器学习系列:(五)决策树——非线性回归与分类

决策树——非线性回归与分类 前面几章,我们介绍的模型都是广义线性模型,基本方法都是通过联接方程构建解释变量与若干响应变量的关联关系。我们用多元线性回归解决回归问...

40560

扫码关注云+社区

领取腾讯云代金券