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…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
