gpt4 book ai didi

matlab - SVM 中的 Gram 矩阵/核不是半正定的

转载 作者:行者123 更新时间:2023-11-30 08:51:14 25 4
gpt4 key购买 nike

使用任意数据计算的任何 kernel 矩阵(或 Gram 矩阵)都保证是半正定的。

我有一个数据矩阵 D,其中每一行都是一个数据向量。如果我像这样计算内核,

K = D*D';

事实证明它不是半正定的,更不用说正定的了。

为什么会发生这种情况?我有什么遗漏的吗?我的直觉告诉我,这很可能是数值错误,因为我的内核矩阵的所有负特征值都在 1E-12 左右。

This question 在某种程度上暗示了一个答案,但我无法想象为什么矩阵至少不是对称的!

最佳答案

一般说明

首先,仔细检查您的 D 是否方向正确。如果您正在使用

K = D*D';

那么你需要D尺寸N x d ,其中N -样本数量,d - 特征数量(换句话说 - 面向行的数据集)。否则,您也会得到一个有效的格拉米安,但对于不同的问题(对于 d >> N 它可能会导致更多的数值不稳定)。

半正定 Gram 矩阵

结果矩阵将始终对称(除非您没有确定性算术运算)。

还保证了半正定性,缺乏这种特征的唯一可能原因是数值不准确。如果出现这种情况,请考虑减少D通过一些软技术来确定维数,例如具有非常高k的PCA (例如等于D/2)。另一个可能有帮助的技巧(但是,它对问题引入了额外的数学约束)是计算:

K = D*D' + eps*I

哪里eps是一个小常数(假设是 1e-10,所以它比负特征值大)并且 I是维度为 N 的单位矩阵。这种技术有很多名称(取决于研究领域),其中之一是正则化。

正定格拉姆矩阵

正定克(核)矩阵不太常见,它是 p.d。 iff 你的向量是线性独立的(所以特别是你需要 d>=N ,但显然线性独立性更强,所以这只是要求,而不是 iff)。因此,许多核矩阵是通过一些复杂的投影来获得的,这些投影确保了线性独立性,例如RBF核引入了线性独立性(在特征空间中!),因此基于RBF的核矩阵应该是p.d。 (最多有数值错误,并假设您的数据集是一致的,这意味着每个点都与其他点不同)。

关于matlab - SVM 中的 Gram 矩阵/核不是半正定的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29644180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com