注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的PPT可见参考文献的链接。这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图也是引用的原来的教程,若内容上有任何错误,希望与我联系,若内容有侵权,同样也希望告知,我会尽快删除。这部分本应该加上实验的部分,实验的部分在后期有时间再补上。
可扩展机器学习系列主要包括以下几个部分:
概述 - Spark分布式处理 - 线性回归(linear Regression) - 梯度下降(Gradient Descent) - 分类——点击率预测(Click-through Rate Prediction) - 神经科学
在线广告是典型的大规模机器学习问题,主要是因为:
在在线广告的活动中,主要包括如下的一些参与者:
用户是我的补充,通常再上述的参与者中,出版人和媒介属于同一个。
通常,一个网站上的广告会产生如下的两种的效果:
因此,展示广告的同时为商家带来了利润。
在线广告是一个多方博弈的过程,参与者包括广告商,平台,受众,关系如下图所示:
平台连接着广告商与受众(上图中的蓝色),因此如何高效地连接广告商与受众称为一个重要的问题,问题可以表述为:预测一个用户对于每一条广告的点击概率,并且选择最大概率的广告。数学过程可以表述为估计如下的概率:
P(click∣predictive feature)
即在给定预测的特征的条件下预测用户的点击概率。其中,预测特征包括:
平台每天可以获取巨大的量的展示数据,但是这些数据通常具有如下的特点:
在上述的广告计算的核心问题中,需要计算一个概率,这个概率具体可以表述为:
P(click∣user,ad,publisherinfo)
分类问题(Classification)是指通过训练数据学习一个从观测样本到离散的标签的隐射,分类问题是一个监督学习问题。典型的例子有:
决策边界如下图所示:
在回归问题中,预测值和标签是连续值,因此在评价中,计算的是标签与预测值之间的接近程度,可以使用均方误差(Squared Loss)。但是在分类问题中,类别是离散值,可以使用0-1损失(0-1 Loss)。
0-1损失是指若预测正确,则实行0惩罚,否则实行1惩罚。0-1损失的形式与图像如下所示:
其中,y∈{−1,1}。
问题:0-1损失函数是很难优化的,因为0-1损失函数是一个非凸的函数。
对于上述的0-1损失函数,由于其是一个非凸的函数,因此很难对其进行优化,解决的办法是利用一些凸函数近似表示0-1损失函数,常见的分类模型及其损失函数如下所示:
各种损失函数如下图所示:
其图像为:
对于垃圾邮件的分类应用,可以对其建模为:
P[y=spam∣x]
对于垃圾邮件的检测问题,有两种预测错误的情况:
对于垃圾邮件的检测问题来讲,将非垃圾邮件判定为垃圾邮件比将垃圾邮件判定为非垃圾邮件带来的后果更加严重,因为这样会错过一些比较重要的邮件,因此在这样的请款下,为了保守,我们可以设置大于0.5的阈值。
ROC曲线是根据FPR(False Positive Rate)和TPR(True Positive Rate)画出来的一条曲线,其中,横轴为FPR,纵轴为TPR。FP在上面已经介绍过,TP(True Positive)指的是将垃圾邮件判定为垃圾邮件。ROC曲线如下图所示:
上图中的虚线表示的是随机预测的情况,左上角的位置表示的是最好的情况,即没有将非垃圾邮件判定为垃圾邮件,而且垃圾邮件都被判定出来。通过调节阈值,我们可以得到这样一条曲线。
在上述的线性回归以及logistic回归中,数据的形式通常是数值型的,下图中列举了一些数值型数据的情形:
还有一些非数值型数据的情形:
在广告的点击率预测中,有很多的特征是非数值型的数据,如: - 用户特征:性别,国籍,职业······ - 广告商/平台特征:行业,位置······ - 广告/网站特征:语言,文本,目标受众······
通常有两种方法处理非数值型特征的机器学习问题,第一种是选择支持这些类型特征的机器学习方法,如
第二种方法是将这些特征转换成数值型特征,这样便可以使用适用于数值型特征的学习方法来处理这些问题。
对于非数值型特征,主要分为以下两种:
对于类别特征,通常包括两个或者多个类别,在类别之间没有内定的次序,如性别,国籍,职业,语言等等;对于序列特征,通常包括两个或者多个类别,在类别之间有明显的内定的次序,但是在类别之间没有固定的间隔,只是一种相对的次序,如常见的在调查问卷中的问题,如“你的身体是否健康:不好(poor),一般(reasonable),好(good),非常好(excellent)”。
非数值型特征转换成数值型特征通常有如下一些处理的方法:
如对于序列特征:
对于类别特征:
如下:
对于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)]
这样,只存储了非零项。
上述的One-Hot编码的策略可以有效地转换离散型的特征,但是,One-Hot编码一个明显的缺点就是在转换后的One-Hot编码串会变得很长,总的长度等于离散特征的个数,若是离散特征的个数特别多的情况下,这个One-Hot串就会特别长。这样的模型如同“Bag Of Words”模型一样,在Bag Of Words中,通过词典的形式表示一篇文章,如下图所示:
对于One-Hot编码,主要存在两个问题:
对于One-Hot编码存在的上述的问题,可以有如下的解决方法:
特征Hash是指利用hash的方法减少特征的维数。Hash表是数据查找中卓有成效的数据结构,Hash函数同样也是密码学中很重要的函数。对于Hash函数,是将一个离散型的特征映射到mm个桶中,桶的大小比特征的类别要少。例如,取m=4m=4,则:
则对应的上述的A1A_1的特征表示为:
A1=[0 0 1 1]
特征Hash具有很好的理论性质:
使用特征Hash通常包括两步:
任务:计算
P(click∣user,ad,publisherinfo)
流程:
步骤:
若需要PDF版本,请关注我的新浪博客@赵_志_勇,私信你的邮箱地址给我。