Tập hợp tương quan nhỏ nhất của các biến ngẫu nhiên từ ma trận tương quan


10

Tôi có một ma trận tương quan , mà tôi thu được bằng cách sử dụng hệ số tương quan tuyến tính của Pearson thông qua Corrcoef () của Matlab . Ma trận tương quan có kích thước 100x100, tức là tôi đã tính ma trận tương quan trên 100 biến ngẫu nhiên.A

Trong số 100 biến ngẫu nhiên này, tôi muốn tìm 10 biến ngẫu nhiên có ma trận tương quan chứa "tương quan nhỏ" nhất có thể (xem Định lượng "ma trận tương quan" bao nhiêu so với ma trận tương quan B về số liệu để đo lường mối tương quan tổng thể trong một ma trận tương quan). Tôi chỉ quan tâm đến mối tương quan cặp.

Có phương pháp nào tốt để tìm 10 biến ngẫu nhiên đó trong một khoảng thời gian hợp lý (ví dụ: tôi không muốn thử kết hợp (10010) )? Các thuật toán gần đúng là OK.


1
metrics to measure the overall correlation. Bạn đang suy nghĩ cụ thể về yếu tố quyết định?
ttnphns

1
Một câu hỏi thống kê rất giống nhau.stackexchange.com/q/73125/3277 .
ttnphns

1
Hệ số xác định log là một hàm con (xem trang 18 ở đây ). Thật không may, nó không tăng, điều đó có nghĩa là kết quả xấp xỉ tham lam 1-1 / e cổ điển 11/ekhông được áp dụng, nhưng vẫn cảm thấy như thế có thể hữu ích bằng cách nào đó ....
Dougal

1
Thay vào đó, nếu bạn muốn sử dụng giá trị trung bình của tương quan, điều này trở thành một vấn đề trọng số cạnh tối đa , tất nhiên là NP-hard nhưng đã thấy một số công việc trên các thuật toán xấp xỉ.
Dougal

3
Những gì về ý tưởng đơn giản với phân tích cụm. Lấylà khoảng cách (không giống nhau) và thực hiện phân cụm theo một phương thức đã chọn (có thể tôi sẽ chọn phân cấp liên kết trung bình hoặc Ward). Chọn cụm chặt chẽ nhất bao gồm 10 mục. |r|
ttnphns

Câu trả lời:


3

Chúng ta hãy xem xét tổng các mối tương quan cặp tuyệt đối như là thước đo lựa chọn của chúng ta. Do đó, chúng tôi tìm kiếm một vectơ với sẽ giảm thiểu trong đó.l 1 ( v ) = n v Q v Q i j = | A i j |v{0,1}Nl1(v)=nvQvQij=|Aij|

Giả sử Q cũng xác định dương là A, bài toán được giảm để giải bài toán tối ưu bậc hai bị ràng buộc:

v=min vQv s.t. l1(v)=n, vi{0,1}

Điều này gợi ý sự thư giãn

v=min vQv s.t. l1(v)=n, vi[0,1]

có thể dễ dàng giải quyết bằng cách sử dụng các bộ giải có sẵn; thì kết quả được cho bởi thành phần lớn nhất trong .nv

Mã MATLAB mẫu:

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)

Bạn có phiên bản Python nào của tập lệnh này không?
Casimir

2

Điều này có thể tồi tệ hơn ý tưởng phân cụm phân cấp của @ ttnphns. Nhưng: Tôi vừa xảy ra trên một tờ giấy sử dụng như là một hàm mục tiêu mô đun con tăng dần:logdet(I+A)

Vanchinathan, Marfurt, Robelin, Kossman và Krause. Khám phá các mặt hàng có giá trị từ dữ liệu lớn . KDD 2015. ( doi , arXiv )

Nếu bạn nghĩ rằng đó là một biện pháp hợp lý của "ít tương quan nhất", bạn có thể đạt được trong hệ của tập hợp tối ưu bằng cách đơn giản lặp lại chọn điểm tối đa hóa điều đó. Điều này có thể được thực hiện một cách hiệu quả với phân tách LU khối , trong đó là vectơ tương quan với các mục đã có trong ma trận:11/evv

det[I+AvvT2]=det([I0vT(I+A)11][I+A002vT(I+A)1v][I(I+A)1v01])=det[I0vT(I+A)11]det[I+A002vT(I+A)1v]det[I(I+A)1v01]=(2vT(I+A)1v)det(I+A)

