00 如何根据规律在变化中求发展?
你好,我是周大壮。目前,我已在搜索推荐等算法技术领域从事研发近 10 年,做过诸多流量分发领域的算法技术工作。
如今任 58 同城的算法架构师、技术委员会人工智能分会委员、58 本地服务事业群算法策略部负责人,我主要负责 58 集团四大业务板块之一本地服务事业群算法能力基础建设(包括本地服务业务中搜索推荐推送、知识图谱、信息爬取、标签等系统)。
在工作期间,我不仅带领了 20+ 团队从 0 到 N 构建了一套推荐系统工程和算法体系,还支持了 58 同城本地服务、到家精选品牌业务、到店及社区产品的流量分发和营销业务。
为什么要学习推荐系统?
近年来,深度学习技术的快速发展,大大加速了人工智能在传统和互联网领域的商业化落地。现如今,人工智能的应用已如雨后春笋般渗透到我们衣食住行的方方面面。比如无人超市的面世、无人驾驶汽车的正式上路、智能手机刷脸识别模式、医疗图像技术等。
与此同时,面对时间的碎片化、信息的同质化/海量化、用户选择项的增多和用户耐心的减退,如何满足用户需求、拓展用户需求、驱动业务增长、优化行业生态等,成了各个行业亟待解决的问题。因此,个性化推荐系统便应运而生了。
比如 58 同城本地服务涉及 200+ 个行业(如家政、装修、租车、教育培训等),业务生态涉及面非常广且杂,这就大大超出了我们主动获取信息的能力。此时,在不同场景下,我们就不得不利用推荐技术实现供需匹配,因为它具备如下几点优势。
对用户而言:
-
帮助用户快速、精准获取信息,降低用户获取信息和做决策的成本;
-
挖掘用户需求,持续为用户带来惊喜感和新鲜感。
对商家而言:
-
通过建立反馈机制和用户交互,不断优化对用户群体的认知,从而不断提升系统精准度和用户体验;
-
通过个性化服务实现商品精准投放,从而降低商品周转时间、减少库存积压,进而大幅提升产品销量;
-
让用户产生强烈的信赖感和依赖感,提升用户对产品的黏性,从而增强平台商业变现能力。
58 同城本地服务推荐系统上线之后,支持了多个业务,几十种不同应用场景的产品需求,大幅提升了产品的转化率和用户黏性。相对原有的简单推荐策略,个性化推荐系统在各个业务应用中的转化率效果平均提升幅度达 1 倍以上。
不仅仅是 58 同城,很多耳熟能详的产品也都有着强大的推荐系统。也就是说推荐系统早已成为所有互联网产品的标配,并在电商、音视频、新闻资讯、图书、社交、教育等多种领域都有所应用。
可以说,一个好的推荐系统是一个产品成功的重要保证。
也正是基于此,各大公司纷纷放出了众多推荐系统相关的职位(一线大厂岗位也很多)。通过查询拉勾招聘官网,我们发现 1~3 年经验推荐系统算法工程师的薪资最低都是 20K 起,且主要都是大厂,如下图所示:

由此可见,熟练掌握了推荐系统相关知识将在职场中更吃香,不仅薪水高、就业范围广,还更容易挤进大厂。
加之,企业都要求面试者熟悉常用的推荐算法、具备一定的算法功底和工业实践经验,也就是说想真正做好一个推荐系统,技术门槛相对较高,可一旦我们做好了,不可替代性更强。

