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

相关文章

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为