ขอให้เราพิจารณาผลรวมของสหสัมพันธ์แบบคู่ที่แน่นอนว่าเป็นการวัดที่เราเลือก เราจึงหาเวกเตอร์ด้วยซึ่งจะลดโดยที่.v∈{0,1}Nl1(v)=nv′QvQij=|Aij|
สมมติว่า Q เป็นบวกแน่นอนเช่น A, ปัญหาจะลดลงเพื่อแก้ปัญหาการหาค่าเหมาะที่สุดแบบสมการกำลังสอง:
v∗=min v′Qv s.t. l1(v)=n, vi∈{0,1}
สิ่งนี้แสดงให้เห็นถึงการผ่อนคลายที่กำลังเกิดขึ้น:
v∗=min v′Qv s.t. l1(v)=n, vi∈[0,1]
ซึ่งสามารถแก้ไขได้อย่างง่ายดายโดยใช้ตัวแก้แบบนอกชั้นวาง; แล้วผลที่จะได้รับโดยที่ใหญ่ที่สุดองค์ประกอบใน *nv∗
ตัวอย่างรหัส matlab:
N=100;
n=10;
% Generate random data
A=rand(N,1000);
C=corrcoef(A');
Q=abs((C+C')/2); % make sure it is symmetric
x = cplexqp(Q,zeros(1,N),[],[], ones(1, N),n, zeros(N,1), ones(N,1));
% If you don't use CPLEX, use matlab's default
% x = quadprog(Q,zeros(1,N),[],[], ones(1, N),n, zeros(N,1), ones(N,1));
assert(abs(sum(x)-n)<1e-10);
% Find the n largest values
I=sort(x);
v=zeros(size(x)); v(x>I(N-n))=1;
assert(abs(sum(v)-n)<1e-10);
% Make sure we do better than 10K random trials
for i=1:10000
vc=zeros(size(x)); vc(randperm(N,n))=1;
assert(sum(vc)==n, 'Wrong l0 norm');
assert(vc'*Q*vc>v'*Q*v, 'Improves result');
end
% Show results
J=find(v==1);
fprintf('The optimal solution total off-diagonal correlations are %1.3f\n', v'*Q*v-n);
fprintf('The matrix:\n');
C(J,J)
metrics to measure the overall correlation
. คุณกำลังคิดเกี่ยวกับปัจจัยหรือไม่