1

ガウス分布を使用して異常を検出するコードを書いています。

これは、確率密度関数を計算するために書いたコードです。

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 個の小さな matlab クラスターをセットアップしましたが、この場合、これを並列化する方法がわかりません。

私の 2 番目の質問: トレーニング セットとして使用しているマトリックスの 1 つは [42712X19700] です。ランダム フォレストのような手法を使用することは可能ですか (トレーニング セットをスライスしてから結果を結合しますか?)。または、この問題を回避する他の方法はありますか?

助けていただければ幸いです。よろしくお願いします!

4

1 に答える 1