幂迭代(power iterations)算法

  矩阵的特征值和特征向量包含了矩阵重要的信息,其中,最大的特征值对应的特征向量包含就矩阵最多的信息,这也是很多数据降维算法的核心思想.矩阵特征值的详细解释可见马同学专栏如何理解矩阵特征值和特征向量.专栏中比较详细地解释了一个事实:现有方阵 H ∈ R n × n H \in R^{n \times n} HRn×n,且随机取一个列向量 v ∈ R n × 1 v \in R^{n \times 1} vRn×1,在多次使用 H H H左乘 v v v之后,得到的结果位于 H H H的最大特征值对应的特征向量张成的特征空间内.
  power iterations算法也正是基于该思想:若每次使用 H H H左乘 v v v之后单位化得到的向量 v ′ v' v,那么迭代若干次之后可以认为 v ′ v' v就是矩阵 H H H的最大特征值对应的特征向量.同样,该思想也曾被用于page rank算法中(俗称佩奇排序),详情可见统计学习方法第二版第21章,这里就不过多展开了.下图给出了power iterations算法的伪代码:
在这里插入图片描述
该算法实现起来十分简单,而且计算量很小,对比其他降维算法动不动就SVD的步骤,简直是神来之笔,而且该算法只有乘法,完全可微,嵌入神经网络中反向传播简直不要太轻松!最后是算法的python实现,用到了numpy库:

import numpy as np

dim = 5
np.random.seed(0)
data = np.random.rand(dim, dim)
eigenvalue, featurevector = np.linalg.eig(data)
v = np.random.rand(dim, 1)
for i in range(15):
	v = np.matmul(data, v)
	v = v / np.sqrt(np.sum(v * v))
print((np.expand_dims(featurevector[:, 0], -1) - v).T)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值