个性化推荐算法实战第08章浅层排序模型逻辑回归

第08章浅层排序模型逻辑回归

本章节重点介绍点击率预估模型,逻辑回归模型,以及选取实例数据集,从特征选择到模型训练、模型评估等几个方面来代码实战逻辑回归模型。

本章节重点介绍一种排序模型,逻辑回归模型。从逻辑回归模型的背景知识与数学原理进行介绍。并介绍样本选择与特征选择相关知识。最后结合公开数据集。代码实战训练可用的逻辑回归模型。

逻辑回归模型的背景介绍

一、LR(logistic regression逻辑回归)背景知识介绍

将会介绍什么是点击率预估、什么是分类模型以及LR模型的基本使用流程、LR模型的基本训练流程,从这几个方面介绍LR的背景知识。

1. 点击率预估与分类模型

什么是点击率预估呢?

相信点击率的概念大家都知道,在系统中,点击率 = 点击的数目 / 总展现的数目,而点击率预估就是针对特定的用户在当前上下文结合用户当前的特征给出的item可能被点击的概率,预估方法可以是一些简单的规则也可以是使用模型,目的就是得到不同的item在此时应该被展现的顺序关系。

点击率预估在推荐、搜索、广告领域都被广泛使用。

那么什么是分类模型呢?

用一个简单的例子进行讲解:假如去菜市场买牛肉,这个牛肉可以称之为新鲜或者不新鲜,我们之前的判断就是根据这个肉的时间。假如有一个模型可以再牛肉到来的时候就给出标签,是新鲜或者不新鲜,那么这样的一个模型就是一个分类模型,而且是一个二分类,因为这里的label只有新鲜或者不新鲜。

当然,这个分类模型也可以是多分类,如果说这个label有很多个,那么便是多分类。我们这里讲的点击率预估实际也是一个二分类问题,因为,点了样本就是1,没点就是0。就在这两类之间,我们会给出每一个样本预估出它倾向1的概率,基于次概率的大小决定了此item的展现顺序。

2. 什么是LR?

假设二维空间中有一些数据点,我们想用一条直线来拟合这些数据点经过的路径,这便是回归。但是,LR是一个分类模型,需要在样本进入模型之后给出分类标签。

所以LR对于回归得到的数值会进行一个处理,使之变成0,1这样的标签。这个梳理就是将得到的数值输入到一个函数中,这个函数就是单位阶跃函数,后面会详细讲解这个函数。

这里说的二维空间是只有一个特征的,用在之前讲解的牛肉是不是新鲜这个案例里,这个特征就是时间。那么如果扩展到三维空间中,可以再加入一个特征,比如说这个牛肉的含水量。那么这个时候,可能就不是用一条直线,而是用一个面来拟合整体样本经过的路径。

3. sigmoid函数:单位阶跃函数

这个函数有一个特点,那就是输入为0的时候,值为0.5,但是输入>0 的部分,很快便逼近于1,输入 < 0 的部分,很快便逼近于0,所以称之为阶跃函数。

这样的函数,很少有在中间的部分,所以可以很容易的分辨出是1还是0,正好符合0、1分类模型的要求。

4. LR模型的工作流程

前面介绍过LR模型的主体流程是:首先对数据进行一个拟合,不管是二维空间里 y = k * x + b 这样的直线,还是三维空间里y = a1 * x1 + b2 * x2 + c 这样的平面,亦或是更高维度我们需要学习更多的参数。像y = k * x + b 中的k、b,像三维空间里我们用平面 y = a1 * x1 + b2 * x2 + c 这里面的a1、b2、c这样的参数都是我们需要学习的。学习完这些参数之后,也就得到了模型。得到模型之后,用参数与输入的特征进行相乘,同时将得到的数值放入前面介绍过的单位阶跃函数中得到类别。

下面用具体的例子,详细介绍一下具体的工作流程:
在这里插入图片描述

这里是三个训练数据,训练数据的label就是女朋友是不是开心。我们看到这是一个二分类问题,女朋友开心,label就是1;女朋友不开心,那么label就是0。同时这里每一个训练样本都有三个特征,分别是买礼物、说早安、陪吃饭。

样本1 是买了礼物,说了早安,陪了吃饭,那么女朋友是开心的。

样本2 是没有买礼物,没有说早安,陪了吃饭,女朋友是不开心的。

样本3 是买了礼物,说了早安,,没有陪吃饭,女朋友是开心的。

这里的目标是通过这三个样本,学习出一个LR的模型,然后能够通过这个模型,帮助我们预测女朋友是否开心。我们需要学习的参数是什么呢?很明显就是 a * x1 + b * x2 + c * x3,这里的a、b、c这三个参数,在得到了这三个参数之后,在接下来的某一天,我们将买没买礼物,说没说早安,有没有陪吃饭带入到这个公式中,也便能够自己知道女朋友是否开心。

以上就是LR模型的工作流程

5. LR模型的整体训练流程

(1)从log中获取训练样本与特征

在工业界中,样本与特征都不会是处理好的,我们需要自己从日志中,根据需要去提取。比如在推荐系统中,我们可能有展示日志,有点击日志,有基于点击统计User Profile,也有入库时就获得的item info信息。首先,我们需要判断,哪些展现,哪些点击是需要的,也就是样本选择。因为,有很多样本含有脏数据,我们需要去除掉。

