深度学习中的线性代数

1、范数

目的:在机器学习和深度学习中,限制模型复杂度、提升模型的泛华能力。

范数(Norm)的定义:

|x|p=(i|x|p)1p

L1范数:即x的绝对值之和

L2范数:即xi的平方和的二次方根(欧几里得范数)

代码:

Import numpy as np

Import numpy.linalg as LA

X = np.arange(0,1,0.1)

X1 = LA.norm(x,1)   # 计算1范数

X2 = LA.norm(x,2)   # 计算2范数

Xa = LA.norm(x,np.inf)  # 计算无穷范数

2、特征值分解

特征值分解即将矩阵分解成一组特征向量和特征值,特征值分解针对的是方阵。

定义:Ax=lambda x     (lambda是一个数值)

Lambda 成为方阵A的特征值,向量x称为矩阵A对应特征值lambda的特征向量,但并不是所有的方阵都能进行特征值分解,一个n阶方阵A能进行特征值分解的充分必要条件是它含有n个线性无关的特征向量。求方阵的特征值代码如下(不规范代码):

Import numpy as np

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

A1 = np.linalg.eigvals(a)   # 得到特征值

A2,V1 = np.linalg.eig(a) # 得到特征值,特征向量

3、奇异值分解

奇异值分解主要针对的是一般矩阵的分解,应用非诚广泛,比如降维、推荐系统、数据压缩等。

定义:将矩阵A分解成三个矩阵的乘积:A=UDVT 

其中,A.shape =(m,n)  U.shape=(m,m)、D.shape=(m,n)  、V.shape=(n,n)

其中U和V是正交矩阵,D是对角矩阵(不一定是方阵),对角矩阵D对角线上的元素被称为矩阵A的奇异值,U的列向量被称为左奇异向量,V的列向量被称为右奇异值向量。Python实现:

Import numpy as np

D = np.mat([[3,3,3,0,0],[2,2,2,0,0],[1,1,1,0,0],[4,4,3,2,2]])

U,sigma,vt = np.linalg.svd(D)

4、主成分分析

主成分分析(Principal Component Analysis,PCA)是一种统计分析方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后这组变量叫主成分。

目标函数:转换后的信息损失最小,合理的设想是重构后的点X*与原来的数据点之间距离最小,故PCA可转换为带约束的最优化的问题:

Minw||x-x*||F2

 

Python代码实现:

算法的主要步骤:

  1. 对向量X进行去中心化
  2. 计算向量X的协方差矩阵,自由度可以选择0或1
  3. 计算协方差矩阵的特征值和特征向量
  4. 选取最大的K个特征值及其特征向量
  5. 用X与特征向量相乘

使用数据:iris

 

查看各特征值得贡献率

结果如下:

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值