矩阵分解

Python Numpy库中矩阵用法快速指南

谁都会走 提交于 2020-02-27 15:17:09
Python Numpy库中矩阵用法指南 矩阵是一个由m*n个数排成的m行n列的表称为m行n列的矩阵,简称为m*n矩阵。下面的矩阵是一个3*2(3乘2)矩阵,因为它有三行四列。 在数学的概念中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。 矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。 文章目录 Python Numpy库中矩阵用法指南 Python列表生成矩阵 Numpy Array(数组) 矩阵运算 查看矩阵中的元素、行与列 矩阵的切片 Python列表生成矩阵 在Python中也有矩阵的概念,但是Python中没有矩阵这种的内置类型。但是我们可以将Python中的列表看做一个矩阵。例如: A = [[2,8], [-5,32], [0,8]] 我们可以把这个列表看做为是一个3行2列的矩阵。 接下来我们看一下如何使用嵌套列表。 A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]] print("A =", A) print("A[1]

【Graph Embedding】GCN:天空飘来七个大字

匆匆过客 提交于 2020-02-27 04:00:21
今天学习的是阿姆斯特丹大学的同学于 2016 发表的一篇论文《Semi-supervised Classification with Graph Convolutional Networks》,目前有 2800 多引用。 在 2013 年在之前,NetWork Representation 有两种主流的方式,包括矩阵分解和 NetWork Embedding。 在 2013 年之后,也就是 Mikolov 提出 Word2Vec 之后,人们将注意力转移到 Network Embedding 上,并在此之后出现了很多有名的算法——DeepWalk、LINE、Node2Vec 等等。但是所有的这些方法都需要分成两步分别优化,一个是基于随机游走的生成序列和另一个是半监督学习的训练。 2013 年,本文作者提出了基于空间的图卷积神经网络,通过在图上进行卷积来完成特征提取,并取得非常好的效果。 1. Introduction 我们知道对于 CNN 网络中来说,其核心在使用了基于 Kernel 的卷积操作来提取图像的特征,卷积操作类似于对 计算区域内的中心节点和相邻节点进行加权求和 : CNN 之所以能成为图像领域的明珠却很少应用于其他领域原因是: 图片是一个规整的二维矩阵 ,无论 Kernel 平移到图片中的哪个位置都可以保证其运算结果的一致性,即: 平移不变性 。CNN

层次分析法

萝らか妹 提交于 2020-02-26 00:14:48
title: 层次分析法 date: 2020-02-25 19:14:41 categories: 数学建模 tags: [MATLAB, 评价模型] mathjax: true 定义 ​ 层次分析法(The Analytic Hierarchy Process即AHP)是由美国运筹学家、 匹兹堡大学教授T . L. Saaty于20世纪70年代创立的一种系统分析与决策的综合 评价方法,是在充分研究了人类思维过程的基础上提出来的,它较合理地解 决了定性问题定量化的处理过程。 ​ AHP的主要特点是通过建立递阶层次结构,把人类的判断转化到若干因 素两两之间重要度的比较上,从而把难于量化的定性判断转化为可操作的重 要度的比较上面。在许多情况下,决策者可以直接使用AHP进行决策,极大 地提高了决策的有效性、可靠性和可行性,但其本质是一种思维方式,它把 复杂问题分解成多个组成因素,又将这些因素按支配关系分别形成递阶层次 结构,通过两两比较的方法确定决策方案相对重要度的总排序。整个过程体 现了人类决策思维的基本特征,即分解、判断、综合,克服了其他方法回避 决策者主观判断的缺点。 步骤 第一步递阶层次结构 分析系统中各因素之间的关系,建立系统的递阶层次结构。 第二步构造判断矩阵 {1,2,3,...,9}:代表重要程度,逐渐递增 得到一个方阵,我们记为A,对应的元素为 \(a_{ij}\)

对称矩阵、方阵、逆矩阵、协方差矩阵

纵然是瞬间 提交于 2020-02-23 17:59:49
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 矩阵的高级函数:基于SVD算法(即奇异值分解法)的矩阵分解、通过SVD算法(即奇异值分解法)/特征值分解法来实现PCA算法、随机数矩阵 1.对称矩阵 2.方阵、逆矩阵 X是一个m行n列的矩阵,并不能保证其有逆矩阵,因此X需要乘以X的转置,即X乘以自身的转置矩阵,其结果为一个方阵, 方阵即行数和列数都为一样,这样便能保证其矩阵X有逆矩阵。 X是一个m行n列的矩阵,X的转置(自身的转置矩阵)是一个n行m列的矩阵,那么两者相乘结果为m行m列的方阵,方阵即行数和列数都为一样。 X是一个n行m列的矩阵,X的转置(自身的转置矩阵)是一个m行n列的矩阵,那么两者相乘结果为n行n列的方阵,方阵即行数和列数都为一样。 求X乘以X的转置的逆矩阵,即求X的方阵的的逆矩阵。 3.协方差矩阵 1.PCA算法中求协方差矩阵 2.特征脸法: 1.特征脸法是一种相对“古老”的人脸识别算法,而特征脸法的核心算法是PCA算法。 2.特征脸法中的经过零均值化处理后的m行n列图像矩阵: m为人脸图像的维度,n为人脸图像的样本数,行数为人脸图像的flatten后的维度数,列数为数据集的人脸图像的样本数, 人脸图像的flatten后向量作为列向量。 3

主成分分析详解以及python实现

China☆狼群 提交于 2020-02-22 22:33:41
主成分分析的基本概念 主成分分析(Principal Component Analysis,PCA)是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。 主成分分析的意义 对于一组数据X,存在以下特征{x1,x2,x3},这些特征之间可能存在一些关联性,主成分分析就是利用代表数据之间关联性的协方差矩阵来去除数据的关联性,找到一组数据中最关键的要素。 举一个简单的例子,比如对于一组深海鱼的数据,有身长,体重,游速,体温等等。但是如果我们用这些数据来描述一条深海鱼,那就过于复杂了。显然,即使凭借我们从先验的感官中,就可以看出鱼的身长和体重这两组数据是有高度重合性的,身长长的鱼类体重必然沉。那么我们可不可以把这两种鱼类特征合并到一起呢。因为对于数据的分析而言,少了一个数据,就让整数据的空间下降了一个维度,这是十分必要的。 主成分分析用到的数学工具 协方差矩阵 协方差矩阵是利用标准化过后特征矩阵的转置乘以它本身来得到的,它是一个对角矩阵,用来表示特征与特征之间的关联性。 特征值与特征向量 一个矩阵的特征向量表示在乘以这个矩阵后只发生长度变化而不发生方向变化的向量,而特征值是这些向量乘以矩阵后的变化的程度。因此,求矩阵的特征向量,本质上是将矩阵分解为相互独立正交的向量,而特征值是这些向量对于矩阵本身影响的重要程度

潜在语义分析(LSA)的原理讲解以及python实现

独自空忆成欢 提交于 2020-02-21 11:27:46
在传统的文本信息处理中,以单词向量表示文本的语义内容,以单词向量空间的度量来表示文本之间的语义近似度。这种方法不能准确表示语义。 潜在语义分析试图从大量的文本数据中发现潜在的话题,以话题向量来表示文本的语义内容,以话题向量的空间度量更准确地表示文本之间的语义相似度。 潜在语义分析使用的是非概率的话题分析模型,具体来说,就是将文本集合表示为单词-文本矩阵,对单词-文本矩阵进行奇异值分解,从而得到话题向量空间,以及文本在话题向量空间的表示。可采用的矩阵分解方法有: 奇异值分解、非负矩阵分解。 给定一个含有 n n n 个文本的集合 D = { d 1 , d 2 , ⋯   , d n } D=\{d_1,d_2,\cdots,d_n\} D = { d 1 ​ , d 2 ​ , ⋯ , d n ​ } ,以及在所有文本中出现的 m m m 个单词 W = { w 1 , w 2 , ⋯   , w m } W=\{w_1,w_2,\cdots,w_m\} W = { w 1 ​ , w 2 ​ , ⋯ , w m ​ } ,则将单词在文本中出现的数据用一个单词-文本表示,记作 X X X 。 X = [ x i j ] m × n X = [x_{ij}]_{m\times n} X = [ x i j ​ ] m × n ​ 其中,元素 x i j x_{ij} x i j ​

MIT18.06线性代数(5) 行列式与马尔科夫矩阵和傅里叶级数的理解

拜拜、爱过 提交于 2020-02-21 06:34:13
行列式是一个数字。 行列式能尽可能的把矩阵的信息表示出来。比如行列式为0矩阵不可逆。 交换行或者列行列式变符号,这意味着交换矩阵它的行列式是1或者-1.因为交换矩阵可以把其他矩阵的行列交换。 行或者列乘个t,那么整个行列式的值需要乘个t。 行列式每行都有可加性 A − 1 = 1 d e t A A ∗ A^{-1}=\frac 1 {det A} A^* A − 1 = d e t A 1 ​ A ∗ ,其中 A ∗ A^* A ∗ 是伴随矩阵(当前元素是即去掉当前行当前列的矩阵行列式值) 行列式值等于当前行的各元素与对应代数余子式的线性加权和。 克拉默法则(Cramer’s Rule)求Ax=b中的x就是利用伴随矩阵求 A − 1 A^{-1} A − 1 ,然后 x = A − 1 b x=A^{-1}b x = A − 1 b 行列式的绝对值是行向量那几条边构成的几何体的体积(如果是二维那就是面积)。 特征值 特征值之和等于对角线元素之和 求特征值 d e t ( A − λ I ) = 0 det(A-\lambda I)=0 d e t ( A − λ I ) = 0 越部队称的矩阵特征值越可能是复数 特征值不同特征向量一定不线性相关,但是特征值相同不一定特征向量线性相关。 根据特征值和特征向量构造对角矩阵 矩阵对角化,本质就是利用Ax=λx这个来构造对角矩阵

线代自学笔记

陌路散爱 提交于 2020-02-17 18:42:30
QwQ……不知不觉这么久没写过博客了 感觉自己线代好菜啊……准备这些天去听听 吉尔伯特爷爷的公开课 ,好好自学一下 大概看了看时间安排,感觉一天两节课正好够 为了方便督促自己,每天把笔记贴在这里好了 1.方程组的几何解释 每一个 \(n\) 元线性方程组都可以用矩阵表示。除此之外还可以对方程组做以下解释: 行图像:每个方程的解都可以表示为 \(n\) 维空间内的一个超平面,所有超平面的交就是整个方程组的解。 (对于系数矩阵可逆的情况,所有超平面的交应当恰好是一个点。) 列图像:把方程组的每一列都看成一个列向量,那么方程组就可以看成 \(n\) 个列向量线性组合形成对应的常数向量。方程组的解代表每个列向量对应的系数。 在不考虑求解方程组时,列图像的思考方向还会产生另一个问题:列向量的所有线性组合能否充满整个 \(n\) 维空间? 求解方程组的系统方法:消元法 2.矩阵消元 对于方程组 \(Ax=b\) ,可以用一系列初等变换将 \(A\) 变为上三角矩阵 \(U\) ,之后直接倒序回代即可得到整个方程组的解。通常称为高斯消元(Gauss Elimination)。 主元(pivot)不能为0。为了找到主元,可能还需要做一些行交换。 行列式等于主元之积 如果某一次无法找到任何主元,则说明此方程组无解或解不唯一,同时也说明 \(A\) 是奇异矩阵。

python机器学习:推荐系统实现(以矩阵分解来协同过滤)

我们两清 提交于 2020-02-17 15:21:28
原文链接: http://tecdat.cn/?p=10911 用户和产品的潜在特征编写推荐系统矩阵分解工作原理使用潜在表征来找到类似的产品。 1. 用户和产品的潜在特征 我们可以通过为每个用户和每部电影分配属性,然后将它们相乘并合并结果来估计用户喜欢电影的程度。 ​ 相同的计算可以表示为矩阵乘法问题。首先,我们把用户属性放在一个名为U的矩阵中,在这个例子中是5,-2,1,-5和5。然后,我们把电影属性放在一个名为M的矩阵中,我们使用矩阵乘法来找出用户的评分。 ​ 但要做到这一点,我们必须已经知道用户属性和电影属性。为每个用户和每部电影提供属性评级并不容易。我们需要找到一种自动的方法。我们来看看电影评分矩阵, ​ 它显示了我们数据集中的所有用户如何评价电影。这个矩阵非常稀疏,但它给了我们很多信息。例如,我们知道用户ID2给电影1号五颗星。所以,基于此,我们可以猜测,这个用户的属性可能类似于电影的属性,因为它们匹配的很好。换句话说,我们有一些线索可以使用。 让我们看看我们如何利用这些线索来了解每部电影和每个用户。在我们刚刚看到的等式中,U乘M等于电影等级,我们已经知道一些用户的实际电影等级。我们已经拥有的电影评分矩阵是我们方程式的解决方案。虽然它是解决方案的一部分,但是这个阵列仍然有很多漏洞,但对于我们来说,这已经足够了。 ​ 实际上,我们可以使用目前为止我们所知道的电影评级

基于C++的简易RLC电路仿真器与滤波器仿真测试

青春壹個敷衍的年華 提交于 2020-02-17 09:33:11
电路建模分析与仿真算法 对于任意一个电路系统,我们基本上都能使用RLC和受控源进行等效,因此RLC系统的求解是任意一个系统求解的核心。 我们熟知,对于任意一个复杂的电路系统,基尔霍夫定律(Kirchhoff’s laws)总是成立的。选择使用基尔霍夫电压定律还是电流定理将带来两种电路分析方法: 节点电压法 与 网孔电流法 。 然而在通常的仿真算法中不会选择网孔电流法,因为该方法 仅能处理平面电路 ,换言之对于一个不算复杂的立体电路结构(例如正四面体类型的纯电阻电路)网孔电流法就失效了。例如,以SPICE为代表的系列仿真器采用 改进的节点电压法 对电路进行建模计算。 谈到SPICE,其发展是一个漫长的历史,几十年间SPICE这个名字都在业界如雷贯耳。1971年之前,绝大多数电路仿真器的开发都在军方的掌控下,直到1971年,以Laurence Nagel为代表的七人小组在加州大学伯克利分校开发了SPICE,其最大的特点是改进了矩阵求解方式,在计算机运算速度极低的时代,节省了大量时间与研究经费。 稀疏矩阵的求解带来的成效是立竿见影的。 我们知道电路若干个节点之间并非都存在连接,换言之一个电路矩阵矩阵往往是稀疏的,以下举一个简单的例子。 [ + 1 R 1 − 1 R 1 0 0 0 0 0 0 0 0 − 1 R 1 + 1 R 1 + 1 R 2 + s C 1 − 1 R 2 0 0