推荐系统中常涉及矩阵、向量乘法,此处结合现有文献做一个小结,仅用于学习交流使用。

1. 矩阵乘法

矩阵乘积(matrix product,也叫matmul product):Am×n⋅Bn×p=Cm×pA_{m\times n} \cdot B_{n \times p} = C_{m \times p}Am×n​⋅Bn×p​=Cm×p​ ,AAA 的列数必须和 BBB 的行数相等,Ci,j=∑k=1nAi,kBk,jC_{i, j}=\sum_{k=1}^{n} A_{i, k} B_{k, j}Ci,j​=∑k=1n​Ai,k​Bk,j​。

Hadamard product(又称element-wise product):用 ⊙\odot⊙ 或者 ∘\circ∘ 表示,A⊙BA \odot BA⊙B 对应元素相乘,二者维数必须相同,举例:
[a11a12a21a22]⊙[b11b12b21b22]=[a11b11a12b12a21b21a22b22]\left[\begin{array}{ll}a_{11} & a_{12} \\a_{21} & a_{22}\end{array}\right] \odot\left[\begin{array}{ll}b_{11} & b_{12} \\b_{21} & b_{22}\end{array}\right]=\left[\begin{array}{ll}a_{11} b_{11} & a_{12} b_{12} \\a_{21} b_{21} & a_{22} b_{22}\end{array}\right] [a11​a21​​a12​a22​​]⊙[b11​b21​​b12​b22​​]=[a11​b11​a21​b21​​a12​b12​a22​b22​​]
Kronecker product(克罗内克积):用 ⊗\otimes⊗ 表示,两个任意大小矩阵间的运算, Am×n⋅Bp×q=Cmp×nqA_{m \times n} \cdot B_{p \times q}=C_{m p \times n q}Am×n​⋅Bp×q​=Cmp×nq​,AAA 的每个元素逐个与矩阵 BBB 相乘。
[a11a12a21a22]⊗[b11b12b21b22]=[a11b11a11b12a12b11a12b12a11b21a11b22a12b21a12b22a21b11a21b12a22b11a22b12a21b21a21b22a22b21a22b22]\left[\begin{array}{cc}a_{11} & a_{12} \\a_{21} & a_{22}\end{array}\right] \otimes\left[\begin{array}{cc}b_{11} & b_{12} \\b_{21} & b_{22}\end{array}\right]=\left[\begin{array}{cccc}a_{11} b_{11} & a_{11} b_{12} & a_{12} b_{11} & a_{12} b_{12} \\a_{11} b_{21} & a_{11} b_{22} & a_{12} b_{21} & a_{12} b_{22} \\a_{21} b_{11} & a_{21} b_{12} & a_{22} b_{11} & a_{22} b_{12} \\a_{21} b_{21} & a_{21} b_{22} & a_{22} b_{21} & a_{22} b_{22}\end{array}\right] [a11​a21​​a12​a22​​]⊗[b11​b21​​b12​b22​​]=⎣⎢⎢⎡​a11​b11​a11​b21​a21​b11​a21​b21​​a11​b12​a11​b22​a21​b12​a21​b22​​a12​b11​a12​b21​a22​b11​a22​b21​​a12​b12​a12​b22​a22​b12​a22​b22​​⎦⎥⎥⎤​
矩阵乘积的常用性质:

结合律: A(B+C)=AB+ACA(B+C) = AB + ACA(B+C)=AB+AC

分配律: A(BC)=(AB)CA(BC)=(AB)CA(BC)=(AB)C

交换律:绝大多数情况不满足交换律,即大多数情况下 AB≠BAAB \ne BAAB​=BA 。

2. 向量乘法

向量点积/内积(Inner Product, dot product):用 ⋅\cdot⋅ 表示,两个向量的行列数必须相同,点乘的结果是对应位元素相乘后求和,是一个标量,举例:
a=(a1,a2,⋯,an)b=(b1,b2,⋯,bn)a⋅b=a1b1+a2b2+⋯+anbn\begin{array}{c}a=\left(a_{1}, a_{2}, \cdots, a_{n}\right) \\b=\left(b_{1}, b_{2}, \cdots, b_{n}\right) \\a \cdot b=a_{1} b_{1}+a_{2} b_{2}+\cdots+a_{n} b_{n}\end{array} a=(a1​,a2​,⋯,an​)b=(b1​,b2​,⋯,bn​)a⋅b=a1​b1​+a2​b2​+⋯+an​bn​​
点乘的几何意义:点乘可以用来计算两个向量的夹角 cosθ=a⋅b∣a∣∣b∣cos \theta = \frac{a \cdot b}{|a||b|}cosθ=∣a∣∣b∣a⋅b​。

dot product 和 inner product 其实还是有区别的,目前暂时将二者视为同一个概念,后续再来细究!!!

