LightGBM:电商广告点击率预估利器

引言 在电商平台中,广告点击率 (CTR) 预估对于广告投放效果至关重要。准确预测用户点击广告的概率,可以帮助广告主优化广告投放策略,提升广告收益。LightGBM 作为一种高效的梯度提升决策树算法,在 CTR 预估任务中表现出色。本篇文章将以 lightgbm_tinycriteo.ipynb 示例为例,介绍如何使用 LightGBM 训练 CTR 预估模型,并探讨模型优化策略。 LightGBM 简介 LightGBM 是微软开源的一种梯度提升框架,它使用基于树的学习算法,并针对分布式计算和高效率进行了优化。LightGBM 具有以下优势: 数据准备 本示例使用 Criteo 数据集,该数据集是 CTR 预估领域的经典基准数据集。原始数据集包含 39 个特征,其中 13 个为数值特征 (I1-I13),26 个为类别特征 (C1-C26)。由于原始数据集规模较大,本示例使用了一个包含约 10 万个样本的子集。 将数据集按照时间顺序划分为训练集、验证集和测试集,划分比例为 8:1:1。 模型训练与评估 基础用法 对于 LightGBM 的基础用法,只需对类别特征进行简单的顺序编码即可。 创建 LightGBM 数据集,并设置模型参数。 优化用法 为了进一步提升模型性能,可以对类别特征进行标签编码和二进制编码,并将数值特征的缺失值填充为均值。 模型保存与加载 训练完成后,可以使用 save_model 方法保存模型,并使用 Booster 类加载模型。 总结 LightGBM 是一种高效的梯度提升决策树算法,在 CTR … Read more

GeoIMC:融合几何信息的电影推荐算法

引言 推荐系统领域中,矩阵分解技术是协同过滤算法的重要分支。传统的矩阵分解方法通常只考虑用户和物品之间的交互信息,而忽略了用户和物品本身的特征。GeoIMC 算法将用户和物品的特征信息融入到矩阵分解过程中,并利用黎曼优化方法求解模型参数,从而提升推荐效果。 GeoIMC 算法原理 GeoIMC 算法基于 Jawanpuria 等人 (2019) 的研究成果,将用户和物品的特征信息融入到矩阵分解过程中。以 MovieLens-100K (ML100K) 数据集为例,假设 $X \in R^{m \times d_1}$ 和 $Z \in R^{n \times d_2}$ 分别表示用户和电影的特征矩阵,$M \in R^{m \times n}$ 表示用户对电影的评分矩阵。GeoIMC 算法将评分矩阵建模为 $M = XUBV^TZ^T$,其中 $U \in R^{d_1 \times k}$、$V \in R^{d_2 \times k}$ 和 $B \in R^{k \times k}$ 分别为正交矩阵、正交矩阵和对称正定矩阵。模型参数通过 Pymanopt 工具包进行黎曼优化求解。 数据准备 本示例使用 … Read more

FastAI:快速构建电影推荐系统

引言 FastAI 作为一个易于使用且功能强大的深度学习库,为推荐系统的构建提供了便捷的工具。本篇文章将以 fastai_movielens.ipynb 示例为例,介绍如何利用 FastAI 框架,快速构建一个基于协同过滤的电影推荐系统,并对模型性能进行评估。 数据准备 本示例使用经典的 MovieLens 数据集,该数据集包含用户对电影的评分信息。首先,使用 recommenders.datasets.movielens 模块加载数据集,并确保用户 ID 和电影 ID 以字符串类型加载,避免与嵌入 ID 混淆。 接下来,使用 python_stratified_split 函数将数据集划分为训练集/验证集和测试集,划分比例为 75:25。 模型训练 FastAI 提供了 collab_learner 函数,用于快速构建协同过滤模型。默认情况下,collab_learner 使用 EmbeddingDotBias 模型,该模型为用户和电影创建嵌入向量,并将它们映射到指定维度的浮点数空间。 在 collab_learner 中,n_factors 参数表示隐含特征维度,y_range 参数设置评分范围,wd 参数设置权重衰减以进行正则化。 使用 fit_one_cycle 函数训练模型,并设置学习率和迭代次数。 生成推荐结果 为了生成推荐结果,首先需要获取模型已知的所有用户和电影,以及测试集中的用户。 然后,构建测试集用户和所有已知电影的笛卡尔积,并移除训练集中出现过的用户-电影组合。 最后,使用 score 函数对模型进行评分,并获取 Top-K 推荐结果。 模型评估 使用 recommenders.evaluation.python_evaluation 模块中的评估指标对模型进行评估。 总结 本篇文章以 fastai_movielens.ipynb … Read more

