10分钟掌握推荐算法从古至今

2024-09-03 21:08

本文主要是介绍10分钟掌握推荐算法从古至今,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

就2016-2022最近几年来看,很多做算法的岗位招聘信息都要求硕士学历起步,但有的也非必要条件;所以劝退第一学历非重点本科的童鞋,有些公司、岗位卡学历,其实其他研发岗也挺好的,不少公司算法跟其他研发岗是同薪的,没有必要在自己不占优的方向上死磕。以下原创皆本人自身理解以及推荐看过的部分好文,若有疏漏,不吝赐教。

  1. 传统机器学习篇

入门阶段还是建议从传统机器学习开始,一来因为传统机器学习相对简单,方便工程上实现并快速部署,二来是不少深度学习中的算法都是在传统机器学习的基础上改进而来的。这里着重掌握三组基础模型:

第一组:UCF、ICF、基于物品内容的协同(不要跟物品协同搞混,前者的相似是基于用户行为的,后者是基于内容的),这几个较简单,不解释;

第二组:MF(不要跟ALS搞混,als是它的求解算法)、FM(相当于LR加poly2结合矩阵分解,注意FM我们常做embeding召回模型,此时没有LR部分,相当于只有二阶交叉部分,用到的user的embeding表示是user自身各个特征的隐向量相加[分配律、交换律自己转下],并没有用户自身的性别、职业等特征交叉,item同理);

第三组:LR+GBDT、xgboost、lightgbm,这里还是看人家写的吧,先大致看下信息熵相关的:

为什么交叉熵(cross-entropy)可以用于计算代价? - 知乎

散度_百度百科

机器学习-一文理解GBDT的原理-20171001 - 知乎

深入理解LightGBM - 知乎

对于工业化场景使用LR,初学者在小公司自学容易忽略特征离散化,不知道利用GBDT的叶子结点索引,将特征处理成0-1形式也是重要的一环,无非就是多些维度罢了。

  1. 深度篇

自2016年谷歌的AlphaGo成为第一个在 19×19 棋盘上战胜人类围棋冠军的智能系统,深度学习算是真正火起来了。在接触深度学习之前,需要先了解一些基础:

universal approximation theorrm:

神经网络为什么能够无限逼近任意连续函数? - 知乎

万能近似定理(universal approximation theorrm)_郭云飞的专栏-CSDN博客_万能逼近定理

One hot、multi hot到Word2vector embeding:

笔记1 one-hot、embedding - 知乎

https://blog.csdn.net/weixin_45918732/article/details/103375037?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-1-103375037.pc_agg_new_rank&utm_term=%E8%BE%93%E5%85%A5%E5%B1%82%E4%B8%8EEmbedding&spm=1000.2123.3001.4430 

RNN在NLP领域与CNN在CV领域,与推荐领域侧重点差异:

DNN、RNN、CNN.…..一文带你读懂这些绕晕人的名词 - 知乎

其他如BN加快训练,防止梯度消失;激活函数选取等基础暂时没记得好的文章介绍。

有了以上基础后,着重掌握部分模型:DSSM、mind、dsin、deepfm、DCN、DCNv2、xDeepFM等;其他类似的模型也不少,但不建议看太多,这里推荐看:

深入理解推荐系统:特征交叉组合模型演化简史 - 知乎

【微软2018】推荐系统组合显示和隐式特征交叉模型(xDeepFM) - 知乎 (CIN三维矩阵那里似乎不对,看上面那个吧)

https://github.com/shenweichen/DeepCTR (双刃剑,自己造轮子理解更深)

https://github.com/shenweichen/DeepMatch

这里重点是xdeepfm,既然看到了xdeepfm,想必deepfm跟dcn已经看完了;xdeepfm的特点在于它的CIN网络做了显示的向量级别的高阶特征交叉,相当于FM跟DCN cross layer的结合,同时还引入了CNN。从公式上看,xdeepfm这里CIN若退化到深度为1时,去掉CNN卷积与sum pooling便相当于deepfm;fm只有用户ID和商品ID时,去掉LR部分便是我们的MF矩阵分解。

  1. 未来篇

技术迭代演进挺快的,每年都要找几个上一年的最新模型学习。不管怎样都还是要先继续学习吧。

很多人都说IT研发35岁瓶颈,确实公司不需要那么多十年以上的资深专家,更多的是需要三五年经验的年轻搬砖主力。由于金字塔效应,那些老去的工程师不可能人人当上技术总监。从公司成本角度讲,35岁以上的研发太贵,从管理角度讲,资历浅的年轻人更听话,不用那么担心恃才傲物的情况。

以后的路,且行且看吧!共勉!

这篇关于10分钟掌握推荐算法从古至今的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134048

相关文章

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

Java日期类详解(最新推荐)

《Java日期类详解(最新推荐)》早期版本主要使用java.util.Date、java.util.Calendar等类,Java8及以后引入了新的日期和时间API(JSR310),包含在ja... 目录旧的日期时间API新的日期时间 API(Java 8+)获取时间戳时间计算与其他日期时间类型的转换Dur

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

Python多进程、多线程、协程典型示例解析(最新推荐)

《Python多进程、多线程、协程典型示例解析(最新推荐)》:本文主要介绍Python多进程、多线程、协程典型示例解析(最新推荐),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 目录一、multiprocessing(多进程)1. 模块简介2. 案例详解:并行计算平方和3. 实现逻

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