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代码实现:
算法的主要步骤:
- 对向量X进行去中心化
- 计算向量X的协方差矩阵,自由度可以选择0或1
- 计算协方差矩阵的特征值和特征向量
- 选取最大的K个特征值及其特征向量
- 用X与特征向量相乘
使用数据:iris
查看各特征值得贡献率
结果如下: