当前位置: 首页 > news >正文

ctr/cvr预估之FM模型

ctr/cvr预估之FM模型

在数字化时代,广告和推荐系统的质量直接影响着企业的营销成效和用户体验。点击率(CTR)和转化率(CVR)预估作为这些系统的核心组件,其准确性至关重要。传统的机器学习方法,如逻辑回归,虽然在某些场景下表现良好,但在处理大规模稀疏数据时往往力不从心。在这样的背景下,因子分解机(Factorization Machines, FM)模型应运而生,以其卓越的性能和对稀疏数据的天然适应性,成为CTR/CVR预估领域的一颗新星。


文章目录

  • ctr/cvr预估之FM模型
  • 一、什么是FM模型
  • 二、FM模型提出背景
  • 三、FM模型原理
  • 四、FM模型注意事项
  • 五、FM模型的核心参数
  • 六、FM模型的关键优势
  • 七、FM模型实现代码


一、什么是FM模型

因子分解机(Factorization Machines, FM)是一种先进的机器学习模型,专为处理具有大量特征的稀疏数据集而设计。FM模型最初由Steffen Rendle在2010年提出,它结合了线性模型的可解释性和因子分解模型的泛化能力。

二、FM模型提出背景

FM模型的提出背景主要是为了解决稀疏数据场景下的特征组合问题。在许多实际应用中,如推荐系统、广告点击率预测等,经常会遇到高维稀疏数据,传统的机器学习算法如LR(Logistic Regression)在处理这类数据时会遇到一些挑战:

  • LR模型未考虑特征之间的关系:LR模型要求特征之间相互独立,但这在实际应用当中很难满足,并且LR模型无法有效捕捉特征之间的交互作用。

  • 高维稀疏问题:高维稀疏矩阵是实际当中非常常见的问题,会导致计算量过大,计算成本高,模型收敛缓慢。

    针对上述问题,FM模型采用了因子分解技术来减少模型参数,并能够捕捉特征间的交互作用,同时保持计算的高效性。FM模型的核心思想是将高维的特征向量映射到低维空间,通过隐向量的点积来表示特征间的交互,从而在稀疏数据上实现有效的特征组合和参数共享。FM模型的提出,为处理大规模稀疏数据提供了一种新的解决方案,并且在广告、推荐等领域得到了广泛的应用。它不仅能够处理线性关系,还能够通过特征交互捕捉非线性模式,这使得FM模型在许多场景下都能够取得良好的预测效果。
    

三、FM模型原理

FM模型假设特征之间两两相关,获取特征之间的交叉项参与建模(主要针对离散特征之间的交叉,尤其是对于那些在大规模数据集中常见的稀疏离散特征):
在这里插入图片描述

对w进行分解,得到:
图片

化简后面的二阶项:
在这里插入图片描述

最终模型表达式为:
在这里插入图片描述
经过化简,模型的时间复杂度由O(kn^2)下降到O(kn),并且在高维稀疏数据场景下,很多特征为0,只需要计算非零特征,极大提高了计算效率。

四、FM模型注意事项

  • 对于长度不一致的特征,FM模型通过将这些特征转换为固定长度的向量来处理它们之间的交叉项,通常通过特征的嵌入(Embedding)实现。

  • 对于多特征的场景,一般会将各个特征嵌入到相同的维度,然后进行拼接,拼接后的总维度就是各个嵌入维度之和,在FM层处理时,关注的是处理后的嵌入特征,而非原始的输入维度。

  • FMLayer层的关键在于计算两个部分:一是所有嵌入向量的和的平方,二是所有嵌入向量的平方的和。然后,将前者减去后者,乘以0.5得到交叉项。

五、FM模型的核心参数

1、隐向量维度(Factorization Dimension):这是FM模型中最重要的参数之一,决定了特征交互的维度。较大的维度可以捕获更复杂的交互关系,但同时也会增加模型的复杂度和过拟合的风险。

2、正则化参数(Regularization):包括针对一阶线性项的正则化参数和针对隐向量的正则化参数。正则化有助于防止模型过拟合,提高模型的泛化能力。常见的正则化方法有L1正则化和L2正则化。

3、学习率(Learning Rate):在梯度下降或其他优化算法中使用的学习率决定了每次参数更新的步长。合适的学习率对于快速收敛和避免过度震荡非常重要。

4、迭代次数(Number of Epochs):训练过程中数据集遍历的次数。过多的迭代可能导致过拟合,而过少的迭代可能导致欠拟合。