其次,我们需要判断我们需要的是用户的哪些特征。比如说用户的年龄、性别,或者是item的哪些特征,比如item的种类、item的title、item的时长等等。这就是特征选择。

(2)模型的参数学习

获取了样本与特征之后,需要决定模型学习的学习率,是否正则化,以及选用哪一种正则化的方式,同样还有学习的方法等等参数设定。

得到了模型之后,同样需要进行离线评估。

这里面包含了模型本身的指标,还有模型应用到测试集中的指标,来看一下我们的模型是否可用。如果模型可用,需要将模型实例化。

(3)模型预测

这里的预测包含可能是将已经实例化的模型录入到内存中提供服务,也可能是基于已经实例化好的模型再搭建一个模型的服务。

预测部分需要将待预测的数据集带入到训练格式去抽取特征,抽取完特征的待预测的样本放入到模型中便能得到预测的结果。

6. LR模型的优缺点

优点:易于理解,计算代价小

这个易于理解是指,我们在建模过程中我们把则认为对结果又影响的特征罗列出来就可以,比如说我们认为哪些因素会影响女朋友开心或不开心呢,那就是买没买礼物,说没说早安,有没有陪吃饭,有没有送回寝室…然后学习这些因素的权重就可以。

在推荐系统中,我们预估这个item能不能被user点击。同样也可以选取一些关键的特征,比如说item的历史点击率,item所属的类型,然后用户喜欢看的类型,这个item的长度等等。

由于LR模型是一个浅层模型,而且需要学习的参数的数目与特征的维度是一一对应的,比如说有100维的特征,那么就需要学习100个参数,所以计算代价是比较小的。

缺点:容易欠拟合需要特征工程来补足模型容易欠拟合的缺点

欠拟合是一个专业术语,解释一下:

欠拟合表示模型没有从训练数据中学习到所有的规律。我们以女朋友是否开心为例,比如说陪吃饭,以及买礼物都不能单独的影响女朋友是否开心,也许这里需要一个交叉特征,比如陪吃饭和买礼物放在一起的一个特征。当这两样同时做了,女朋友才会开心,如果没做或者是只做了一样,女朋友都是不会开心的。

那么在这种情况下,我们发现,由于LR不能主动的去想学习这些交叉特征,所以需要我们大量的构造特征。这也就是说,特征工程来补足模型容易欠拟合的缺点。

二、LR算法数学原理解析

将会介绍LR模型的函数表达式、损失函数以及梯度,并且介绍什么是正则化。(LR模型参数迭代的数学原理)

逻辑回归模型的数学原理

1、单位阶跃函数(sigmoid)

单位阶跃函数及其导数

单位阶跃函数的函数表达式:
f ( x ) = 1 1 + exp ⁡ ( − x ) f(x)=\frac{1}{1+\exp (-x)} f(x)=1+exp(x)1

当 x = 0 时,f(x) = 0.5 ; 当 x = 10 时,f(x) 接近于1 ,这也就是之前说过的,当x > 0 的时候,会非常快速的接近于1 ;当x < 0 的时候,会非常快速的接近于0 。这完全符合LR模型,对0-1分类时的要求。

下面再来看一下单位阶跃函数的导数:

f ′ ( x ) = exp ⁡ ( − x ) ( 1 + exp ⁡ ( − x ) ) 2 f^{\prime}(x)=\frac{\exp (-x)}{(1+\exp (-x))^{2}} f(x)=(1+exp(x))2exp(x)
经过简单转换,上述式子转换为:
f ′ ( x ) = 1 1 + exp ⁡ ( − x ) ∗ 1 + exp ⁡ ( − x ) − 1 1 + exp ⁡ ( − x ) f^{\prime}(x)=\frac{1}{1+\exp (-x)} * \frac{1+\exp (-x)-1}{1+\exp (-x)} f(x)=1+exp(x)11+exp(x)1+exp(x)1

也就是 f(x) 的导数 = f(x) * (1 - f(x))

2、LR模型的函数表达式

LR模型分为两个步骤:

  1. 拟合数据点;

公式:

w = w 1 × x 1 + w 2 × x 2 + … + w n × x n w=w_{1} \times x_{1}+w_{2} \times x_{2}+\ldots+w_{n} \times x_{n} w=w1×x1+w2×x2++wn×xn
这里的w1,w2…是需要学习的参数,这里的x1,x2…是选取的特征。

用上一部分中的例子来分析,x1可能是陪吃饭,x2可能是送礼物等。

  1. 将第一步回归得到的数值带入到阶跃函数中,进而得到分类。

y = sigmoid ⁡ ( w ) y=\operatorname{sigmoid}(w) y=sigmoid(w)

也就是女朋友是否开心的倾向性,或者说item是否被用户点击的倾向性。

LR模型的函数表达式就介绍到这里,之前介绍个性化召回算法LFM的时候,曾经介绍过一种最优化的方法来学习参数–梯度下降。

梯度下降需要首先设定损失函数,进而得到梯度,完成参数的迭代。

下面看一下LR模型的损失函数。

3、LR模型的损失函数

loss ⁡ = log ⁡ ∏ i = 1 n p ( y i ∣ x i ) \operatorname{loss}=\log \prod_{i=1}^{n} p\left(y_{i} | x_{i}\right) loss=logi=1np(y

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值