当前位置: 首页 > news >正文

余弦相似度、矩阵分解、深度学习物品的复杂、非线性特征

场景:经典的口碑推荐

书店里有三位顾客:小明 和 小红。他们最近都对一些书打了分(1-5分,5分最喜欢)。

顾客《三体》《小王子》《哈利波特》《经济学原理》
5分3分1分
小明4分2分5分1分
小红1分5分3分5分

现在的问题是:我应该给你推荐《哈利波特》吗?

第一步:找到和你“口味相似”的人(计算用户相似度)

作为店员,你开始观察谁的读书口味和你最像。

  • 你和小明:你们都超级喜欢《三体》,都给《经济学原理》打了低分。这说明你们可能都是科幻迷,对枯燥的理论书不感冒。口味非常相似!

  • 你和小红:你喜欢《三体》,她不喜欢;她喜欢《经济学原理》,你讨厌。口味截然不同!

在算法里,这个“口味相似度”是可以量化的,最常用的就是 余弦相似度。简单理解就是:比较两个用户评分向量的方向是否一致。

  • 你和小明的向量方向很接近,所以相似度高

  • 你和小红的向量方向几乎相反,所以相似度低

第二步:利用相似用户的喜好进行预测(生成推荐)

现在要预测你对《哈利波特》的评分。你会更相信谁的意见?毫无疑问是小明,因为他和你口味相似。

  • 小明(和你口味相似)给了《哈利波特》 5分

  • 小红(和你口味不同)给了《哈利波特》 3分

算法会做一个加权平均,相似度越高,权重越大:

预测你的评分 = (和小明的相似度 * 小明的评分 + 和小红的相似度 * 小红的评分) / (总权重)

假设:

  • 你和小明的相似度是 0.9

  • 你和小红的相似度是 0.1

计算:
(0.9 * 5 + 0.1 * 3) / (0.9 + 0.1) = (4.5 + 0.3) / 1.0 = 4.8

预测你会给《哈利波特》打4.8分! 这是一个很高的分数,所以系统会把《哈利波特》强烈推荐给你。

这个过程就是 基于用户的协同过滤,它的核心思想是 “物以类聚,人以群分”

另一个角度:基于物品的协同过滤

现在,我们换一个思路。不找人,我们找相似的物品

书籍小明小红
《三体》5分4分1分
《流浪地球》4分5分

我们发现,几乎所有喜欢《三体》的人(你和小明),也都喜欢《流浪地球》。那么我们可以认为 《三体》和《流浪地球》非常相似(可能因为它们都是刘慈欣的科幻小说)。

现在,小红给《三体》打了1分(她不喜欢),但她还没读过《流浪地球》。我们应该向她推荐《流浪地球》吗?

大概率不会。 因为和她喜欢相似书籍的人,可能也不喜欢《流浪地球》。或者反过来说,一个不喜欢《三体》的人,很可能也不会喜欢相似的《流浪地球》。

它的核心思想是 “喜欢这个物品的人,也喜欢那个物品”

  • 当你喜欢A物品时,系统会推荐给你与A最相似的B、C、D物品。

  • 亚马逊的 “购买此商品的顾客也购买了...” 就是这个原理最经典的例子。


总结与类比

基于用户的协同过滤 (User-CF)基于物品的协同过滤 (Item-CF)
核心思想人以群分物以类聚
推荐逻辑找到和你相似的用户,把他们喜欢而你没看过的推荐给你。找到你喜欢的物品的相似物品,推荐给你。
好比你的好朋友给你安利东西。一个资深专家(比如音乐发烧友)根据你喜欢的歌,推荐同类型的歌。
适用场景用户数相对较少,个性化强,社交属性强(如朋友圈)。物品数相对稳定,物品内在联系强(如电商、音乐)。
例子小明喜欢《三体》和《哈利波特》,你也喜欢《三体》,所以把《哈利波特》推荐给你。很多人同时购买了手机和手机壳,所以当你买手机时,推荐手机壳给你。

协同过滤面临的挑战

  1. 冷启动问题

    • 新用户: 他还没任何行为,系统不知道他和谁相似,无法推荐。

    • 新物品: 它还没被任何人评分,系统不知道它和什么物品相似,永远不会被推荐。

    • 解决方案: 用热门推荐、注册信息(年龄、性别)、内容特征(物品标签)等来弥补。

  2. 稀疏性问题

    • 一个大型网站有上百万用户和物品,但一个用户可能只评过几十个。这就导致用户-物品评分矩阵是一个极其稀疏的矩阵(99%以上是空的),很难找到重叠的部分来计算相似度。

  3. 流行度偏差

    • 热门物品会被推荐得越来越多,而一些质量高但小众的物品很难被发掘。

