FM模型与POLY2模型

两个核心细节

掌握FM,有两个细节需要注意:参数量级的变化和时间复杂度的变化。

首先对于参数量级,由线性模型到多项式模型到FM模型参数量级变化为:

n–>n*n–>kn (k<<n)

其次是由原始FM公式到化简之后的FM公式复杂度的变化情况为:

Kn*n–>kn

线性模型

回归问题我们一般使用的比较见得baseline就是线性回归,二元分类问题就是逻辑回归LR。

线性模型公式如下(回归问题):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于线性模型,我们的假设一般是认为特征之间是相互独立的,无法学习到特征之间的交叉影响。

为了解决特征交叉的问题,我们一般可以人为的加入一些自己的先验信息,比如做一些特征之间的交互,不过这个很需要人们的经验。

POLY2模型–暴力组合特征交叉

这个时候,POLY2模型成了可行的方案。POLY2 模型,对所有特征做了两两交叉,并对所有特征组合赋予了权重,在一定程度上解决了特征组合问题,本质仍然是线性模型,训练方法与逻辑回归没有区别。

我们把POLY2(只是特征两两交叉的部分)加到线性模型中,从而模型可以过渡到多项式模型,公式如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(ps:看到这里我自己有一个疑问,同一个特征onehot之后,会在自己里面做特征交叉吗)

看这个公式,主要是看后面那个交叉的部分。看到这部分,其实很容联想到我们在LR中自己加入交叉特征的部分。

但是需要注意的是,这里有点像暴力求解一样,忽视或者说省去了人工先验的部分,直接做到了所有特征之间的交叉,然后去求解对应的参数就可以。

POLY2模型两个问题

但是这样暴力求解存在两个问题:参数量和参数稀疏导致学习困难的问题。

先说参数量的问题,如果我自身特征(未交叉之前)就已经很多了,为n,那么交叉之后就是一个 n*n级别的参数量。极端情况会出现参数的量级比样本量级都大,训练起来及其的困难。

再说参数稀疏的问题。互联网数据通常使用one-hot编码除了类别型数据,从而使特征向量极度稀疏,POLY2模型做无选择的特征交叉,使得特征向量更加的稀疏,导致大部分交叉特征的权重缺乏有效的数据进行训练,无法收敛。

我自己理解的时候感觉这个很像是NLP中OOV情况。

FM模型

面对这两种问题,FM模型怎么解决呢?

FM相比于POLY2模型,主要区别是用两个向量的内积代替了单一权重系数,具体来说,就是FM为每个特征学习了一个隐权重向量。在特征交叉的时候,使用两个特征向量的内积作为交叉特征的权重。

这样其实就解决了上面两个问题。

参数量的问题变为了 kn个参数,因为每个特征对应一个K维度的向量。

其次是参数学习的问题。OOV问题很大缓解,即使当前特征交叉在训练样本中没出现过,但是每个特征已经学到了自己embedding,内积之后是有结果的。这也是为什么FM模型泛化能力强的根本原因。

FM模型如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中涉及到的二阶部分可以通过公式的化简从Kn*n–>kn:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

参考链接:

文章:

FM算法解析 - 王多鱼的文章 - 知乎 https://zhuanlan.zhihu.com/p/37963267

推荐系统召回四模型之:全能的FM模型 - 张俊林的文章 - 知乎 https://zhuanlan.zhihu.com/p/58160982

代码:

deepctr-torch 大概跑了一遍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/135009.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用excel计算一个矩阵的转置矩阵

假设我们的原矩阵是一个3*3的矩阵&#xff1a; 125346789 现在求它的转置矩阵&#xff1a; 鼠标点到一个空白的地方&#xff0c;用来存放结果&#xff1a; 插入-》函数&#xff1a; 选择TRANSPOSE&#xff0c;这个就是求转置矩阵的函数&#xff1a; 点击“继续”&#xff1a…

免费录屏软件哪个好用?免费录屏软件排行榜

对于您的团队&#xff0c;屏幕录像机可以用于多种原因——从为您的网站创建教程到记录反复出现的技术问题&#xff0c;再到向您的营销团队发送快速说明而不是电子邮件。 此外&#xff0c;我们不能忘记产品演示和培训视频&#xff0c;它们可供您团队中的许多部门使用&#xff0…

72 内网安全-域横向CSMSF联动及应急响应初识

目录 演示案例:MSF&CobaltStrike联动ShellWEB攻击应急响应朔源-后门,日志WIN系统攻击应急响应朔源-后门,日志,流量临时给大家看看学的好的怎么干对应CTF比赛 涉及资源 权限维持留到后面在补充&#xff0c;先把后面的知识点给大家讲起来&#xff0c;因为权限维持它是我们前期…

队列Queue

结构特点&#xff1a;先进先出实现模式&#xff1a;单向非循环双指针链表 两个指针分别记录头和尾之所以不用循环链表是添加删除元素都在链表头部进行&#xff0c;不涉及尾部增删操作。 声明队列 声明队列之所以要用到两个结构体是因为除了单个链表节点之外&#xff0c;还需要…

js删除json数据中指定元素

delete 删除数组方法&#xff1a; function removeJSONRows() {var tab {"dataRows": [{"id": 1,"name": "使用部门"},{"id": 2,"name": "车辆走行路线"},{"id": 3,"name": &quo…

