math - 如何降低向量的维数

标签 math vector machine-learning vectorization dimension-reduction

我有一组向量。我正在研究将 n 维向量减少为一元值 (1-d) 的方法,例如

(x1,x2,....,xn) ------> y

这个单一值需要是向量的特征值。每个唯一的向量都会产生一个唯一的输出值。以下哪种方法是合适的:

1- 向量的范数 - 测量距原点的欧几里得距离的平方和的平方根

2- 计算 F 的哈希值,使用一些哈希技术避免冲突

3- 使用线性回归来计算,y = w1*x1 + w2*x2 + ... + wn*xn - 如果输入值对输出没有良好的依赖性,则不太可能很好

4- 像 PCA 这样的特征提取技术,根据以下条件为每个 x1,x2,..xn 分配权重 输入向量集

最佳答案

从该方法中不清楚您需要此转换具有哪些属性,因此我猜测您不需要转换来保留除唯一性和可能的​​可逆性之外的任何属性。

您建议的技术通常都无法避免冲突:

  1. 范数 - 指向相反方向的两个向量具有相同的范数。

  2. 哈希 - 如果输入未知 - 哈希函数通常意味着有限的图像,并且您有无限数量的可能向量 - 不好。

  3. 很容易找到对任何线性回归结果给出相同结果的向量(想一想)。

  4. PCA 是一种特定类型的线性变换 - 因此与线性回归存在相同的问题。

所以 - 如果您只是在寻找唯一性,您可以“字符串化”您的向量。一种方法是将它们写为文本字符串,不同的坐标由特殊字符(例如下划线)分隔。然后将此字符串的二进制值作为您的表示形式。

如果空间很重要并且您需要更有效的表示,您可以考虑更有效的位编码:集合 0,1,...,9,'.','' 中的每个字符都可以由 4 位表示 - 十六进制数字(将“.”映射到 A,将“”映射到 B)。现在将此字符串编码为十六进制数,节省一半的空间。

关于math - 如何降低向量的维数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16019633/

相关文章:

c++ - 回文测试函数

mysql - 如果长于 n 时间,则获取两条记录之间的时间差

javascript - 获取多边形的面积

c++ - Vector 的 Fwrite 和 Fread 返回 Segmentation Fault

machine-learning - Huggingface Trainer load_best_model f1 分数与损失和过度拟合

algorithm - 编写算法来决定是否可以使用一组其他数字和特定运算符来达到目标​​数字?

swift - 如何在 ARKit 中获取相机的前向 (LookAt) 向量?

c++ - 找出 vector 中的所有元素是假还是真 C++ 的最快方法?

python - 当并非所有类别都存在于多个特征和数据集中时的虚拟变量

c++ - 为TensorFlow Lite C++编写read_jpeg和解码_jpeg函数