不过,在学习推荐系统时,我们往往会遇到以下挑战:
-
因为推荐场景主要在各个大厂广泛应用,很多中小厂的工程师对于推荐系统的产生不知所云,不知道到底需要掌握哪些知识。
-
人工智能领域各大论文数量呈现井喷趋势,网上推荐系统相关的学习资料汗牛充栋。而这些资料基本是东拼西凑,没有实质性含量,我们也就很难在学习时摸出推荐系统的门道。
-
推荐算法作为推荐系统中非常核心且关键的部分,很大程度上决定了推荐系统性能的优劣。现如今,推荐算法种类较多,使得很多人对算法存在误解,以为只有高深的算法才能搭建一个好的推荐系统,其实不然。 一个好的、有效的推荐系统应该建立在具体的问题之上,并寻找最合适的推荐算法进行解决。
掌握推荐系统的发展规律,才是根本
为此,58 技术委员会与拉勾教育共同推出了这个专栏,这也是我个人 10 多年推荐算法实战经验的浓缩与提炼。
58 技术委员会由 58 集团内部各技术通道的专家组成,是一个以把握技术方向、建设技术人才梯队、营造技术氛围、鼓励技术创新、推动开源项目为主要目标的技术领导机构。
在《易经》中,我们把事物发展划分为潜龙勿用、见龙在田、终日乾乾、或跃在渊、飞龙在天、亢龙有悔这六个阶段,它描述了事物从孕育——出生——发展——壮大——成功——衰败的自然规律。在学习推荐系统时,我们同样需要经历这六个阶段。
我根据这六个阶段划分为了 5 大内容模块(结语“亢龙有悔”),总计 18 讲,旨在帮助你从入门到精通,了解推荐系统的相关知识脉络、推荐算法的基本原理,并结合实战经历助你融会贯通,进而在职场中保持核心竞争力,让自己无可替代。
模块一:推荐系统基础篇(潜龙勿用)
此模块属于推荐系统的入门阶段,我将讲解推荐系统有关的理念、基础数据体系搭建等知识。学完这部分内容,你将快速掌握互联网业务场景、推荐系统的作用、埋点上报、用户和物品画像,以及标签挖掘、A/B 测试系统等基础系统的做法。
模块二:传统推荐算法的演化之路(见龙在田)
此模块主要讲解相对容易的传统机器学习推荐算法,它也是推荐算法的基础。学完这部分知识,你将掌握传统经典推荐算法的原理,以及传统推荐算法的发展脉络,此时才能把推荐算法工作做到及格。
模块三:深度学习推荐算法的演化之路(终日乾乾)
此模块主要从系统化的角度讲解20+ 种常见的深度学习推荐算法,学习难度比较大,也是本课程中相当重要的内容。学完这部分知识,你将真正掌握最有影响力的深度学习推荐算法及其发展脉络,从而将推荐算法工作做到 80 分,并以此为基准向着更高、更远的方向前进。
模块四:推荐系统绕不开的经典问题(或跃在渊)
此模块属于推荐系统的进阶内容,其中的问题也是在你在落地过程中一定会遇到的。因为使用算法模型时,我们需要结合当前业务场景进行选择,所以这部分内容将结合迁移学习、强化学习等实际业务落地场景,介绍推荐领域独特问题和经典问题的解法,助你增强解决实际问题的能力。学完后,你将知晓如何在特有场景下通过推荐算法做好一个推荐系统。
模块五:推荐系统理论与实战篇(飞龙在天)
此模块属于推荐系统的拔高内容,我将以 58 同城本地服务业务为背景,详细介绍如何根据实际业务的特点和难点构建流量分发体系,以及在体系分层优化中如何结合算法和工程能力实现推荐算法大串讲及工程化实践方案的落地。这部分知识,将助你进一步巩固前面所学,熟悉整个流量系统的搭建过程和推荐各阶段个性化优化方法,并积累丰富的实战经验。
如果你是一名互联网非算法从业人员,想了解推荐系统,本专栏将由浅入深为你讲述推荐系统的来龙去脉;如果你是一名算法工程师,在推荐算法中迷失了自己,本专栏将为你拨云见日,梳理和把握推荐领域的算法知识体系与脉络。
讲师寄语
以上五个阶段就是系统的推荐系统知识体系,因为前面的模块是下一个模块的基础,所以我们绝不可跳过前面的内容或者省略其中一个步骤往下学,而需要稳扎稳打。只有这样,我们才能顺其自然地到达最高阶段。到了那个时候,使用推荐系统相关知识时,相信你绝对能信手拈来、游刃有余。
《道德经》中宣扬“大道至简”,也就是说无论万物如何变化多端终会回归根本,而掌握了这个根本的人才能从中把握客观规律,从而面向未来。
我相信“吾道不孤”,你与其奔波于大小行业会议被搞得懵懵懂懂,不如与我一起解构推荐系统。把你关于推荐系统的相关困惑与经历,在留言区说给我听?
相关文章:
00 如何根据规律在变化中求发展?
你好,我是周大壮。目前,我已在搜索推荐等算法技术领域从事研发近 10 年,做过诸多流量分发领域的算法技术工作。 如今任 58 同城的算法架构师、技术委员会人工智能分会委员、58 本地服务事业群算法策略部负责人,我主要负责 58 集团…...
UUID和自增ID做主键到底哪个好?
UUID(通用唯一识别码) 优点: 全局唯一性:由不同算法生成,确保全球范围内的唯一性,避免主键冲突。不可预测性:随机生成,难以被猜测,适合保密性应用。分布式应用࿱…...
FW SystemUI Keyguard解析(二)
文章目录 CTS之Keyguard Menu事件处理 CTS之Keyguard Menu事件处理 事件触发点: NotificationShadeWindowViewController.dispatchKeyEvent 设置setInteractionEventHandler回调之后通过NotificationShadeWindowView 触发 调用到return mService.onMenuPressed(); public cla…...
MySQL之备份与恢复(二)
备份与恢复 定义恢复需求 如果一切正常,那么永远也不需要考虑恢复。但是,一旦需要恢复,只有世界上最好的备份系统是没用的,还需要一个强大的恢复系统。 不幸的是,让备份系统平滑工作比构造良好的恢复过程和工具更容易…...
MySQL:保护数据库
保护数据库 1. 用户1.1 创建用户1.2 查看用户1.3 删除用户1.4 修改密码 2. 权限2.1 授予权限2.2 查看权限2.3 撤销权限 之前都是介绍本地数据库而你自己就是数据库的唯一用户,所以不必考虑安全问题。但实际业务中数据库大多放在服务器里,你必须妥善处理好…...
不是大厂云用不起,而是五洛云更有性价比
明月代维的一个客户的大厂云境外云服务器再有几天就到期了,续费提醒那是提前一周准时到来,但是看到客户发来的续费价格截图,我是真的没忍住。这不就是在杀熟吗?就这配置续费竟然如此昂贵?说实话这个客户的服务器代维是…...
C++初学者指南-3.自定义类型(第一部分)-异常
C初学者指南-3.自定义类型(第一部分)-异常 文章目录 C初学者指南-3.自定义类型(第一部分)-异常简介什么是异常?第一个示例用途:报告违反规则的行为异常的替代方案标准库异常处理 问题和保证资源泄露使用 RAII 避免内存泄漏!析构函数:不要让异…...
学会python——用python编写一个电子时钟(python实例十七)
目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.电子时钟程序 3.1 代码构思 3.2代码实例 3.3运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性…...
elementui中@click短时间内多次触发,@click重复点击,做不允许重复点击处理
click快速点击,发生多次触发 2.代码示例: //html<el-button :loading"submitLoading" type"primary" click"submitForm">确 定</el-button>data() {return {submitLoading:false,}}//方法/** 提交按钮 */sub…...
助力游戏实现应用内运营闭环,融云游戏社交方案升级!
通信能力在所有应用场景都是必备组件,这源于社交属性带给应用的增长神话。 在游戏场景,玩家从少数核心向大众用户泛化扩展的过程,就是游戏深度融合社交能力的过程。 从单机到联机,游戏乐趣的升级 1996 年,游戏界顶流…...
守护创新之魂:源代码防泄漏的终极策略
在信息化快速发展的今天,企业的核心机密数据,尤其是源代码,成为了企业竞争力的关键所在。然而,源代码的泄露风险也随之增加,给企业的安全和发展带来了巨大威胁。在这样的背景下,SDC沙盒作为一种创新的源代码…...
Halcon 基于分水岭的目标分割
一 分水岭 1 分水岭介绍 传统的分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是地质学上的拓扑地貌,图像中每一像素的灰度值表示该点的海拔高度,每一个局部极小值及其周边区域称为集水盆地&…...
PHP 面向对象编程(OOP)入门指南
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,通过使用对象来设计和组织代码。PHP作为一种广泛使用的服务器端脚本语言,支持面向对象编程。本文将介绍PHP面向对象编程的基本概念和用法࿰…...
Django学习第三天
python manage.py runserver 使用以上的命令启动项目 实现新建用户数据功能 views.py文件代码 from django.shortcuts import render, redirect from app01 import models# Create your views here. def depart_list(request):""" 部门列表 ""&qu…...
Vue3实现点击按钮实现文字变色
1.动态样式实现 1.1核心代码解释: class"power-station-perspective-item-text": 为这个 span 元素添加了一个 CSS 类,以便对其样式进行定义。 click"clickItem(item.id)": 这是一个 Vue 事件绑定。当用户点…...
深入理解Vue生命周期钩子函数
深入理解Vue生命周期钩子函数 Vue.js 是一款流行的前端框架,通过其强大的响应式数据绑定和组件化的开发方式,使得前端开发变得更加简单和高效。在Vue应用中,每个组件都有其生命周期,这些生命周期钩子函数允许开发者在不同阶段执行…...
Linux-gdb
目录 1.-g 生成含有debug信息的可执行文件 2.gdb开始以及gdb中的常用执行指令 3.断点的本质用法 4.快速跳出函数体 5.其他 1.-g 生成含有debug信息的可执行文件 2.gdb开始以及gdb中的常用执行指令 3.断点的本质用法 断点的本质是帮助我们缩小出问题的范围 比如,…...
Oracle分析表和索引(analyze)
分析表 analyze table tablename compute statistics; 分析索引 analyze index indexname compute statistics; 该语句生成的统计信息会更新user_tables这个视图的统计信息,分析的结果被Oracle用于基于成本的优化生成更好的查询计划 对于使用CBO(Cost-Base Optimization)很有好…...
MyBatis踩坑记录-多表关联字段相同,字段数据覆盖问题
MyBatis踩坑记录-多表关联字段相同,字段数据覆盖问题 1. 背景描述2. 实体记录3. 错误映射3.1 造成的影响 4. 解决办法4.1 修改映射文件 5. 修复后的效果5.1 返回的数据5.2 正确展示 7. end ~ 1. 背景描述 现有一下业务,单个任务下可能会有多个子任务&am…...
昇思25天学习打卡营第6天|数据变换 Transforms
学习目标:熟练掌握数据变换操作 熟悉mindspore.dataset.transforms接口 实践掌握常用变换 昇思大模型平台学习心得记录: 一、关于mindspore.dataset.transforms 1.1 变换 mindspore.dataset.transforms.Compose将多个数据增强操作组合使用。 mindspo…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