深度知识感知网络:DKN 新闻推荐算法解析

引言 在信息爆炸的时代,如何从海量新闻中为用户推荐感兴趣的内容,成为了推荐系统研究的热点之一。传统的基于 ID 的协同过滤算法往往难以捕捉新闻内容的语义信息,而基于内容的推荐算法则需要人工提取新闻特征,效率低下。深度知识感知网络 (DKN) 算法应运而生,它结合了深度学习和知识图谱的优势,能够自动学习新闻内容的语义表示,并利用知识图谱中的实体信息提升推荐效果。 DKN 算法原理 DKN 算法的核心思想是将新闻内容和知识图谱信息融合到一个深度学习模型中,通过联合学习语义级和知识级的新闻表示,实现更精准的推荐。具体来说,DKN 算法主要包含以下几个步骤: MIND 数据集 MIND 数据集是一个大规模英文新闻数据集,包含了 1,000,000 用户、161,013 篇新闻文章和 15,777,377 条点击日志。每篇新闻文章包含丰富的文本内容,包括标题、摘要、正文、类别和实体。每条点击日志包含用户的点击事件、未点击事件以及该用户在该次点击之前的历史点击行为。 本示例使用 MIND 数据集的子集 MIND demo,包含 500 用户、9,432 篇新闻文章和 6,134 条点击日志。 DKN 模型训练 首先,需要下载 MIND demo 数据集和预训练的词嵌入、实体嵌入和上下文嵌入文件。 然后,设置模型超参数,并创建 DKN 模型。 最后,使用训练集和验证集对模型进行训练。 模型评估 模型训练完成后,可以使用测试集对模型性能进行评估。 评估指标包括 AUC、Group AUC、Mean MRR、NDCG@5 和 NDCG@10。 总结 DKN 算法是一种结合了深度学习和知识图谱的先进新闻推荐算法,能够有效提升推荐效果。微软 Recommenders 工具提供了 DKN 算法的示例代码,方便用户快速上手并进行实验。

基于 PySpark 的电影推荐系统:深入解析 ALS 算法

引言 协同过滤算法是推荐系统中应用最广泛的算法之一,而交替最小二乘法 (ALS) 则是协同过滤算法中的一种经典算法。本篇文章将以微软 Recommenders 工具中的 als_movielens.ipynb 示例为例,详细介绍如何使用 PySpark 实现基于 ALS 算法的电影推荐系统,并对模型性能进行评估。 数据准备 本示例使用经典的 MovieLens 数据集,该数据集包含了用户对电影的评分信息。首先,需要使用 recommenders.datasets.movielens 模块加载数据集,并指定使用的数据集大小和数据格式。 接下来,使用 spark_random_split 函数将数据集划分为训练集和测试集,划分比例为 75:25。 模型构建 使用 PySpark MLlib 中的 ALS 模块构建 ALS 模型。 在 ALS 模型中,rank 参数表示隐含特征维度,maxIter 参数表示最大迭代次数,regParam 参数表示正则化系数。 生成推荐结果 为了避免推荐用户已经评分过的电影,需要将训练集中出现过的用户-电影组合从推荐结果中剔除。 模型评估 使用 SparkRankingEvaluation 和 SparkRatingEvaluation 模块对模型进行评估。 总结 本篇文章以 als_movielens.ipynb 为例,详细介绍了如何使用 PySpark 实现基于 ALS 算法的电影推荐系统,并对模型性能进行了评估。 ALS 算法原理简单,易于实现,并且可以通过调节参数来控制模型的复杂度,适用于各种规模的数据集。

快速上手推荐系统:微软 Recommenders 示例精解

引言 想要快速体验不同推荐算法的魅力,并构建自己的推荐系统原型?微软 Recommenders 工具的 00_quick_start 目录提供了一系列开箱即用的 Jupyter Notebook 示例,涵盖了从数据准备、模型构建到模型评估的完整流程。 示例概览 00_quick_start 目录下的示例 Notebook 涵盖了多种经典和先进的推荐算法,并使用了不同的数据集和运行环境,具体如下表所示: 示例 数据集 运行环境 描述 als MovieLens PySpark 使用交替最小二乘法 (ALS) 预测电影评分,在 PySpark 环境中运行。 dkn MIND Python CPU, GPU 使用深度知识感知网络 (DKN) 进行新闻推荐,利用知识图谱信息,在 Python+GPU (TensorFlow) 环境中运行。 fastai MovieLens Python CPU, GPU 使用 FastAI 推荐系统预测电影评分,在 Python+GPU (PyTorch) 环境中运行。 … … … … 注意: 表格中只列举了部分示例,完整列表请参考 README.md。 … Read more

将 Recommenders 示例无缝迁移到 AzureML 云平台

引言 随着推荐系统规模的扩大和对训练效率要求的提高,将本地实验迁移到云平台成为一种趋势。Azure 机器学习服务(AzureML)为开发者提供了一个强大的云端环境,可以用于数据准备、模型训练、测试、部署、管理和跟踪。 本指南将以 run_notebook_on_azureml.ipynb 为例,介绍如何将 Recommenders 示例 Notebook 提交到 AzureML 计算目标,利用云平台的优势加速推荐系统开发流程。 AzureML 简介 AzureML 提供了丰富的功能,包括: 准备工作 使用 AzureML 之前,需要完成以下准备工作: 连接到 AzureML 工作区 AzureML 工作区是用于组织和协调机器学习工作流的 Azure 资源,它协调存储、数据库和计算资源,为实验、部署、推理和模型监控提供额外功能。 以下代码将获取或创建一个 AzureML 工作区,并将配置保存到 aml_config/config.json 文件中。 创建或连接 Azure 机器学习计算资源 Azure 机器学习计算是一种托管计算基础设施,允许用户轻松创建单节点到多节点的计算资源。 以下代码将创建一个 CPU 集群作为远程计算目标。 提交 Notebook 以下代码将 sar_movielens.ipynb Notebook 提交到 AzureML 计算目标。 监控运行进度 可以使用 Jupyter 小部件监控运行进度。小部件会每隔 10-15 秒提供一次实时更新,直到作业完成。 查看指标 … Read more

微软 Recommenders:推荐系统实战宝典

引言 构建一个高效的推荐系统并非易事,需要对数据进行预处理、选择合适的算法、进行模型训练和评估,最终才能将其部署到生产环境。为了帮助开发者和研究人员更好地应对这些挑战,微软开源了 Recommenders 工具,并提供了一系列 Jupyter Notebook 示例和最佳实践,涵盖了推荐系统开发的完整流程。 示例概览 Recommenders 的示例 Notebook 按照功能和用途被组织在不同的目录下,具体如下表所示: 目录 是否支持本地运行 描述 00_quick_start 是 快速入门示例,演示如何在本地环境中使用推荐算法构建推荐系统。 01_prepare_data 是 数据准备示例,为不同的推荐算法准备和加载数据。 02_model_collaborative_filtering 是 协同过滤算法模型训练和评估示例,深入探讨算法原理和实现细节。 … … … 本地运行示例 大部分示例 Notebook 都可以在本地 Linux 机器上直接运行,只需按照 说明 正确设置环境即可。 注意: 某些示例可能需要异构计算实例,例如安装了 Spark 框架的 CPU 机器集群或配备 GPU 设备的机器。因此,建议在 Linux 数据科学虚拟机 (Ubuntu) 上运行这些 Notebook,因为该虚拟机预先配置了单节点 Spark 和/或 GPU 设备。 Azure 云端增强 为了提高大规模开发推荐系统的效率,部分示例 … Read more

深入浅出推荐系统:微软开源工具 Recommenders 解析