1. 余弦相似度:衡量“方向”上的志同道合

想象一下,我们把两个人的喜好放在一个二维地图上。

  •  的喜好向量是:(喜欢科幻=5, 喜欢经济学=1)

  • 小明 的喜好向量是:(喜欢科幻=4, 喜欢经济学=1)

  • 小红 的喜好向量是:(喜欢科幻=1, 喜欢经济学=5)

现在,我们把这三个点画在坐标轴上:

text

经济学^|
5 +    *小红 (1,5)|||
1 +    *你 (5,1)   *小明 (4,1)|+----+----+----+----+-> 科幻1    4    5

余弦相似度关心的是什么?是这两个向量之间的夹角!

  •  和 小明 的向量,指向几乎同一个方向(右下角)。它们之间的夹角θ非常小

  •  和 小红 的向量,指向几乎相反的方向。它们之间的夹角θ非常大

计算公式(直观理解版):
余弦相似度 = cos(θ)

  • 当夹角为  时,cos(0°) = 1,表示完全相同

  • 当夹角为 90° 时,cos(90°) = 0,表示完全不相关

  • 当夹角为 180° 时,cos(180°) = -1,表示完全相反

所以:

  • 你和小明的相似度 ≈ 0.99(非常相似)

  • 你和小红的相似度 ≈ 0.20(几乎不相似)

为什么用余弦相似度而不是简单的评分差?
因为它能消除用户评分习惯的影响。比如一个用户普遍喜欢打高分(所有书都打4-5分),另一个用户喜欢打低分(所有书都打1-3分)。虽然他们绝对值不同,但他们的相对喜好趋势是一致的(比如都觉得A书比B书好)。余弦相似度能捕捉到这种“趋势”上的一致性,因为它看的是方向,而不是向量的长度。


2. 矩阵分解:从“评分”到“品味”的抽象

我们还是用那个评分表,但现在我们用“?”代表没评过分。

用户 \ 物品《三体》《小王子》《哈利波特》《经济学原理》
531
小明4251
小红1535

这个表格就是一个“评分矩阵”。矩阵分解要做一件非常聪明的事:

它假设存在一些看不见的“隐藏因素”(也叫隐因子/主题),决定了用户为什么喜欢一个物品。

这些因素可能是:

  • 主题1:科幻程度

  • 主题2:童真/浪漫程度

  • 主题3:学术严肃程度

矩阵分解的过程就是:
把这个大表格(评分矩阵),拆解成两个小表格的乘积:

  1. 用户-主题矩阵:每个用户对每个隐藏主题的喜好程度。

  2. 物品-主题矩阵:每个物品包含每个隐藏主题的多少。

拆解后可能是这样的:

用户-主题矩阵:

用户 \ 主题科幻童真学术
0.90.20.1
小明0.80.10.1
小红0.10.80.9

物品-主题矩阵:

物品 \ 主题科幻童真学术
《三体》0.90.00.1
《小王子》0.00.90.1
《哈利波特》0.30.70.0
《经济学原理》0.00.10.9

现在,预测“你”对《哈利波特》的评分怎么算?
看看“你”的品味和《哈利波特》的属性有多匹配:

  • 你的科幻兴趣(0.9) × 书的科幻属性(0.3) = 0.27

  • 你的童真兴趣(0.2) × 书的童真属性(0.7) = 0.14

  • 你的学术兴趣(0.1) × 书的学术属性(0.0) = 0.00
    把这些加起来:0.27 + 0.14 + 0.00 = 0.41(再经过一个转换,就可以变成1-5的评分)

矩阵分解的强大之处:

  • 它甚至不需要《哈利波特》和《三体》被同一个用户评分过,只要它们通过“隐藏主题”关联起来就行。

  • 它能从稀疏的数据中学习到深层的关联,解决了协同过滤的稀疏性问题。


3. 深度学习与非线性特征:模拟人脑的复杂决策

传统的模型(如协同过滤、矩阵分解)可以看作是“线性”的。它们做的是加法和乘法,就像用一条直线或一个平面去拟合数据。

但人的喜好是非常复杂、非线性的