và tất nhiên bạn nên tính , trong đó là hệ số nhân của Cholesky của và sử dụng bộ giải tam giác đó là . Vì vậy, toàn bộ quá trình này sẽ mất thời gian để chọn trong số các phần tử , giả sử ma trận tương quan đã được tính toán .vT(I+A)1v=L1v2LI+AO(n2)O(k=1nNk2+k3)=O(Nn3)nN


Có vẻ như liên kết đến bài báo đã chết. Bạn có một trích dẫn tiện dụng?
Sycorax nói Phục hồi lại

@Sycorax Nó có sẵn trên Wayback Machine , nhưng tôi không thể tìm thấy một bản sao hiện tại trên web. Có vẻ như bài báo hội thảo đã được biến thành một bài hội thảo , mà tôi đang thêm vào câu trả lời.
Dougal

1

Tôi không chắc chắn hiểu ý của bạn bằng cách "Tôi chỉ quan tâm đến mối tương quan theo cặp" , nhưng đây là một cái gì đó có thể giúp: sử dụng đảo ngược ma trận tương quan của bạn. Thuật ngữ bằng với , trong đó là ma trận x được xây dựng từ trong đó cột thứ và dòng đã bị xóa.Aii1det(A0i)/det(A)A0i(n1)(n1)Ai

Lấy chỉ số của hệ số đường chéo tối thiểu trong do đó cho bạn biết điểm nào có tương quan thấp nhất với phần còn lại của tập hợp.A1

Tùy thuộc vào những gì bạn thực sự muốn làm, bạn có thể lấy 10 giá trị thấp nhất trên đường chéo của nghịch đảo hoặc lấy giá trị đầu tiên, sau đó tính toán nghịch đảo với điểm đã xóa, v.v.

Nếu đây không phải là những gì bạn cần, tôi cảm thấy thủ thuật này có thể vẫn hữu ích, nhưng tôi không chắc chắn làm thế nào.


0

Tìm của mục có tương quan cặp đôi ít nhất: Vì tương quan của câu giải thích về mối quan hệ giữa hai chuỗi, nên giảm thiểu tổng bình phương tương quan cho các mục tiêu của bạn . Đây là giải pháp đơn giản của tôi.kn0.60.36k

Viết lại ma trận tương quan của bạn thành ma trận bình phương tương quan. Tính tổng bình phương của mỗi cột. Loại bỏ cột và hàng tương ứng với tổng lớn nhất. Bây giờ bạn có ma trận . Lặp lại cho đến khi bạn có ma trận . Bạn cũng có thể chỉ giữ các cột và các hàng tương ứng với tổng nhỏ nhất. So sánh các phương thức, tôi thấy trong một ma trận với và chỉ có hai mục có tổng gần được giữ và loại bỏ khác nhau.( n - 1 ) × ( n - 1 ) k × k k n = 43 kn×n(n1)×(n1)k×kkn=43k=20


2
Điều này có thể hoạt động, nhưng nó có vẻ đặc biệt (nó đọc giống như một thuật toán tham lam) và bạn đã không đưa ra bất kỳ lý do toán học nào cho thấy nó nên hoạt động. Bạn có đảm bảo rằng nó sẽ hoạt động, hoặc bất kỳ giới hạn nào về cách nó sẽ đi đến giải pháp tốt nhất?
whuber

Tôi đã sử dụng chi nhánh Gurobi và ràng buộc để giải quyết phụ thuộc vào để tối ưu hóa cho ma trận tương quan và . Tôi đã nhận được một giá trị mục tiêu cuối cùng là 8,13. Để so sánh, phương pháp tham lam này đạt được 42,87 trong khi lựa chọn ngẫu nhiên có giá trị mục tiêu dự kiến ​​là 62,07. Vì vậy, không tuyệt vời nhưng cũng không vô dụng. Và phương pháp này chắc chắn có sự đơn giản và tốc độ dành cho nó! n i = 1 x i =k418×418k=20x=argminx{0,1}n(xTC x)i=1nxi=k418×418k=20
Casimir

Cũng có mối tương quan tích cực giữa các mục nhập của được đặt thành một bởi Gurobi và phương thức tham lam này. x
Casimir
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.