5、批量大小(Batch Size):在基于批量的优化方法中,批量的大小决定了每次参数更新考虑的样本数量。批量的大小会影响训练的速度和稳定性。

6、初始化方法(Initialization Method):模型参数的初始值设置方法,合适的初始化可以提高模型的收敛速度和性能。

7、优化算法(Optimization Algorithm):用于训练模型的优化算法,如SGD(随机梯度下降)、Adam、RMSprop等,不同的优化算法可能会影响模型的收敛速度和最终性能。

除了这些核心参数外,还有一些其他可调节的参数,如早停法(Early Stopping)的阈值设置,用于防止过拟合的Dropout率等。调整这些参数需要依据具体的应用场景和数据集特性,通常通过交叉验证等技术来确定最优参数设置。

六、FM模型的关键优势

  • 高维稀疏数据的处理能力:通过因子分解,FM可以在稀疏数据中学习到特征间的隐含关系,有效减少了模型参数的数量,使得模型可以在高维空间中有效运行。
  • 特征交互的自动学习:FM能够自动学习不同特征之间的交互关系,而不需要手动创建交互特征,这在处理具有大量特征的数据集时尤其有用。
  • 灵活性:FM模型不仅可以用于预测任务(如回归和分类),还可以适应各种类型的输入数据(如数值型、类别型等),并且可以轻松地扩展到更高阶的交互。

七、FM模型实现代码

详细实现代码见公众号文章(6月20号)~
在这里插入图片描述

相关文章:

ctr/cvr预估之FM模型

ctr/cvr预估之FM模型 在数字化时代,广告和推荐系统的质量直接影响着企业的营销成效和用户体验。点击率(CTR)和转化率(CVR)预估作为这些系统的核心组件,其准确性至关重要。传统的机器学习方法,如…...

HAL-DMA中断空闲接受不定长数据

title: HAL-DMA中断空闲接受不定长数据 tags: STM32HalCubemax 面对无规律长度的数据帧如何处理? 不定长数据接收可以使用每帧数据发送完成后会有一定的空闲时间"帧的时间间隔?" 如果你想每帧都要可以采用dma加空闲中断的方式空闲中断一次就是一帧数据…...

【会议征稿,CPS出版】第四届管理科学和软件工程国际学术会议(ICMSSE 2024,7月19-21)

第四届管理科学和软件工程国际学术会议(ICMSSE 2024)由ACM珠海分会,广州番禺职业技术学院主办;全国区块链行业产教融合共同体,AEIC学术交流中心承办,将于2024年7月19-21日于广州召开。 会议旨在为从事管理与软件工程领域的专家学…...

无引擎游戏开发(3):数据结构设计|功能函数完善

为了简单起见,我们将棋盘的二维数组定义为全局变量。除此之外还要定义一个char类型的全局变量来识别当前的落子类型,我们将其初始化为‘O’。 char Board_data[3][3] {{-, -, -},{-, -, -},{-, -, -}, };char Cur_piece O; 现在回到“读取操作”部分…...

Laravel 高级:了解$loop

Blade 提供 foreach、while、for 和 forelse 等指令来与 PHP 循环配合使用。 您知道吗... 这些指令中有一个方便的 $loop 变量,它指示当前循环迭代?在本文中,我们将探索 $loop 和 loop 指令。😎 使用$loop比foreach更深入 该for…...

深入理解指针(1)

目录: 1. 内存和地址 2. 指针变量和地址 3. 指针变量类型的意义 4. const修饰指针 5. 指针运算 6. 野指针 7. assert断⾔ 8. 指针的使⽤和传址调用 1. 内存和地址 1.1 内存 在讲内存和地址之前,我们想有个⽣活中的案例: 假设有⼀栋宿舍楼&a…...

在无线网中 2.4G、5G、WiFi6、WiFi7 都是什么意思?

有同学问我在无线网中 2.4G/5G/WiFi6/WiFi7 都是什么意思?其实这是两个概念, 2.4G/5G 是频段,WiFi6/WiFi7 是无线协议的版本,千万别把版本和频段搞混了。 WiFi 协议是一系列基于 IEEE 802.11 标准的无线局域网技术协议&#xff0…...

milvus元数据解析工具milvusmetagui介绍使用

简介 milvusmetagui是一款用来对milvus的元数据进行解析的工具,milvus的元数据存储在etcd上,而且经过了序列化,通过etcd-manager这样的工具来查看是一堆二进制乱码,因此开发了这个工具对value进行反序列化解析。 在这里为了方便交…...

LabVIEW电磁超声热态金属在线缺陷检测系统

