상관 행렬을 생성하려고합니다. 미리 지정된 희소성 구조를 갖는 (대칭 psd) 노드). 그래프에 연결된 노드는 상관 관계가 있습니다나머지는 모두 0이고 대각선은 모두 1입니다.
이 행렬을 여러 번 생성하려고 시도했지만 유효한 상관 관계 행렬을 거의 얻지 못했습니다.
상관 행렬 whp를 보장 할 수있는 방법이 있습니까? 긍정적 인 상관 관계 만 가질 수 있으므로 등은 옵션이 아닙니다.
어떤 도움이라도 대단히 감사합니다!
상관 행렬을 생성하려고합니다. 미리 지정된 희소성 구조를 갖는 (대칭 psd) 노드). 그래프에 연결된 노드는 상관 관계가 있습니다나머지는 모두 0이고 대각선은 모두 1입니다.
이 행렬을 여러 번 생성하려고 시도했지만 유효한 상관 관계 행렬을 거의 얻지 못했습니다.
상관 행렬 whp를 보장 할 수있는 방법이 있습니까? 긍정적 인 상관 관계 만 가질 수 있으므로 등은 옵션이 아닙니다.
어떤 도움이라도 대단히 감사합니다!
답변:
@Rodrigo de Azevedo의 시가는 닫히지 않습니다.
해결책은 반정의 프로그래밍을 사용하여 최대 값을 찾는 것입니다. , 최소값 (음이 아닌 값), , 의 규정 된 희소성 패턴을 갖는 상관 행렬이 양의 반정의 (psd)가되도록. 모든 가치 그런 , psd 매트릭스 생성 (리더를위한 운동)
따라서 분포를 선택해야합니다. 값만 취할 수있는 또는 수락 / 거부를 사용하고 생성 된 값을 거부해야합니다. psd 행렬을 생성하지 않습니다.
MATLAB에서 YALMIP를 사용하는 4 x 4 행렬의 예
sdpvar rho % declare rho to be a scalar variable
% find maximum value of rho (by minimizing -rho) subject to prescribed matrix being psd.
optimize([1 0 rho 0;0 1 rho 0;rho rho 1 rho;0 0 rho 1] >= 0,-rho)
% find minimum value of rho subject to prescribed matrix being psd and rho being >= 0.
optimize([[1 0 rho 0;0 1 rho 0;rho rho 1 rho;0 0 rho 1] >= 0,rho >= 0],rho)
결과 : 최대 rho = 0.57735, 최소 rho = 0. 치수 또는 희소성 패턴에 관계없이, rho가 비 음성이고 규정 된 행렬이 psd 인 rho의 최소값이 0이라는 것은 명백하다. 따라서 음이 아닌 최소값을 찾기 위해 반 정밀도 최적화를 실행할 필요가 없습니다..
상관 행렬은 대칭이고 양의 반올림이며 주요 대각선에 있습니다. 하나를 찾을 수 있습니다목적 함수가 임의 인 제로 함수 인 다음의 반정의 프로그램 (SDP) 을 해결함으로써 상관 행렬
희소성 제한 조건과 같은 추가 제한 조건이있는 경우
비 음성 제약 다음 SDP를 해결합니다.
ㅏ 예
우리가 갖고 싶어한다고 가정하자 과 . MATLAB + CVX 스크립트 는 다음과 같습니다 .
cvx_begin sdp
variable X(3,3) symmetric
minimize( trace(zeros(3,3)*X) )
subject to
% put ones on the main diagonal
X(1,1)==1
X(2,2)==1
X(3,3)==1
% put a zero in the northeast and southwest corners
X(1,3)==0
% impose nonnegativity
X(1,2)>=0
X(2,3)>=0
% impose positive semidefiniteness
X >= 0
cvx_end
스크립트를 실행하면
Calling sedumi: 8 variables, 6 equality constraints
------------------------------------------------------------
SeDuMi 1.21 by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.
Alg = 2: xz-corrector, Adaptive Step-Differentiation, theta = 0.250, beta = 0.500
eqs m = 6, order n = 6, dim = 12, blocks = 2
nnz(A) = 8 + 0, nnz(ADA) = 36, nnz(L) = 21
it : b*y gap delta rate t/tP* t/tD* feas cg cg prec
0 : 3.00E+000 0.000
1 : -1.18E-001 6.45E-001 0.000 0.2150 0.9000 0.9000 1.86 1 1 1.2E+000
2 : -6.89E-004 2.25E-002 0.000 0.0349 0.9900 0.9900 1.52 1 1 3.5E-001
3 : -6.48E-009 9.72E-007 0.097 0.0000 1.0000 1.0000 1.01 1 1 3.8E-006
4 : -3.05E-010 2.15E-009 0.000 0.0022 0.9990 0.9990 1.00 1 1 1.5E-007
5 : -2.93E-016 5.06E-015 0.000 0.0000 1.0000 1.0000 1.00 1 1 3.2E-013
iter seconds digits c*x b*y
5 0.3 5.8 0.0000000000e+000 -2.9302886987e-016
|Ax-b| = 1.7e-015, [Ay-c]_+ = 6.1E-016, |x|= 2.0e+000, |y|= 1.5e-015
Detailed timing (sec)
Pre IPM Post
1.563E-001 2.500E-001 1.094E-001
Max-norms: ||b||=1, ||c|| = 0,
Cholesky |add|=0, |skip| = 0, ||L.L|| = 1.
------------------------------------------------------------
Status: Solved
Optimal value (cvx_optval): +0
CVX가 찾은 솔루션을 보자.
>> X
X =
1.0000 0.4143 0
0.4143 1.0000 0.4143
0 0.4143 1.0000
이 행렬은 반정 수입니까? 긍정적 인 결정?
>> rank(X)
ans =
3
>> eigs(X)
ans =
1.5860
1.0000
0.4140
예상 한대로 양수입니다. 0이 아닌 (선형) 목적 함수를 선택하여 양의 반정의 상관 행렬을 찾을 수 있습니다.