引言 在信息爆炸的时代,人们面对海量数据往往无所适从。推荐系统应运而生,它通过分析用户的历史行为和偏好,为用户提供个性化的推荐内容,帮助用户快速找到自己感兴趣的信息。从电商平台的商品推荐,到社交媒体的内容推送,再到音乐软件的歌曲推荐,推荐系统已经渗透到我们生活的方方面面。 微软开源工具 Recommenders 正是为构建、实验和部署各种经典和先进的推荐系统而生。它提供了一系列 Jupyter Notebook 示例和最佳实践,涵盖了推荐系统构建的五个关键任务: Recommenders 提供了多个实用工具,用于支持加载数据集、评估模型输出和划分训练/测试数据等常见任务。它还包含了一些先进算法的实现,供用户自学和定制自己的应用程序。 算法概览 Recommenders 提供了丰富的推荐算法,涵盖了协同过滤、基于内容的过滤等多种类型,具体如下表所示: 算法 类型 描述 示例 交替最小二乘法 (ALS) 协同过滤 适用于大型数据集的显式或隐式反馈的矩阵分解算法,针对可扩展性和分布式计算能力进行了优化。它在 PySpark 环境中工作。 快速入门 / 深入探讨 注意力异步奇异值分解 (A2SVD) 协同过滤 基于序列的算法,旨在使用注意力机制捕获用户的长期和短期偏好。它在 CPU/GPU 环境中工作。 快速入门 … … … … 注意: 表格中只列举了部分算法,完整列表请参考 README.md。 算法比较 为了方便用户比较不同算法的性能,Recommenders 提供了一个 基准测试 Notebook。该 Notebook 使用 MovieLens 数据集,以 75/25 的比例将其划分为训练集和测试集,并使用多个协同过滤算法训练推荐模型。 下表展示了在 Movielens 100k 数据集上运行 … Read more

SalUn : 通过基于梯度的权重显著性赋能图像分类和生成中的机器遗忘

引言 随着数据法规的不断演变,机器遗忘 (MU) 已成为增强当今人工智能模型信任度和安全性的重要工具。然而,现有的 MU 方法侧重于数据和/或权重视角,在遗忘准确性、稳定性和跨领域适用性方面往往存在局限性。为了应对这些挑战,我们引入了 MU 的“权重显著性”概念,并将其与模型解释中的输入显著性进行了类比。这一创新将 MU 的注意力从整个模型转移到特定的模型权重上,从而提高了有效性和效率。由此产生的方法被称为显著性遗忘 (SalUn),它缩小了与“精确”遗忘(从移除遗忘数据点后从头开始重新训练模型)的性能差距。据我们所知,SalUn 是第一个能够有效消除遗忘数据、类别或概念在图像分类和生成任务中的影响的原则性 MU 方法。例如,SalUn 在高方差随机数据遗忘中具有稳定性优势,例如,在 CIFAR-10 数据集上与精确遗忘相比,差距为 0.2%。此外,在防止条件扩散模型生成有害图像方面,SalUn 实现了近 100% 的遗忘准确率,优于当前最先进的基线,如 Erased Stable Diffusion 和 Forget-Me-Not。代码可在 https://github.com/OPTML-Group/Unlearn-Saliency 获取。 警告:本文包含的模型输出可能具有冒犯性。 机器遗忘的挑战 现有的机器遗忘方法存在两大局限性: SalUn:权重显著性是 MU 的关键 为了解决上述局限性,我们提出了 SalUn,它利用了梯度信息来构建权重显著性图,并将其用于指导遗忘过程。 基于梯度的权重显著性图 我们借鉴了梯度信息在输入显著性图中的应用,提出了构建权重显著性图来辅助 MU 的想法。权重显著性图可以将预遗忘模型权重 (θo) 分解为两个不同的部分:在 MU 期间标记为更新的显著模型权重和保持不变的完整模型权重。 我们使用遗忘损失 (`f(θ; Df)) 相对于遗忘数据集 Df 下模型权重变量 θ 的梯度,并应用硬阈值操作来获得权重显著性图: 其中 1(g ≥ … Read more