LabVIEW软件开发的电磁超声热态金属在线缺陷检测系统针对极端高温环境下的金属材料,进行实时、无损的缺陷检测,具有高精度和高可靠性,能够显著提高材料质量控制的效率和准确性。 项目背景 随着工业技术的发展,高温环境下的金属材…...

leecode代码模板

二分算法: 34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计…...

可靠性测试及模型计算

双85高温高湿测试 场景描述: 85℃温度 85%湿度 老化测试 目的: 衡量产品使用寿命 反向推导: 如何根据产品寿命及工况计算双85测试时间 模型介绍 本质是化学反应速率(老化的本质是)随温度的变化 温湿度循环测…...

【Tools】 深入了解Burp Suite:Web应用抓包利器

唱 情 歌 齐齐来一遍 无时无刻都记住掌声 响遍天 来唱 情 歌 由从头再一遍 如情浓有点泪流难避免 音阶起跌拍子改变 每首歌 是每张脸 喜欢我 别遮脸 任由途人发现 🎵 刘德华《十七岁》 在Web应用和移动应用的开发与测试过程中,抓包…...

技术先进、应用广泛、社区活跃的[项目名称]

项目介绍 ----  [项目介绍内容],此项目在开源社区中备受欢迎,其创新性技术和广泛应用领域吸引了大量开发者关注。  代码解释 ----  [代码解释内容],该项目采用[编程语言],通过[技术栈]实现,具有[功能特点]。  …...

Vue中data的属性可以和methods中方法同名吗,为什么?

在Vue中,data的属性不可以和methods中的方法同名,原因如下: 命名规范:从编程规范的角度来看,同名属性或方法可能会导致混淆和难以维护的代码。data通常用于存储组件的状态或数据,而methods则包含组件的行为…...

Esxi上创建windows 11虚拟机

下载windows 11系统镜像 Download Windows 11 (microsoft.com) 虚拟机配置 正常安装部署,需要注意以下几点: 1.cpu开启虚拟化,启用CPU热添加 2.内存开启热插拔 3.磁盘类型最好选择精简置备(磁盘只使用最初所需要的数据存储空间…...

法大大亮相国家级期刊,助力数字政务有实“例”!

近日,在最新发布的国家级学术期刊《市场监督管理》中,法大大作为国内领先的电子签厂商亮相,这也是电子签行业的“第一次”。 截自《市场监督管理》2024年第12期 《市场监督管理》杂志于1953年创刊,是中国工商出版社主办的一本学术…...

【管理咨询宝藏131】麦肯锡波士顿贝恩经典战略咨询报告套装

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏131】麦肯锡波士顿贝恩经典战略咨询报告套装 【格式】PDF版本 【关键词】麦肯锡、波士顿咨询、贝恩咨询、战略咨询、战略落地、战略洞察 【强烈…...

Python | Leetcode Python题解之第160题相交链表

题目: 题解: class Solution:def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:A, B headA, headBwhile A ! B:A A.next if A else headBB B.next if B else headAreturn A...

SSRF学习,刷题

[HNCTF 2022 WEEK2]ez_ssrf 给了一个Apache2的界面,翻译一下 就是一个默认的界面,目录扫描 可以看到flag.php,肯定是不能直接访问得到的,还有index.php,访问这个 可以看到三个参数data,host,port 还有fsockopen() 函数是 PHP 中用于打开一个…...

K-Means 算法详解

K-Means 是一种常用的无监督学习算法,广泛应用于数据聚类分析。本文将详细讲解 K-Means 算法的原理、步骤、公式以及 Python 实现,帮助你深入理解这一经典算法。 什么是 K-Means 算法? K-Means 算法是一种基于原型的聚类算法,其…...

【DIY飞控板PX4移植】BARO模块BMP388气压计的PCB硬件设计和PX4驱动配置

BARO模块BMP388气压计的PCB硬件设计和PX4驱动配置 BMP388简介硬件设计封装原理图PCB设计引脚选择问题 PX4驱动配置飞控板的配置文件夹结构default.px4board文件nuttx-config/nsh/defconfig文件nuttx-config/include/board.h文件src/board_config.h文件src/i2c.cpp文件init/rc.b…...

Flutter框架高阶——Window应用程序设置窗体窗口背景完全透明

文章目录 1.修改 main.cpp1)C 与 Win32 API2)EnableTransparency()3)中文注释 2.编写 Flutter 代码1)bitsdojo_window2)window_manager3)区别对比4)同时使用(1)设置初始化…...

HJ39判断两个IP是否属于同一子网

