推荐系统之粗排

推荐系统通常分为多个阶段,其中粗排(Coarse Ranking)或召回(Recall)阶段是推荐流程中的第一步。在这个阶段,目标是从可能包含数百万甚至数十亿候选项的大型库存中快速地召回一小部分与用户相关的候选项。粗排算法需要高效且能够处理大规模数据,因为它们需要在毫秒级响应时间内返回结果。
逻辑回归(LR)
逻辑回归是一种简单且广泛使用的算法。在推荐系统的粗排阶段,LR 可以用来预测用户对候选项的兴趣概率。算法会基于特征(如用户属性、物品属性、用户与物品的交互历史)来进行这种预测。逻辑回归的优点是模型简单、易于理解和实现,同时可以处理大量的稀疏特征。
逻辑回归(Logistic Regression,简称LR)是一种广泛使用的统计模型,主要用于二分类问题。尽管其名称中包含“回归”二字,但逻辑回归实际上是一种分类算法。它通过使用逻辑函数(或称为sigmoid函数)来估计概率,从而预测一个事件的发生与否。
逻辑回归模型的输出是介于0和1之间的概率值,通常表示为 P(Y=1|X),即在给定输入特征 X 的条件下,目标变量 Y 等于 1 的概率。如果这个概率大于某个阈值(通常是0.5),则预测事件会发生(分类为1);否则,预测事件不会发生(分类为0)。
**逻辑函数(sigmoid函数)**的数学表达式(模型输出概率公式)如下:

​其中,e 是自然对数的底数,β0 是截距项,β1​,β2​,…,βn​ 是模型参数,X1​,X2​,…,Xn​ 是特征变量。
在推荐系统中,逻辑回归可以用来预测用户是否会对某个项目感兴趣。模型会利用各种特征(如用户历史行为、项目属性、上下文信息等)来估计用户对项目的偏好概率。然后根据这个概率来对项目进行排序或选择一部分项目进入下一阶段的处理。
逻辑回归的优点包括:
1.模型简单:逻辑回归模型易于实现和解释,参数数量相对较少,计算效率高。
2.概率输出:模型输出是概率值,可以用于了解事件发生的不确定性,并可用于决策阈值的调整。
3.特征灵活性:可以处理各种类型的特征,包括连续变量和类别变量,并且可以通过特征工程来增强模型的表现。
4.鲁棒性:相对于其他更复杂的模型,逻辑回归对于小的样本量和噪声数据有一定的鲁棒性。
然而,逻辑回归也有一些局限性,例如它假设特征与对数几率是线性关系,这在现实世界中可能并不总是成立。此外,逻辑回归可能不适用于非线性可分的数据集,或者在特征空间非常大时性能可能不如一些复杂的机器学习模型。尽管如此,逻辑回归仍然是许多领域(包括推荐系统)中常用的一种强大工具。
实例
假设我们有一个逻辑回归模型,它用来预测一个用户是否会点击某个广告。模型有两个特征:用户年龄(age)和用户收入(income),以及一个截距项(intercept)。我们的模型参数(权重)已经通过训练得到,具体如下:

  • 截距项(β0​): -3
  • 用户年龄的权重(β1​): 0.03
  • 用户收入的权重(β2​): 0.04
    现在,我们有一个用户,他的年龄是 25 岁,收入是 50000 美元。我们想要计算这个用户点击广告的概率。
    首先,我们根据逻辑回归的模型计算线性组合的值(z):
    z=β0​+β1​×age+β2​×income
    代入我们的参数和用户的特征值:
    z=−3+0.03×25+0.04×50000
    z=−3+0.75+2000
    z=1997.75
    然后,我们将 z 值代入逻辑函数(sigmoid函数)中,计算出概率:
    P(click=1∣age,income)=1/(1+e−z)​
    P(click=1∣age,income)=1/(1+e−1997.75)​
    由于 e−1997.75 非常接近于 0,我们可以得出:
    P(click=1∣age,income)≈1/(1+0)​
    P(click=1∣age,income)≈1
    因此,根据这个模型,预测这个用户点击广告的概率非常接近于 1,也就是说模型预测用户几乎肯定会点击广告。
    需要注意的是,这个例子中的参数值是假设的,而且在实际应用中,特征权重通常不会这么大。此外,逻辑回归模型通常需要通过训练数据来学习参数,并且会使用更多的特征和复杂的特征工程来提升模型的预测能力。在实际应用中,我们还需要对模型进行评估和验证,确保其预测结果是可靠的。
    模型训练
    逻辑回归模型的训练过程涉及使用一组已标注的数据(训练数据集),通过优化算法来找到最佳的模型参数(权重和截距),使得模型能够尽可能准确地预测目标变量。以下是逻辑回归模型训练的基本步骤:
    1.准备数据:收集数据并进行预处理,保证数据质量,处理异常值,缺失数据。可能需要对数据进行归一化或标准化处理。
    a.比如将数据分为特征(X)和目标变量(Y)。特征是输入变量,目标变量是我们想要预测的二元结果(通常用0和1表示)。比如通过个人喜好数据训练模型,处理数据是可以是:特征:足球,目标变量:1(1是喜欢0是不喜欢)
    2.随机初始化模型参数:例如逻辑回归模型,模型参数(权重和截距)通常随机初始化或设置为零,初始化模型后就可以开始优化过程了。
    3.使用损失函数:它衡量模型预测值与实际值之间的差异。(损失函数需要根据场景选择),用于评估模型的性能
    a.逻辑回归模型通常使用对数损失函数,对数损失函数如下:m 是训练样本数量,y(i) 是第 i 个样本的实际标签,取值0或1,x(i) 是第 i 个样本的特征向量,β 是模型参数(包括权重和截距)

