R语言求解,x是向量,y是矩阵向量,求xt,这向量乘矩阵向量是怎么回事?还有向量加矩阵向量是什么?

在R中基本的数据结构有:向量,矩阵向量数组,数据框列表,因子函数等。 向量:一系列同类型的有序元素构成

向量是一维结构。 向量是R最简单的数据结构茬R中没有标量。

标量被看成1个元素的向量 向量元素必须是同类型的。

由于向量是最简单的数据结构因此本章中以向量为例子来解释各個概念。

矩阵向量:二维的同类型元素的集合

矩阵向量由函数matrix创建。 矩阵向量需要输入行数列数。 矩阵向量是二维的引用元素可通過双下标做索引。

矩阵向量在物理实现时是向量附加行列数属性来实现的,因此也可以通过向量的方式引用其元素

1、结构类型是指在R語言中,自带的对象的数据结构的类型主要有 向量、矩阵向量、数组、数据框、列表等。

2、元素类型是指在一个对象中其元素所属类型。主要类型有: 数值型:分为整数型和双精度型(默认) 字符型:夹在双引号或者单引号之间的字符或字符串。 复数型:形如a+bi形式的複数 逻辑型:只能取TRUE(T)/FALSE(F)。 函数型:函数对象 RAW:以二进制形式保存的数据。 缺省值:若某值不可得到(not available)或缺少值(missing value)相关位置可被赋NA值;任何NA嘚运算结果都为NA。

A是向量A有三个元素,A的元素是数值型 B是向量,B有两个元素B的元素是字符型。 C是向量C有两个元素,C的元素是逻辑型

R中皆对象。 R中所有的对象都有元素类型和长度属性可通过函数typeof()和length()获取; 数据结构可通过class()获取。 R对象的长度可以随时发生改变常见包括如下情况:

R语言不能通过对某元素赋NULL值的方式,删除一个元素

1、除了typeof和length之外,其他class的对象可能还会有其他的属性可以通过函数attributes()和attr()進行操作,例如: 函数attributes(object)将给出当前对象所具有的所有非基本属性(长度和模式属于基本属性)的一个列表 函数attr(object,name)可以被用来选取一个指定嘚属性。

R的数组中元素的排列顺序是第一下标变化最快,最后下标变化最慢这在FORTRAN中叫做“ 按列次序”。 属性以列表形式保存其中所囿元素都有名字。

2、dim属性可通过dim()操作:二维或以上的都有dim属性

1、用下标来访问对象中的元素:下标个数需与对象维数对应。

R的所有对象嘟可用一个下标来索引这样就把对象看成广义的“向量”——有顺序的一排元素,这个对象是表明在这个序列中元素的序号

比如上述x雖然是2维的,但是x[2]也可以表明第二个元素。 下标可以是负值这表明就不选这个位置的元素。

> x[2] #按照存储的顺序访问单个元素

2、生成筛选索引:可以用等维的逻辑向量来选取元素

如果是矩阵向量,则需要等维度的逻辑矩阵向量来选取元素提取出TRUE位置的元素。结果返回的昰一个向量 若筛选矩阵向量中有NA值,则此位置处的提取值为NA.

3、若对象有names属性还可通过names所含的字符串来索引。

若对象是list 或者 data frame类型的可鉯用$连接names属性值,来引用对应分量

注意:向量、矩阵向量和数组不可通过$来引用。

1、向量 向量是R中最简单的数据结构其是一系列有序哃类型元素的集合。 向量是一维的

2、向量的创建 向量可以用c()函数创建其元素用逗号分隔,放在c()的参数列表中 用rep(x,y)函数创建。 用冒号运算苻(:)创建向量 用seq()函数创建向量 by参数需与from to参数匹配 by可以是小数 随机数向量的生成(后面)

4、向量的运算 普通运算符+-*/都是元素与元素相+-*/。 循环补齐规则:在对两个向量使用运算符时若要求这两个向量具有相同的长度,R会自动循环补齐即重复较短的向量,直到它与另一個向量长度相匹配 一些函数 all()/any(): 参数中是否“all为TRUE/any为TRUE”。 强筛选函数subset() : 剔除NA值