提示:文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 HJ39判断两个IP是否属于同一子网 一、 代码: 第一版代码没有对掩码网络号进行处理。一开始对非法字段的理解就是value大于255。然后执行示例, 254.255.0.0 85.122.52.249 10.57.…...

opencv学习笔记(2)

设置鼠标回调函数 setMouseCallback(winname, callback, userdata) winname:窗口名字 callback:回调函数 userdata:传回callback中 callback(event, x, y, flags,userdata) event:鼠标事件 x: 鼠标的x坐标 y: 鼠标的y坐标 flags:鼠标键和组合键 userdata:setMouseCallback传回…...

分享vs code十大好用的插件

1.Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code 将 VS Code 界面改成简体中文。 2.PDF Viewer 在VS Code 中打开 PDF文件。 3.TODO Highlight 这个扩展会突出显示您的待办事项注释,并提醒存在未完成的注释或任务。 该扩展附带了内…...

MySQL支持哪些特殊字符

MySQL支持多种特殊字符,这些字符在SQL语句中具有特定的含义,需要在使用时特别注意。以下是一些MySQL中的特殊字符及其相关信息: 引号: 单引号():用于定义字符串。如果字符串中包含单引号本身&…...

c语言中的宏是什么?

宏的定义及用途 C语言中的宏是一种预处理指令,它允许程序员定义一个名称,该名称可以代表一段代码或一个值。宏的主要用途是简化代码的编写,提高代码的可读性和可维护性,以及实现代码的重复利用。 宏的定义使用#define指令&#…...

采购信息记录标准编码范围维护以及如何开发获取编码范围

上图是配置的点,在这里可以获取到对应的编号范围以及对象名称 下面的话是官方就如何取编号的技术文档 SAP Help Portal...

渗透测试基础(四) MS08-067 漏洞攻击

1. 漏洞介绍 漏洞描述 Microsoft Windows Server服务RPC请求缓冲区溢出漏洞Windows的Server服务在处理特质RPC请求时存在缓冲区溢出漏洞,远程攻击者可以通过发送恶意的RPC请求触发这个溢出,导致完全入侵用户系统,以SYSTEM权限执行任意指令。…...

vmware 虚拟机保留数据扩展C盘

1,在默认安装系统的时候,VMWARE一般给C盘50G,很多人想着够用了,但是后面慢慢的安装各种大型软件,游戏,才发现,悔时已晚。 2,有很多人虚拟机其实就是拿来游戏多开,但是当…...

网站设计建设趋势/seo优化教程自学

大家好,今天分享下群友老李在大四上学期做的一个项目。希望对大家有启发。 项目信息 项目名称:龙芯2K上的RT-Thread系统 学生姓名:李志锐 学校:聊城大学 大四在读 方案描述:该项目要求首先实现RT-Thread项目到龙芯2K…...

wordpress debug.log/seo整站优化报价

目录 0、前言 1、在PyCharm的External Tools中配置QtDesigner 2、在PyCharm的External Tools中配置Pyuic 3、在PyCharm的External Tools中配置pyrcc 4、在主页面中调出External Tools中的QtDesigner、pyuic、pyrcc 5、将ui文件转化成py文件 6、将qrc文件转化成py文件 0、…...

各类网站建设/百度指数教程

大学数学实验——MATLAB 应用篇薛长虹 于 凯 编著西南交通大学 出版社成 都大学数学实验是大学数学教学改革的内容。该课程的开设使得学生学会使用计算机中的数学软件去做计算和研究工作,而不再是花大量的时间去钻研计算技巧。掌握运用数学软件进行计算、编程、设计…...

web软件设计专业/福州seo视频

最近到整理了一份CPU的信息,应该算是比较全面的吧。几乎现在所有的X86 CPU都内置了CPUID指令以辨别真伪,一些CPU厂商例如AMD,VIA等还内置了更加丰富的扩展CPUID指令,用着更方便了。下面我们利用Delphi来实现一个CPU检测的软件。CP…...

上海用哪个网站网购/企业网络营销的模式有哪些

画图 import numpy as np import cv2 import matplotlib.pyplot as plt # 显示图片 def show(image):plt.imshow(image)plt.axis(off)plt.show()# 画直线;image:在该图像上绘制直线;(0, 0):直线起点; (300, 300):直线终点; green…...

公司网站建设费用如何做账/优化快速排序

长风破浪会有时,直挂云帆济沧海。在Java中final称为终结器,在Java里面可以使用final定义类、方法和属性。使用final定义的类不能再有子类,即:任何类都不能继承以final声明的父类。注意:开发中大部分不需要使用final来定…...