【问题标题】:it is possible determinant of matrix(256*256) be infinite矩阵(256*256)的行列式可能是无限的
【发布时间】:2014-02-19 21:46:46
【问题描述】:

我有 (256*1) 个特征向量来自 (16*16) 个灰度图像。向量数量为 550 当我计算这个向量的样本协方差并计算协方差矩阵行列式时 答案是inf

有限范围 (0:255) 值的有限矩阵的行列式可能是无限的,或者我在哪里弄错了?

事实上,我想要使用贝叶斯估计进行分类,我的分布是高斯分布,当 我计算行列式为 inf ,最终答案(可能性)为零。

我的部分代码:

Mean =  mean(dataSet,2);
MeanMatrix = Mean*ones(1,NoC);
Xc = double(dataSet)-MeanMatrix; % transform data to the origine
Sigma = (1/NoC) *Xc*Xc'; % calculate sample covariance matrix 
Parameters(i).M = Mean';
Parameters(i).C = Sigma;

likelihoods(i) = (1/(2*pi*sqrt(det(params(i).C)))) * (exp(-0.5 * (double(X)-params(i).M)' * inv(params(i).C) * (double(X)-params(i).M)));

变量 i 显示我的课程; 变量 X 显示我的特征向量;

【问题讨论】:

  • 也许你超出了浮点范围? 256**256 是一个相当大的数字,其中有 256!

标签: matlab matrix artificial-intelligence classification


【解决方案1】:

这种矩阵的行列式可以是无限的吗?不,它不能。

它可以评估为无限吗?当然是。

这是一个矩阵的示例,其中包含有限数量的元素,这些元素不是太大,但行列式很少会评估为有限数:

det(rand(255)*255)

【讨论】:

  • 这是另一个:det(5*eye(500))
  • 也许是matlab因为值大而用inf估计大的不是?
  • @alikiani 实际上,太大的值将被评估为Inf。您应该将您的预期结果(以及任何中间结果)与realmax 进行比较,看看它们是否太大。
【解决方案2】:

不,这是不可能的。它可能是单数的,但取值较大的元素将具有决定性的价值。

【讨论】:

    【解决方案3】:

    在您的情况下,可能发生的情况是您的数据点太少而无法生成全秩协方差矩阵。

    例如,如果您有 N 示例,每个示例的维度为 dN<d,那么您的 d x d 协方差矩阵将不是满秩的,并且行列式为零。

    在这种情况下,不存在矩阵逆(精度矩阵)。但是,尝试计算逆的行列式(通过采用1/|X'*X|=1/0 -> \infty)将产生无穷大的值。

    解决此问题的一种方法是将协方差设置为X'*X+eps*eye(d),其中eps 是一个小值。这种技术对应于对X 的元素进行弱先验分布。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多