You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何计算两个矩阵的dot product(点积)

R语言计算指定矩阵点积匹配预期结果

原始数据定义

# 电影特征矩阵:5行2列,每行对应1部电影的2个维度特征
movies <- matrix(c(3,1,1,2,1,4,3,1,1,3), ncol = 2, byrow = T)
# 用户特征矩阵:4行2列,每行对应1个用户的2个维度权重
users <- matrix(c(1,0,0,1,1,0,1,1), ncol = 2, byrow = T)
# 预期输出矩阵:4行5列,行对应用户、列对应电影,值为二者的特征点积
expected <- matrix(c(3,1,1,3,1,
                     1,2,4,1,3,
                     3,1,1,3,1,
                     4,3,5,4,4), ncol = 5, byrow = T)

实现代码

R中使用%*%运算符执行标准矩阵点积运算,由于两个矩阵的行均对应样本、列均对应特征,需要将电影矩阵转置后再相乘,即可得到和预期完全一致的结果:

# 计算点积
result <- users %*% t(movies)

# 校验结果一致性
all.equal(result, expected)
# 运行返回 TRUE 即结果完全匹配

计算逻辑说明

  • 线性代数中矩阵乘法要求左矩阵列数等于右矩阵行数,输出矩阵维度为「左矩阵行数 × 右矩阵列数」
  • 此处users维度为4×2,原始movies维度为5×2,直接相乘维度不匹配;将movies转置为2×5维度后,特征维度对齐,输出4×5的结果矩阵
  • 结果矩阵中第i行第j列的取值,就是第i个用户和第j部电影的两个特征值相乘再求和的点积结果,和expected的取值完全对应

内容的提问来源于stack exchange,提问作者Hans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 01:57:22