gpt4 book ai didi

matlab - 异常检测

转载 作者:行者123 更新时间:2023-11-30 09:23:50 25 4
gpt4 key购买 nike

我正在编写一个代码来使用高斯分布检测异常。

这是我编写的用于计算概率密度函数的代码:

function p = multivariateGaussian(X, mu, Sigma2)
%MULTIVARIATEGAUSSIAN Computes the probability density function of the
%multivariate gaussian distribution.
% p = MULTIVARIATEGAUSSIAN(X, mu, Sigma2) Computes the probability
% density function of the examples X under the multivariate gaussian
% distribution with parameters mu and Sigma2. If Sigma2 is a matrix, it is
% treated as the covariance matrix. If Sigma2 is a vector, it is treated
% as the \sigma^2 values of the variances in each dimension (a diagonal
% covariance matrix)
%

k = length(mu);

if (size(Sigma2, 2) == 1) || (size(Sigma2, 1) == 1)
Sigma2 = diag(Sigma2);
end

X = bsxfun(@minus, X, mu(:)');
p = (2 * pi) ^ (- k / 2) * det(Sigma2) ^ (-0.5) * ...
exp(-0.5 * sum(bsxfun(@times, X * pinv(Sigma2), X), 2));

end

我的第一个问题:有没有更快、更聪明的方法来计算这个?我在这里设置了一个带有 2 个 pc 的小 matlab 集群,但在这种情况下,我不知道如何并行化它。

我的第二个问题:在我用作训练集的矩阵之一是 [42712X19700],即使有 24 GB 的内存,我也会出现内存不足错误。是否可以使用像随机森林这样的技术(对训练集进行切片,然后组合结果?)?或者有其他方法可以解决这个问题吗?

我很感激任何帮助。提前致谢!

最佳答案

将数据分成小块,并应用 parfor 来处理每个 block 。这只是我对大规模处理的选择。或者,您可以使用基于进程的并行化,并在另一个进程正在计算另一数据 block 时读取一个数据 block 。

关于matlab - 异常检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19583489/

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