机器学习(5):几个重要矩阵

1 可逆矩阵

矩阵A首先是方阵,并且存在另一个矩阵B,使得它们的乘积为单位阵,则称B为A的逆矩阵。如下所示,利用numpy模块求解方阵A的逆矩阵,B,然后再看一下A*B是否等于单位阵E,可以看出等于单位阵E。


python测试代码:

import numpy as np

'方阵A'

A = np.array([[1,2],[3,4]])

A

array([[1, 2],

       [3, 4]])


'逆矩阵B'

import numpy.linalg as la

B = la.inv(A)

B

array([[-2. ,  1. ],

       [ 1.5, -0.5]])


'A*B'

E = A.dot(B)

E

array([[  1.00000000e+00,   1.11022302e-16],

       [  0.00000000e+00,   1.00000000e+00]])



  2 奇异矩阵

奇异矩阵首先得是方阵(即行数和列数相等的矩阵),再检查此矩阵的行列式的值,等于0,则为奇异矩阵。不等于0就是非奇异矩阵了。注意,非奇异矩阵也是方阵。


非奇异矩阵python测试 :

import numpy as np

'方阵A'

A = np.array([[1,2],[3,4]])

A

array([[1, 2],

       [3, 4]])

'方阵A的行列式计算'

la.det(A)

-2.0000000000000004

行列式不为0,所以矩阵A为非奇异矩阵


C = np.array([[1,2],[1,2]])

C

array([[1, 2],

       [1, 2]])

la.det(C)

0.0

行列式为0,因此方阵C为奇异矩阵




3 病态矩阵


求解方程组时对数据的小扰动很敏感的矩阵称为病态矩阵,具体来说可以这样描述:

解线性方程组 Ax = b 时,若对于系数矩阵 A 及右端项 b 的小扰动 δA、δb, 方程组 (A+δA) χ = b+δb 的解 χ 与原方程组 Ax=b 的解差别很大,则称矩阵 A 为病态矩阵。


'病态矩阵测试 Ax = b'

'x = la.inv(A).dot(b) 如下python代码所示:'

A = np.array([[400,-201],[-800,401]])

b = np.array([200,-200])

x = la.inv(A).dot(b)

x

array([-100., -200.])


'将 A 矩阵中的元素 400 改变成 401,这就是一个小扰动'

'但是小扰动,造成的解与原来相比,差别非常大'

A = np.array([[401,-201],[-800,401]])

b = np.array([200,-200])

x = la.inv(A).dot(b)

x

array([ 40000.00000004,  79800.00000007])


由此可见,系数矩阵A只是做了一个微调,但是得到的解与原来的真解,真是相差甚远啊!


4 条件数


衡量矩阵的病态程度通常是看矩阵的条件数。条件数的定义:K(A)= ‖inv(A)‖ * ‖A‖ 的大小。

其中,‖‖ 表示对矩阵取某一种范数


接下来测试上面提到的病态矩阵的条件数,和一个良好的矩阵的条件数,看看它们的大小。




主要推送关于算法的分析过程及应用的消息。培养思维能力,注重过程,挖掘背后的原理,刨根问底。本着严谨和准确的态度,目标是撰写实用和启发性的文章,欢迎您的关注。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值