科创科普:AI 是怎么「猜你喜欢」的——推荐算法入门

科创科普:AI 是怎么「猜你喜欢」的——推荐算法入门

一、手机里的「读心术」 打开短视频应用,刷到的常常刚好是你爱看的;音乐软件的每日推荐,有时比你自己挑的歌单更合口味。这既不是手机偷听了你说话,也不是运气好,而是推荐算法根据你过去的行为做的统计推测。

它的核心问题只有一句话:面对海量内容,把最可能被你喜欢的少量内容排到最前面。这类任务在人工智能领域叫「推荐系统」,是人工智能最成功的落地应用之一。

二、推荐系统的三样原料 第一样是用户行为数据:点赞、收藏、转发、看完、快进、跳过、购买、停留时长。要注意「跳过」和「看完」同样重要——前者是负反馈(我不感兴趣),后者是正反馈(这个我喜欢)。 第二样是内容特征数据:视频的标签、时长、作者、背景音乐、画面风格;商品的类目、价格、品牌。 第三样是关系数据:谁看了什么、谁和谁的兴趣相似。三样数据越多,推荐就越准;数据太少,算法只能「瞎猜」。

三、两种最基本的推荐思路 思路一:基于内容的推荐——比的是「内容像不像」。 如果你连续看完三部关于机器人的科普视频,系统就会给「机器人」这类特征加权,下次遇到同类内容优先推给你。它的优点是容易解释、新内容一上线就能被推荐;缺点是容易越推越窄,同一类题材反复出现。

思路二:协同过滤——比的是「人像不像」。 把每个人的打分记成一张表(用户—物品评分表):

      视频A   视频B   视频C

小明 5 4 ? 小红 4 5 3 小刚 5 3 2

现在要预测小明对视频C会打几分。做法是:先找和小明口味最像的人。小明的打分模式(爱看A、也爱看B)与小红几乎一致,于是借用小红对C的评分 3,推测小明大概率也不太爱看C。

协同过滤最大的好处,是能发现你自己都想不到的关联——系统不需要知道视频C讲的是什么,只要发现「喜欢A的人往往也喜欢C」就够了。它的缺点是数据少时不准,新用户和新内容都会遇到「冷启动」问题。

四、冷启动怎么办 新用户刚注册,没有任何行为记录,系统通常先用热门榜单、地域、年龄做粗略推荐,然后随着你的第一次点击、第一次完整观看迅速调整。 新内容刚上架,没有播放数据,系统会用它的标签和画面特征去找相似内容,先小范围曝光试水(业内称为「探索流量」),数据表现好再逐步放大。

五、为什么会有「信息茧房」 如果推荐系统只追求「你最可能点开的」,就会不断强化你已有的偏好,让你看到的世界越来越窄。成熟的系统会故意留出一部分流量做多样性探索:掺入少量你平时不太接触、但可能拓宽兴趣的内容。作为使用者,也可以主动搜索、主动点开陌生领域,给算法提供更广的输入——你是算法的老师,不只是它的学生。

六、用 Python 感受一下「找相似的人」 下面这段代码用最简单的方式计算两位用户的口味差距(总差距越小,代表两人越像): ming = [5, 4] hong = [4, 5] diff = 0 for i in range(2): diff = diff + abs(ming[i] - hong[i]) print("总差距:", diff, "→ 差距越小越相似")

思路要点有三个:一是用列表把一个人的打分打包存放;二是用 for 循环逐个比较每一部作品;三是用 abs() 求绝对值,把「差异」变成好比较的「距离」。真正的工业级推荐系统会用到成千上万个维度、更复杂的相似度公式,但「找相似—做推测」的内核完全一样。

七、练习 1. 举三个你在生活中遇到的推荐场景,并分别写出它的正反馈和负反馈各是什么。 2. 在用户—物品表里,如果某位用户从来没打过分,协同过滤会遇到什么问题?该怎么补救? 3. 用一句话解释「基于内容的推荐」和「协同过滤」的区别。 4. 为什么推荐系统要故意推荐一些你不一定喜欢的内容? 5. 把第六节的 Python 例子改成三个用户的比较,并输出与小明差距最小的那个人。

参考答案思路: 1. 例如音乐应用:点赞收藏是正反馈,切歌跳过是负反馈;短视频:完播是正反馈,两秒划走是负反馈;购物:加购物车是正反馈,关掉页面是负反馈。 2. 会遇到冷启动问题;可用热门榜单、注册信息、兴趣问卷或主动让用户选几个喜欢的标签来补救。 3. 前者比的是「内容像不像」,后者比的是「人像不像」。 4. 为了抑制信息茧房、保持推荐多样性、帮助用户发现新兴趣,也能让平台的长尾内容获得曝光。 5. 再加一个列表如 gang = [5, 3],分别用循环计算差距,最后用 if 比较三次结果并输出最小者的名字。