4.选择优化算法:使用优化算法迭代找到最佳的模型系数,
a.梯度下降(Gradient Descent)是最常用的优化算法之一,实践中,我们可能会使用其变种如随机梯度下降(Stochastic Gradient Descent, SGD)、小批量梯度下降(Mini-batch Gradient Descent)等。
5.迭代模型:重复上述步骤直到满足停止条件。直到损失函数的值不再显著减小,或者达到预设的迭代次数。
6.评估模型:使用验证集或交叉验证来评估模型的性能,调整模型参数或特征,以改进模型的预测能力。可以通过诸如准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1分数(F1 Score)等指标来评估模型。
7.模型应用:直到使用测试集对模型进行最终评估,满足需求后就可以应用模型进行预测。
除上述模型计算步骤,还需要考虑模型的正则化(如 L1 或 L2 正则化)来防止过拟合,以及超参数(如学习率)的调整。此外,对于不平衡数据集,可能还需要考虑采样策略或调整类别权重。这些都是为了提高模型的稳健性和预测能力。
在实际应用中,我们通常使用现成的机器学习库(如 scikit-learn、TensorFlow、PyTorch 等)来实现逻辑回归模型,这些库提供了优化算法和自动化的训练过程。
朴素贝叶斯(Naive Bayes)
朴素贝叶斯是一种基于贝叶斯定理的分类算法,它假设特征之间相互独立。尽管这个“朴素”的假设在现实中很少成立,但朴素贝叶斯在很多情况下仍然能够工作得很好。
在推荐系统中,朴素贝叶斯可以用来预测用户对特定物品的喜好。通过用户的历史行为数据,可以计算出用户对不同特征的偏好,并使用这些信息来估计用户对新物品的兴趣程度。朴素贝叶斯算法简单、高效,尤其适合应用于文本分类中的向量模型,比如词袋模型或TF-IDF表示。在这种情况下,每个文档(或物品描述)被转换为一个向量,其中包含了词汇表中每个词的频率或TF-IDF分数。然后,朴素贝叶斯算法会根据训练数据计算每个类别中每个词的条件概率,并使用这些概率来对新的实例进行分类。朴素贝叶斯算法的“朴素”假设指的是它假设所有特征(在这里是词)在给定类别下是条件独立的。
朴素贝叶斯和逻辑回归有所不同,因为朴素贝叶斯是基于贝叶斯定理和特征条件独立假设的概率模型。以下是朴素贝叶斯模型训练的基本步骤:
1.准备数据:与逻辑回归相同,你需要收集并预处理数据。这可能包括处理缺失值、异常值、进行特征选择以及可能的特征转换(比如文本数据的词袋模型表示)。
2.计算先验概率:对于每个类别,计算其在训练数据中出现的相对频率,即先验概率 P(Y)。
3.计算条件概率:对于每个特征,计算给定类别下该特征的条件概率 P(Xi​∣Y)。这通常涉及到计算特征在每个类别下的分布(如高斯分布、多项式分布等)。
4.应用特征独立假设:朴素贝叶斯的“朴素”假设指的是特征之间相互独立。这意味着给定类别的条件下,任何特征与其他特征都不相关。
5.模型训练:实际上,朴素贝叶斯模型的“训练”过程主要就是计算先验概率和条件概率。没有迭代过程,因为不涉及优化算法来最小化损失函数。
6.评估模型:使用验证集或交叉验证来评估模型的性能。与逻辑回归类似,你可以通过准确率、精确率、召回率和F1分数等指标来评估模型。
7.模型应用:使用测试集对模型进行最终评估,如果模型表现满意,则可以应用于新数据的预测。
需要注意的是,朴素贝叶斯模型对数据的分布做了一些假设,例如多项式朴素贝叶斯假设特征遵循多项式分布,而高斯朴素贝叶斯假设特征遵循高斯分布。在实际应用中,根据数据的性质选择合适的朴素贝叶斯模型是很重要的。
此外,对于某些类型的朴素贝叶斯模型,如多项式朴素贝叶斯,可能需要进行平滑处理(如拉普拉斯平滑),以避免零概率问题(即当某个类别下某个特征在训练集中未出现时,其概率为零,这会影响最终的预测概率)。
朴素贝叶斯模型的优势在于它的简单性和计算效率,特别是在特征维度较高时,如文本分类问题。由于其概率性质,朴素贝叶斯模型也可以提供预测的不确定性估计,这在某些应用中非常有用。
DSSM双塔模型(Deep Structured Semantic Model)
DSSM 双塔模型是一种深度学习算法,它使用两个神经网络(通常称为“塔”)分别处理用户和物品的特征,然后通过计算这两个网络输出的向量之间的相似度来评估匹配程度。DSSM 的一个变体是双塔模型,其中一个塔处理用户特征,另一个塔处理物品特征。这种模型尤其适用于实现个性化的推荐,因为它可以捕捉复杂的用户偏好和物品属性。

