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 

나의 첫번째 질문 : fastter이를 계산하는 영리한 방법이있다? 나는 여기에 2 PC와 함께 약간의 matlab 클러스터를 설정했지만,이 경우 병렬 처리하는 방법이 없다.

내 두 번째 질문 : 열차 집합으로 사용하는 행렬 중 하나에서 [42712X19700], 심지어 24GB의 RAM이 있어도 메모리 오류가 발생합니다. 랜덤 포레스트 (훈련 계획을 슬라이스 한 다음 결과를 결합하는 기술)를 사용할 수 있습니까? 아니면이 문제를 우회하는 다른 방법?

감사합니다. 사전에 Tks!

+0

명백한 속도 향상은 보이지 않지만 크기가 큰 행렬을 조작 할 때 벡터화 된 솔루션이 램에서 날아가는 것이 일반적입니다. 행 단위로 처리하는 것이 해결책일까요? (그렇다면 병렬 처리를 위해'parfor' 루프로 쉽게 감쌀 수 있습니다.) –

+0

'training'연산이란 무엇입니까? 뮤와 시그마 설정? 그렇다면 충분한 통계를 누적 적으로 계산할 수 있습니다. –

+0

계산을 위해 사용 된 공식을 검토했으며 Ben이 말한 것처럼 누적 합계입니다. Dennis가 말했듯이, 그래서 문제는 trainingset을 덩어리로 분리하고 parfor로 계산할 것입니다! Tks들, 문제 해결! –

답변

0

작은 청크로 나누고 각 청의 처리에 parfor를 적용하십시오. 그것은 단순히 대규모 처리를위한 나의 선택입니다. 또는 프로세스 기반 병렬 처리를 사용하고 다른 프로세스가 다른 데이터 청크를 계산할 때 하나의 청크를 읽을 수도 있습니다.