函数which():返回向量中元素为TRUE的序列号。

1、矩阵向量:二维相同类型嘚元素的组合 2、矩阵向量的创建 matrix()函数

标准创建matrix的方法。

可以省略不必要的参数

3、元素的引用: 下标索引 逻辑向量筛选 名字索引——字苻串索引

[注] 向量、矩阵向量和数组不可用$来引用对象。

4、矩阵向量的运算 线性代数运算:%*% apply():对矩阵向量的行(或列)调用函数的函数 apply(m,dimcode,f,fargs) m是目标矩阵向量 dimcode是维度编号:沿着此维度提取出对象的分量然后对各分量应用对应的函数。 1代表对每一行应用函数2代表对每一列应用函数。 f是應用在行或列上的函数 fargs是f的可选参数集

apply每一次对行或列运用函数f()时得到的结果是列矩阵向量

矩阵向量的融合: 按行融合两个矩阵向量:rbind() 按列融合两个矩阵向量:cbind()

简单内容简要介绍重点内容详細介绍。本篇知识内容:

标量、向量、矩阵向量、张量、广播、矩阵向量和向量相乘、单位矩阵向量、逆矩阵向量、范数

标量、向量、矩陣向量和张量

标量(scalar):一个标量就是一个单独的数它不同于线性代数中研究的其他

大部分对象(通常是多个数的数组)

向量(vector):一個向量是一列数。这些数是有序排列的通过次序中的索

引,我们可以确定每个单独的数

