推荐系统入门(一):从“找相似”开始 —— 基于内容的推荐

推荐系统入门(一):从“找相似”开始 —— 基于内容的推荐 一句话理解推荐系统“你喜欢这个那我给你找点类似的。”这就是推荐系统最朴素的起点。在短视频刷不停、电商首页千人千面、新闻App越用越懂你的今天推荐系统早已成为互联网产品的“隐形引擎”。但对初学者来说它听起来高深莫测。其实它的核心思想非常直观——找相似。本文将带你从这一朴素直觉出发亲手实现一个最基础的推荐方法基于内容的推荐Content-Based Recommendation。你不需要复杂的数学背景只要会一点 Python就能跑通一个完整的例子。为什么“找相似”能做推荐想象你第一次打开一个视频平台。系统对你一无所知只能随机推些热门内容。但当你点了几个“AI入门”“Python教程”后平台就注意到这些视频都带有“科技”和“教育”标签。于是它想“这位用户大概喜欢技术类内容。” 下次它就会优先推荐同样带“科技教育”标签的新视频——比如《机器学习实战》。这就是基于内容的推荐的核心逻辑每个物品视频、商品、文章用一组特征表示如标签、关键词、Embedding 向量用户的兴趣通过其历史行为如点击、观看聚合这些特征形成“用户画像”推荐时计算未接触物品与用户画像的相似度挑最像的几个推给你。这种方法简单、可解释性强是推荐系统的“第一课”。动手实现用 Python 写一个基于内容的推荐器我们用一个极简的例子来演示全过程。假设有一个小型视频库每个视频用一个四维向量表示其所属类别第0维科技第1维娱乐第2维体育第3维教育importnumpyasnpfromsklearn.metrics.pairwiseimportcosine_similarity# 1. 定义视频库每个视频用标签向量表示videos{v1:{title:AI入门,features:np.array([1,0,0,1])},# 科技 教育v2:{title:NBA集锦,features:np.array([0,0,1,0])},# 体育v3:{title:Python教程,features:np.array([1,0,0,1])},v4:{title:明星八卦,features:np.array([0,1,0,0])},# 娱乐v5:{title:机器学习实战,features:np.array([1,0,0,1])},v6:{title:足球世界杯,features:np.array([0,0,1,0])},}假设用户已经观看了v1AI入门和v3Python教程我们可以这样构建他的“兴趣画像”# 2. 用户观看历史user_watched[v1,v3]# 3. 构建用户画像平均已看视频的特征向量user_profilenp.mean([videos[vid][features]forvidinuser_watched],axis0)print(用户画像向量:,user_profile)# 输出: [1. 0. 0. 1.]结果很清晰用户只对“科技”和“教育”感兴趣其他维度为0。接下来我们遍历所有未观看的视频计算它们与用户画像的余弦相似度# 4. 计算未看视频与用户画像的相似度scores{}forvid,infoinvideos.items():ifvidnotinuser_watched:simcosine_similarity([user_profile],[info[features]])[0][0]scores[vid]sim# 5. 按相似度排序推荐 Top-2recommendedsorted(scores.items(),keylambdax:x[1],reverseTrue)[:2]print(\n推荐结果:)forvid,scoreinrecommended:print(f{videos[vid][title]}(相似度:{score:.2f}))运行结果用户画像向量: [1. 0. 0. 1.] 推荐结果: 机器学习实战 (相似度: 1.00) NBA集锦 (相似度: 0.00)完美系统准确识别出《机器学习实战》与用户兴趣完全匹配相似度1.0而体育类内容则被排除。这种方法有什么优缺点✅优点实现简单逻辑清晰可解释性强“因为你看过AI视频所以推荐这个”不依赖其他用户行为适合冷启动场景新用户或新物品。❌局限依赖高质量的物品特征如果标签不准或缺失效果大打折扣难以发现新兴趣用户只看编程视频系统永远不会推荐“数据可视化”或“产品设计”哪怕他可能喜欢容易陷入信息茧房推荐结果过于同质化。小结“找相似”是推荐系统的起点也是理解更复杂方法的基础。基于内容的推荐虽简单但在很多场景下依然有效——比如新闻推荐、课程平台、音乐标签推荐等。但现实中的用户兴趣远比标签复杂。如何利用群体行为来发现跨领域的关联这就引出了下一章的主题协同过滤。预告在下一篇《推荐系统入门二协同过滤——让相似的人替你做选择》中我们将不再依赖物品特征而是通过“和你行为相似的人喜欢什么”来为你推荐。敬请期待注本文代码可在本地直接运行只需安装numpy和scikit-learn。推荐系统的学习从跑通第一行代码开始。