损失函数和优化算法之间有着密切的联系。在机器学习中,损失函数不仅用于评估模型的性能,更重要的是,它提供了一个衡量标准,指导优化算法调整模型参数以提高模型的预测准确性。
损失函数定义了模型预测值与实际值之间差异的量度。优化算法的目标是找到一组模型参数,使得这个损失函数的值最小化。换句话说,损失函数的结果(即损失值)直接用于优化算法。
以下是损失函数和优化算法之间联系的详细解释:
1.损失函数:

  • 定义了模型好坏的标准。在逻辑回归中,常用的损失函数是对数损失(Log Loss)。
  • 损失函数的每个值都对应于模型参数的一组特定值。
  • 损失函数的输出(损失值)提供了一个量化模型当前性能的方式。
    2.优化算法:
  • 优化算法的任务是通过改变模型参数来最小化损失函数的值。
  • 算法通常需要损失函数的梯度信息来确定如何更新模型参数。梯度是损失函数关于模型参数的偏导数,指示了损失最快减小的方向。
  • 例如,在梯度下降算法中,模型参数沿着梯度的负方向更新,以减少损失函数的值。
    损失函数与优化算法之间的关系可以概括为:损失函数定义了优化的目标,而优化算法定义了如何达到这个目标。损失函数的梯度告诉优化算法哪个方向可以使得损失减小,优化算法则根据这个信息来更新模型参数。
    在训练过程中,优化算法会不断计算当前模型参数下的损失值以及梯度,然后根据这些信息来更新参数,直到找到损失函数的最小值或达到某个停止条件为止。因此,损失函数是优化过程的核心,它直接影响模型参数的优化方向和步长。

参考文档:
1.DSSM模型:Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
2.DSSM模型:DSSM模型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值