向量外积(Outer product):外积的结果是一个矩阵,用 ⊗\otimes⊗ 表示,举例;
u=(u1,u2,⋯,um)v=(v1,v2,⋯,vn)u⊗v=[u1v1u1v2⋯u1vnu2v1u2v2⋯u2vn⋮⋮⋱⋮umv1umv2⋯umvn]\begin{array}{c}u=\left(u_{1}, u_{2}, \cdots, u_{m}\right) \\v=\left(v_{1}, v_{2}, \cdots, v_{n}\right) \\u \otimes v=\left[\begin{array}{ccccc}u_{1} v_{1} & u_{1} v_{2} & \cdots & u_{1} v_{n} \\u_{2} v_{1} & u_{2} v_{2} & \cdots & u_{2} v_{n} \\\vdots & \vdots & \ddots & \vdots \\u_{m} v_{1} & u_{m} v_{2} & \cdots & u_{m} v_{n}\end{array}\right]\end{array} u=(u1​,u2​,⋯,um​)v=(v1​,v2​,⋯,vn​)u⊗v=⎣⎢⎢⎢⎡​u1​v1​u2​v1​⋮um​v1​​u1​v2​u2​v2​⋮um​v2​​⋯⋯⋱⋯​u1​vn​u2​vn​⋮um​vn​​⎦⎥⎥⎥⎤​​
向量叉积(Cross product):叉乘的结果是一个向量,使用符号 ×\times×,举例:
a=(x1,y1,z1)b=(x2,y2,z2)a×b=∣ijkx1y1z1x2y2z2∣=(y1z2−y2z1)i+(z1x2−z2x1)j+(x1y2−x2y1)ki=[1,0,0],j=[0,1,0],k=[0,0,1]\begin{aligned}&a=\left(x_{1}, y_{1}, z_{1}\right)\\&b=\left(x_{2}, y_{2}, z_{2}\right)\\&a \times b=\left|\begin{array}{ccc}i & j & k \\x_{1} & y_{1} & z_{1} \\x_{2} & y_{2} & z_{2}\end{array}\right|=\left(y_{1} z_{2}-y_{2} z_{1}\right) i+\left(z_{1} x_{2}-z_{2} x_{1}\right) j+\left(x_{1} y_{2}-x_{2} y_{1}\right) k\\&i=[1,0,0], j=[0,1,0], k=[0,0,1]\end{aligned} ​a=(x1​,y1​,z1​)b=(x2​,y2​,z2​)a×b=∣∣∣∣∣∣​ix1​x2​​jy1​y2​​kz1​z2​​∣∣∣∣∣∣​=(y1​z2​−y2​z1​)i+(z1​x2​−z2​x1​)j+(x1​y2​−x2​y1​)ki=[1,0,0],j=[0,1,0],k=[0,0,1]​
叉乘的几何意义:向量叉乘的结果是两个向量的法向量,举个例子:aaa 是 xxx 轴的单位向量,bbb 是 yyy 轴的单位向量,二者叉乘的结果就是 zzz 轴的单位向量。
a=(1,0,0)b=(0,1,0)i=(1,0,0)j=(0,1,0)k=(0,0,1)a×b=∣ijk100010∣=(0×0−0×1)i+(0×0−0×1)j+(1×1−0×0)k=k\begin{array}{c}a=(1,0,0) \\b=(0,1,0) \\i=(1,0,0) \\j=(0,1,0) \\k=(0,0,1) \\a \times b=\left|\begin{array}{ccc}i & j & k \\1 & 0 & 0 \\0 & 1 & 0\end{array}\right|=(0 \times 0-0 \times 1) i+(0 \times 0-0 \times 1) j+(1 \times 1-0 \times 0) k=k\end{array} a=(1,0,0)b=(0,1,0)i=(1,0,0)j=(0,1,0)k=(0,0,1)a×b=∣∣∣∣∣∣​i10​j01​k00​∣∣∣∣∣∣​=(0×0−0×1)i+(0×0−0×1)j+(1×1−0×0)k=k​

3. 总结

矩阵乘法 符号 说明
matmul product ⋅\cdot⋅ 一般的矩阵乘积
Hadamard product ⊙\odot⊙ 或者 ∘\circ∘ 表示 element-wise,逐元素对应乘积
Kronecker product (克罗尔克积) ⊗\otimes⊗ 任意形状矩阵相乘
向量乘法 符号 说明
Inner product, dot product ⋅\cdot⋅ 结果是标量
Outer product ⊗\otimes⊗ 结果是矩阵
Cross product ×\times× 结果是向量

参考文献:

[1] https://zhuanlan.zhihu.com/p/79760117