矩阵向量(matrix):矩阵向量是一个二维数组,其Φ的每一个元素被两个索引(而非

张量(tensor):在某些情况下我们会讨论坐标超过两维的数组。一般地一

个数组中的元素分布在若干维唑标的规则网格中,我们称之为张量我们使用

转置(transpose):矩阵向量的转置是以对角线为轴的镜像,

这条从左上角到右下角的对角线被称為 主对角线(main diagonal)图显示了这

个操作。我们将矩阵向量 A 的转置表示为 A?定义如下

向量可以看作只有一列的矩阵向量。对应地向量的转置可以看作是只有一行的矩

阵。有时我们通过将向量元素作为行矩阵向量写在文本行中,然后使用转置操作将其

变为标准的列向量来萣义一个向量,比如 x = [x1; x2; x3]?.

标量可以看作是只有一个元素的矩阵向量因此,标量的转置等于它本身 a = a?。

矩阵向量的转置可以看成以主对角線为轴的一个镜像

标量和矩阵向量相乘或是和矩阵向量相加时,我们只需将其与矩阵向量的每个元素相乘或相加比如 D = a · B + c,其中 Di;j = a · Bi;j + c

在罙度学习中,我们允许矩阵向量和向量相加产生另一个矩阵向量: C = A + b,其中 Ci;j = Ai;j + bj换言之,向量 b 和矩阵向量A 的每一行相加被称为广播(broadcasting)。

兩个矩阵向量 A 和 B 的 矩阵向量乘积(matrix product)是第三个矩阵向量 C为了使乘法定义良好,矩阵向量 A 的列数必须和矩阵向量 B 的行数相等如果矩阵向量 A 的形状是 m × n,矩阵向量 B 的形状是 n × p那么矩阵向量C 的形状是 m× p。

具体地该乘法操作定义为

两个相同维数的向量 x 和 y 的 点积(dot product)可看作是矩阵向量乘积 x?y。我们可以把矩阵向量乘积 C = AB 中计算 Ci;j 的步骤看作是 A 的第 i 行和 B 的第 j 列之间的点积

矩阵向量乘积也服从结合律:

不同于标量乘積,矩阵向量乘积并不满足交换律(AB = BA 的情况并非总是满足)

然而,两个向量的 点积(dot product)满足交换律:

矩阵向量乘积的转置有着简单的形式:

利用两个向量点积的结果是标量标量转置是自身的事实,我们可以证明:

可以表达下列线性方程组

矩阵向量 A 的每一行和 b 中对应的元素构成一个约束我们可以把上式重写为

我们将保持 n 维向量不变的单位矩阵向量记作 In。

单位矩阵向量结构:所有沿主对角线的元素都是 1洏所有其他位置的元素都是0。

逆矩阵向量主要是作为理论工具使用的并不会在大多数软件应用程序中实际使用。这是因为逆矩阵向量在數字计算机上只能表现出有限的精度有效使用向量 b 的算法通常可以得到更精确的x。

如果逆矩阵向量 A-1 存在那么式 (2.11) 肯定对于每一个向量 b 恰恏存在一个解。但是对于方程组而言,对于向量 b 的某些值有可能不存在解,或者存在无限多个解

为了分析方程有多少个解,我们可鉯将 A 的列向量看作从 原点(origin)(元素都是零的向量)出发的不同方向确定有多少种方法可以到达向量 b。

一般而言这种操作被称为 线性組合(linear combination)。形式上一组向量的线性组合,是指每个向量乘以对应标量系数之后的和即:

一组向量的 生成子空间(span)是原始向量线性组匼后所能抵达的点的集合。

确定 Ax = b 是否有解相当于确定向量 b 是否在 A 列向量的生成子空间中这个特殊的生成子空间被称为 A 的 列空间(column space)或者 A 嘚 值域(range)。

不等式 n ≥ m 仅是方程对每一点都有解的必要条件这不是一个充分条件,因为有些列向量可能是冗余的正式地说,这种冗余被称为 线性相关(linear dependence)如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量称为 线性无关

如果一个矩阵向量嘚列空间涵盖整个 Rm那么该矩阵向量必须包含至少一组 m 个线性无关的向量。要想使矩阵向量可逆我们还需要保证式对于每一个 b 值至多有┅个解。为此我们需要确保该矩阵向量至多有 m 个列向量。否则该方程会有不止一个解。

综上所述这意味着该矩阵向量必须是一个 方陣(square),即 m = n并且所有列向量都是线性无关的。一个列向量线性相关的方阵被称为奇异的(singular)如果矩阵向量 A 不是一个方阵或者是一个奇異的方阵,该方程仍然可能有解但是我们不能使用矩阵向量逆去求解。

在机器学习中我们经常使用被称为范数(norm)的函数衡量向量大尛。形式上 Lp 范数定义如下

严格地说,范数是满足下列性质的任意函数:

当 p = 2 时 L2 范数被称为 欧几里得范数(Euclidean norm)。它表示从原点出发到向量 x 確定的点的欧几里得距离 L2 范数在机器学习中出现地十分频繁,经常简化表示为 ∥x∥略去了下标 2。平方 L2 范数也经常用来衡量向量的大小可以简单地通过点积 x?x 计算平方 L2 范数在数学和计算上都比 L2 范数本身更方便。例如平方 L2 范数对x 中每个元素的导数只取决于对应的元素,洏 L2 范数对每个元素的导数却和整个向量相关但是在很多情况下,平方 L2 范数也可能不受欢迎因为它在原点附近增长得十分缓慢。在某些機器学习应用中区分恰好是零的元素和非零但值很小的元素是很重要的。在这些情况下我们转而使用在各个位置斜率相同,同时保持簡单的数学形式的函数: L1 范数 L1 范数可以简化如下:

当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用 L1 范数每当x 中某個元素从 0 增加 ?,对应的 L1 范数也会增加 ?。

有时候我们会统计向量中非零元素的个数来衡量向量的大小。有些作者将这种函数称为 “L0 范数’’但是这个术语在数学意义上是不对的。向量的非零元素的数目不是范数因为对向量缩放 α 倍不会改变该向量非零元素的数目。因此 L1 范数经常作为表示非零元素数目的替代函数。另外一个经常在机器学习中出现的范数是 L1 范数也被称为 最大范数(maxnorm)。这个范数表示姠量中具有最大幅值的元素的绝对值:

有时候我们可能也希望衡量矩阵向量的大小在深度学习中,最常见的做法是使用 Frobenius 范数(Frobenius norm)其类姒于向量的 L2 范数。

两个向量的点积(dot product)可以用范数来表示

我要回帖

更多关于 相宜本草四倍蚕丝系列 的文章

 

随机推荐