例子:你为什么喜欢一首歌?
不是简单的 摇滚成分 * 0.3 + 流行成分 * 0.5
可能是:

  • “我喜欢在周五晚上听带有复古Disco节奏,但歌词又很忧郁的电子音乐。”

  • “我讨厌大部分民谣,除非它的吉他编排非常复杂,并且主唱的声音有颗粒感。”

这种“除非...并且...”的复杂逻辑,就是非线性关系。线性模型很难捕捉到这种关系。

深度学习(神经网络)如何工作?

  1. 输入层:输入用户和物品的特征(比如ID、标签、内容等)。

  2. 隐藏层:进行多层的“加权求和 + 非线性变换”。

    • 加权求和:就像矩阵分解,计算不同特征的组合。

    • 非线性变换(激活函数):这是关键!它允许模型学习到这种“跳跃性”的逻辑。它不是一个平滑的直线,而是一个可以弯曲、转折的复杂曲线。每一层都在学习更抽象、更复杂的特征组合。

      • 第一层可能学到“摇滚”、“流行”。

      • 第二层可能学到“节奏感强的摇滚”。

      • 第三层可能学到“适合开车时听的、节奏感强的摇滚”。

  3. 输出层:最终输出一个预测的评分或点击概率。

可以把它想象成一个“特征抽象工厂”:

  • 原始原料:用户ID、物品ID、标签、文字描述...

  • 第一层车间:把原料加工成基础零件(“科幻”、“刘慈欣”)。

  • 第二层车间:把基础零件组装成模块(“硬核科幻”、“太空歌剧”)。

  • 第三层车间:把模块组装成复杂产品(“思想深刻、格局宏大的硬核科幻”)。

  • 最终产品:预测用户对这个“复杂产品”的喜爱程度。

深度学习的优势:

  • 能自动学习极其复杂的特征交互,无需人工设计。

  • 可以轻松融合多种信息(用户画像、物品内容、行为序列等)。

  • 模型表达能力极强,上限非常高。

深度学习的劣势:

  • 像一个“黑盒子”,难以解释为什么做出这个推荐。

  • 需要大量的数据和计算资源。

  • 模型复杂,训练和调试难度大。

总结

  • 余弦相似度:一个衡量“趋势一致性”的尺子,看两个人的喜好方向是否一致。

  • 矩阵分解:一个“品味解码器”,把具体的评分抽象成隐藏的品味主题,再用这些主题来预测。

  • 深度学习:一个“超级大脑”,通过多层非线性处理,模拟人类极其复杂和微妙的喜好决策过程,自动学习高级特征。

http://www.dtcms.com/a/575151.html

相关文章:

  • 湖州市建设局网站各个国家的google网站
  • 岳阳网站建设联系方式服务称赞的项目管理平台
  • 回流焊过炉治具载具一般用在什么产品上
  • 佛山网站优化个人备案的网站可以卖东西么
  • 网站建设 2015年11月网上服装定制网站
  • C++标准项目---在线五子棋对战
  • 给个网站带颜色抵押网站建设方案
  • 新余网站开发公司首页排名seo
  • 南昌做网站优化哪家好北京哪里有教怎么做网站的
  • 集成学习算法XGBoost(eXtreme Gradient Boosting)基础入门
  • 指定网站建设前期规划方案重庆网站seo
  • 怎么查网站建设是哪家公司wordpress网站后台
  • 电子商务网站建设与管理基础重庆展示型网站制作
  • 鞍山自适应网站制作网站改版域名不变
  • rocketmq 的核心概念讲解
  • 注册了自己的网站中华始祖堂室内设计
  • 定制化网站建设假网站连接怎么做的
  • 中小企业网站建设免费注册电子邮箱
  • 建设银行企业版网站电脑上免费制作ppt的软件
  • 顺企网属于什么网站江西建设监理协会网站
  • 洛阳网站建设哪家公司好php网站建设文献综述
  • 功能测试与接口测试规范SOP流程
  • 网站项目计划书模板范文有做外贸个人网站
  • 可以做专利聚类分析的免费网站深圳自定义网站开发
  • 公司网站年费网站死链接怎么提交
  • 沈阳市绿云网站建设2023企业所得税300万以上
  • 网站设计机构排行榜福建省建设注册管理中心网站
  • 旅游网站开发研究现状模板建站费用
  • 学生模拟网站开发项目wordpress 移动建站
  • 五金配件网站建设报价广东省做网站推广公司