维数灾难

1.维数灾难英语:curse of dimensionality,又名维度的诅咒)是一个最早由理查德·贝尔曼(Richard E. Bellman)在考虑优化问题时首次提出来的术语[1][2],用来描述当(数学)空间维度增加时,分析和组织高维空间(通常有成百上千维),因体积指数增加而遇到各种问题场景。这样的难题在低维空间中不
会遇到,如物理空间通常只用三维来建模。

举例来说,100个平均分布的点能把一个单位区间以每个点距离不超过0.01采样;而当维度增加到10后,如果以相邻点距离不超过0.01小方格采样一单位超正方体,则需要1020 个采样点:所以,这个10维的超正方体也可以说是比单位区间大1018倍。(这个是理查德·贝尔曼所举的例子)

在很多领域中,如采样组合数学机器学习数据挖掘都有提及到这个名字的现象。这些问题的共同特色是当维数提高时,空间的体积提高太快,因而可用数据变得很稀疏。稀疏性对于任何要求有统计学意义的方法而言都是一个问题,为了获得在统计学上正确并且有可靠的结果,用来支撑这一结果所需要的数据量通常随着维数的提高而呈指数级增长。而且,在组织和搜索数据时也有赖于检测对象区域,这些区域中的对象通过相似度属性而形成分组。然而在高维空间中,所有的数据都很稀疏,从很多角度看都不相似,因而平常使用的数据组织策略变得极其低效。

灾难是指在涉及到向量的计算问题中,随着的增加,计算量呈指倍增长的现象。在Python中,可以使用PCA(Principal Component Analysis)算法来应对灾难。PCA是一种降算法,通过线性变换将高据映射到低空间中,以便更好地处理据。 以下是基于原生Python和numpy库实现PCA算法的示例代码: ```python import numpy as np def pca(data, n_components): # 中心化据 data_centered = data - np.mean(data, axis=0) # 计算协方差矩阵 covariance_matrix = np.cov(data_centered, rowvar=False) # 计算特征值和特征向量 eigenvalues, eigenvectors = np.linalg.eig(covariance_matrix) # 对特征值进行排序并选择前n_components个特征向量 sorted_indices = np.argsort(eigenvalues)[::-1] selected_indices = sorted_indices[:n_components] selected_eigenvectors = eigenvectors[:, selected_indices] # 对据进行降 transformed_data = np.dot(data_centered, selected_eigenvectors) return transformed_data # 示例据 data = np.array([[ 1. , 1. ], [ 0.9 , 0.95], [ 1.01, 1.03], [ 2. , 2. ], [ 2.03, 2.06], [ 1.98, 1.89], [ 3. , 3. ], [ 3.03, 3.05], [ 2.89, 3.1 ], [ 4. , 4. ], [ 4.06, 4.02], [ 3.97, 4.01]]) # 使用PCA进行降 new_data = pca(data, n_components=1) print(new_data) ``` 上述代码中,我们首先定义了一个名为pca的函,该函接受原始据和要降到的作为输入,并返回降后的据。在函内部,我们首先对据进行中心化处理,然后计算协方差矩阵,接着计算特征值和特征向量,最后根据选择的据进行降。 输出结果将是降后的据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值