CTR 预测理论(二十五):矩阵和向量乘法总结相关推荐

  1. 二进制空间权重矩阵_白话空间统计之二十五:空间权重矩阵(三)解构空间权重矩阵...

    原标题:白话空间统计之二十五:空间权重矩阵(三)解构空间权重矩阵 中国古代就有"天圆地方"一说,所谓的"方"就是所谓的矩阵-- 在军事上面,最为讲究就是团体的力 ...

  2. moran指数 r语言_白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(2):不同空间关系对莫兰指数的影响...

    原标题:白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(2):不同空间关系对莫兰指数的影响 上一篇,讲了R语言中的空间权重矩阵的结构,这一节讲讲R语言里面空间权重矩阵的自定义. 与Ar ...

  3. CTR 预测理论(九):Boosting 集成算法中 Adaboost, GBDT 与 XGBoost 的区别

    https://blog.csdn.net/Dby_freedom/article/details/81975255 最近总结树模型,尝试将主流 Boosting 实现方式做一个分析汇总,文中部分内容 ...

  4. Python之精心整理的二十五个文本提取及NLP相关的处理案例

    一.提取 PDF 内容 # pip install PyPDF2 安装 PyPDF2 import PyPDF2 from PyPDF2 import PdfFileReader# Creating ...

  5. 深度学习之图像分类(二十五)-- S2MLPv2 网络详解

    深度学习之图像分类(二十五)S2MLPv2 网络详解 目录 深度学习之图像分类(二十五)S2MLPv2 网络详解 1. 前言 2. S2MLPv2 2.1 S2MLPv2 Block 2.2 Spat ...

  6. OpenGL 图形库的使用(二十五)—— 高级OpenGL之帧缓冲Framebuffers

    https://www.jianshu.com/p/d7066d6a02cc OpenGL 图形库的使用(二十五)-- 高级OpenGL之帧缓冲Framebuffers  刀客传奇 关注 0.2 20 ...

  7. Android进阶知识(二十五):Bitmap简介及其高效加载

    Android进阶知识(二十五):Bitmap简介及其高效加载 一.Bitmap   Bitmap代表一个位图,在Android中指的是一张图片,可以是png.jpg等格式的图片.BitmapDraw ...

  8. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十五:SDHC模块

    实验二十五:SDHC模块 笔者曾经说过,SD卡发展至今已经衍生许多版本,实验二十四就是针对版本SDV1.×的SD卡.实验二十四也说过,CMD24还有CMD17会故意偏移地址29,让原本范围指向从原本的 ...

  9. 激荡二十五年:wind、同花顺、东方财富、大智慧等金融服务商争霸史

    激荡二十五年:wind.同花顺.东方财富.大智慧等金融服务商争霸史 2017-03-08 朱琼华 智囊财经 2017年3月8日,经历开春后风霜雨雪后的黄浦江,这一刻恢复了平静.倒映在江水里的高楼,随着 ...

  10. 二十五个深度学习相关公开数据集

    转 [干货]二十五个深度学习相关公开数据集 2018年04月18日 13:42:53 阅读数:758 (选自Analytics Vidhya:作者:Pranav Dar:磐石编译) 目录 介绍 图像处 ...

最新文章

  1. 干货!整理了50个 Pandas 高频使用技巧,强烈建议收藏!
  2. 【hdu 1043】Eight
  3. 第一章 初识Linux shell
  4. Hbase2.0版本安装教程
  5. python函数库_10. 标准库简介
  6. in ms sql 集合参数传递_神奇的 SQL → 为什么 GROUP BY 之后不能直接引用原表中的列?...
  7. C++混淆点-static关键字理解
  8. ant react 上传_React实战之Ant Design—Upload上传_附件上传
  9. dom4j xml解析 写框架必备技能(一)
  10. 46.@弹出点击次数
  11. ArcGIS API for Silverlight 入门学习笔记(一)hello world 补充问题
  12. mybatis 高级映射 - 一对多查询 - collection
  13. 学生信息表 -通过选择年级和班级得到详细的学生信息名单
  14. linux qt读取显示图片,QT学习篇(二) 使用QPixmap显示一张图片
  15. python对写作有什么帮助_第47p,Python基础知识,写作总结
  16. html背景图片纵向拉伸,html网页背景图片拉伸 关于html背景图片往下拉伸问题
  17. 写一个简单的校园网多拨思路
  18. STM32单片机通过ESP8266WiFi模块与Android APP实现数据传输(二)---上位机搭建
  19. 脖子上长痘痘吃什么好
  20. 开工大吉,开启新征程!

热门文章

  1. 安卓微POS-PDA手持终端,支持离线在线联网销售开单;移动开单 盘点 功能
  2. EMCP 物联网云平台物联卡管理说明
  3. uml类图中类版型区分--边界类,控制类,实体类
  4. C#彩信接口开发经验及具体开发实现
  5. MySQL中查询中位数?
  6. C语言和汇编实现STM32F103点亮LED
  7. 小米8se android q,小米8 SE
  8. 数据采集+数据可视化练习(2022-1-6)
  9. 用dos编译c语言,如何在Windows命令行(DOS界面)中调用 编译器 来编译C/C++源程序...
  10. vscode 一键规范代码格式