合并二叉树(Java)

题目描述 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要将这两棵树合并成一棵新二叉树。合并的规则是&#xff1a;如果两个节点重…

Java的类与Golang的结构体的区别

Java作为一门面向对象&#xff08;OOP&#xff09;的编程语言&#xff0c;它有类&#xff08;class&#xff09;的存在&#xff0c;而对于Golang&#xff0c;它不完全遵从OOP编程语言的设计思想&#xff0c;但它也有类似Java类的结构存在&#xff0c;那就是结构体&#xff08;s…

左值右值笔记

左值右值 左值 左值是表示数据的表达式&#xff08;如变量名或解引用的指针&#xff09; 特点&#xff1a;可以获取地址&#xff0c;可以对他赋值。 位置&#xff1a;左值可以出现在赋值符号左边&#xff0c;也可以出现在赋值符号右边 右值 右值有:字面常量, 表达式返回值 …

2020年-2022年聚合支付牌照机构评级结果分析,D/E有所增加

本文首发于移动支付网&#xff0c;标题“聚合支付机构最新评级结果公布&#xff0c;A-、B级别机构减少”&#xff0c;该文是基于其内容进行了数据修订及部分内容优化而成文。 11月7日&#xff0c;中国支付清算协会发布2022年度收单外包服务机构评级等级结果。本次评级工作&…

在 Azure 上构建和部署自然语言处理模型

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是人工智能领域中的重要分支之一&#xff0c;它涉及对人类语言进行理解和分析。在 Azure 平台上&#xff0c;我们可以利用丰富的工具和服务来构建和部署自然语言处理模型&#xff0c;实现从文本…

免费3D骨架工具

免费3D骨架工具 : https://posemy.art/ ControlNet 1.1http://www.coloradmin.cn/o/839105.html?actiononClick https://pan.baidu.com/s/1rh39DI9xVbguLO5l7O4pjA yqqe  网盘里的 预处理器/downloads文件夹&#xff08;包含所有预处理器&#xff09;直接放在 extensions/sd…

【LeetCode刷题-二分查找】--278.第一个错误的版本

278.第一个错误的版本 /* The isBadVersion API is defined in the parent class VersionControl.boolean isBadVersion(int version); */public class Solution extends VersionControl {public int firstBadVersion(int n) {int left 1,right n;while(left < right){int…

企业知识库建设指南:实用经验分享

企业知识库建设是提升内部协作和客户支持效率的重要举措。一个完善的知识库可以帮助企业集中管理和传播知识&#xff0c;提供便捷的自助服务和丰富的编辑工具&#xff0c;从而提升用户体验和品牌好感度。接下来就分享一些经验&#xff0c;关于该如何构建一个高效的企业知识库。…

TCP协议(建议收藏)

1. TCP特点 有连接&#xff1a;需要双方建立连接才能通信&#xff0c;在socket编程中服务端new ServerSocket(port)需要绑定端口&#xff0c;在客服端new Socket(serverIp, serverPort)与服务端建立连接可靠传输&#xff1a;确认应答机制&#xff0c;超时重传机制面向字节流&a…

【文末送JAVA书】包头开发发展

【点我-这里送书】 本人详解 作者&#xff1a;王文峰&#xff0c;参加过 CSDN 2020年度博客之星&#xff0c;《Java王大师王天师》 公众号&#xff1a;JAVA开发王大师&#xff0c;专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生&#xff0c;期待你的…

jbase支持连IRIS

jbase设计的时候就抽取了IDbFactory接口&#xff0c;支持不同数据库只要配置该接口实现类即可&#xff0c;那么就用IRIS测试下多数据库支持。 首先从IRIS安装目录拷贝jar包 然后实现数据库驱动接口 package LIS.Dal.Base;import LIS.Core.MultiPlatform.LISConfigurtaion;…

Java基础(第六期):Java基础巩固、逢七跳过、数组求和、判断数组是否相等、数组逆置、元素位置查找、评委打分、随机产生验证码

Java基础专栏【点击跳转学习】 Java基础&#xff08;第六期&#xff09;&#xff1a;对前五期的综合练习 文章目录 综合练习巩固JAVA基础第六期一、逢 7 跳过二、数组元素求和三、判断两个数组元素是否相同四、查找元素在数组中的索引五、数组元素反转使用for循环的实现方式一、…

MySQL中的索引

目录 一、概念 二、作用和特点 作用 特点 三、使用场景 四、使用 1、查看索引 2、创建索引 3、删除索引 五、索引底层数据结构的实现 B树&#xff08;B-树&#xff09; B树 特点 重复出现的好处 一、概念 索引 翻译成英文&#xff1a;index&#xff08;下标&#xf…

Doris学习--1、Doris简介、操作Doris、Doris架构(数据模型)

星光下的赶路人star的个人主页 心之所向&#xff0c;剑之所往 文章目录 1、Doris简介1.1 快速开始1.2 安装配置1.2.1 应知前提1.2.2 配置Doris1.2.2.0 配置前提1.2.2.1 配置FE&#xff08;Frontend&#xff09;1.2.2.2 启动FE1.2.2.3 连接FE1.2.2.4 停止FE1.2.2.5 配置BE&#…