Najmniej skorelowany podzbiór zmiennych losowych z macierzy korelacji


10

Mam macierz korelacji , którą uzyskałem za pomocą współczynnika korelacji liniowej Pearsona za pomocą corrcoef Matlaba () . Macierz korelacji o wymiarze 100x100, tj. Obliczyłem macierz korelacji na 100 zmiennych losowych.ZA

Spośród tych 100 zmiennych losowych chciałbym znaleźć 10 zmiennych losowych, których macierz korelacji zawiera możliwie „małą korelację” (patrz Obliczanie, ile „więcej korelacji” zawiera matryca korelacji A w porównaniu do macierzy korelacji B w odniesieniu do metryk do pomiaru ogólna korelacja w macierzy korelacji). Dbam tylko o korelację par.

Czy istnieją dobre metody znalezienia tych 10 zmiennych losowych w rozsądnym czasie (np. Nie chcę próbować )? Algorytmy aproksymacyjne są OK.(10010)


1
metrics to measure the overall correlation. Myślisz konkretnie o wyznaczniku?
ttnphns

1
Bardzo podobne pytanie stats.stackexchange.com/q/73125/3277 .
ttnphns

1
Wyznacznik logarytmiczny jest funkcją podmodularną (patrz strona 18 tutaj ). Niestety nie rośnie, co oznacza, że ​​klasyczny 11/e chciwego przybliżenia 1-1 / e nie ma zastosowania, ale nadal wydaje się, że może to być jakoś pomocne ...
Dougal

1
Jeśli zamiast tego chcesz użyć średniej wartości korelacji, staje się to problemem kliki maksymalnego obciążenia krawędzi , co jest oczywiście trudne dla NP, ale widziałem pewne prace nad algorytmami aproksymacji.
Dougal

3
Co z tym prostym pomysłem z analizą skupień. Weźjako odległość (odmienność) i grupowanie za pomocą wybranej metody (prawdopodobnie wybrałbym Totem lub średnią hierarchiczną łączność). Wybierz najbardziej ciasny klaster składający się z 10 elementów. |r|
ttnphns

Odpowiedzi:


3

Rozważmy sumę bezwzględnych korelacji par jako naszą miarę wyboru. Szukamy zatem wektora przy który zminimalizuje gdzie.v{0,1}N.l1(v)=nvQvQjajot=|ZAjajot|

Załóżmy, że Q jest również pozytywnie określone jako A, problem sprowadza się do rozwiązania ograniczonego kwadratowego problemu optymalizacji:

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

To sugeruje następujący relaks:

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

które można łatwo rozwiązać za pomocą gotowych rozwiązań; wynik jest podawany przez największe składników w .nv

Przykładowy kod 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)

Czy masz przypadkową wersję tego skryptu w języku Python?
Casimir

2

Może to być gorsze niż hierarchiczna idea klastrowania @ ttnphns. Ale: Właśnie natrafiłem na artykuł, który używa jako rosnącej funkcji celu podmodularnego:logdet(ja+ZA)

Vanchinathan, Marfurt, Robelin, Kossman i Krause. Odkrywanie cennych przedmiotów z ogromnych danych . KDD 2015. ( doi , arXiv )

Jeśli uważasz, że jest to rozsądna miara „najmniej skorelowanej”, możesz uzyskać współczynnik optymalnego zestawu, po prostu iteracyjnie wybierając punkt, który ją maksymalizuje. Można to skutecznie zrobić z dekompozycją bloku LU , gdzie jest wektorem korelacji z wpisami już w macierzy:1-1/miv

det[ja+ZAvvT.2)]=det([ja0vT.(ja+ZA)-11][ja+ZA002)-vT.(ja+ZA)-1v][ja(ja+ZA)-1v01])=det[ja0vT.(ja+ZA)-11]det[ja+ZA002)-vT.(ja+ZA)-1v]det[ja(ja+ZA)-1v01]=(2)-vT.(ja+ZA)-1v)det(ja+ZA)

i oczywiście powinieneś obliczyć , gdzie jest Choleskiego na i za pomocą solwera trójkątnego czyli . Cały ten proces powinien więc zająć aby wybrać spośród elementów, zakładając, że macierz korelacji jest już obliczona .vT.(ja+ZA)-1v=L.-1v2)L.ja+ZAO(n2))O(k=1nN.k2)+k3))=O(N.n3))nN.


Wygląda na to, że link do papieru jest martwy. Czy masz pod ręką cytat?
Sycorax mówi Przywróć Monikę

@Sycorax Jest dostępny na Wayback Machine , ale nie mogłem znaleźć aktualnej kopii w Internecie. Wygląda na to, że ten dokument warsztatowy został przekształcony w artykuł konferencyjny , który dodaję do odpowiedzi.
Dougal

1

Nie jestem do końca pewien, co rozumiesz przez „dbam tylko o korelację par” , ale oto coś, co może pomóc: użyj odwrócenia macierzy korelacji. Termin wynosi , w którym jest x matryca zbudowana z gdzie kolumna i wiersz zostały usunięte.Aii1det(A0i)/det(A)A0i(n1)(n1)Ai

Uzyskanie indeksu minimalnego współczynnika przekątnej w mówi zatem, który punkt ma najniższą korelację z resztą zbioru.A1

W zależności od tego, co faktycznie chcesz zrobić, możesz wziąć 10 najniższych wartości na przekątnej inwertora lub uzyskać pierwszą, a następnie obliczyć inwertę z usuniętym punktem i tak dalej.

Jeśli nie jest to potrzebne, czuję, że ta sztuczka może być nadal pomocna, ale nie jestem pewien, jak to zrobić.


0

Znajdź z elementów z najmniejszej korelacji parami: Ponieważ korelacja Say wyjaśnia relacji między dwoma serii większy sens, aby zminimalizować sumę kwadratów korelacji dla docelowego przedmiotów. Oto moje proste rozwiązanie.kn0,60,36k

Przepisz swoją macierz korelacji do macierzy kwadratów korelacji. Zsumuj kwadraty każdej kolumny. Wyeliminuj kolumnę i odpowiadający jej wiersz o największej sumie. Masz teraz macierz . Powtarzaj, aż uzyskasz macierz . Możesz także zachować kolumny i odpowiadające im wiersze z najmniejszymi sumami. Porównując metody, znalazłem w macierzy i że tylko dwa elementy o bliskich sumach były różnie przechowywane i eliminowane.n×n(n-1)×(n-1)k×kkn=43k=20


2
Może to działać, ale brzmi ad hoc (brzmi jak zachłanny algorytm) i nie podałeś żadnych matematycznych powodów, które sugerowałyby, że powinien działać. Czy masz gwarancję, że zadziała, czy masz jakiekolwiek granice zbliżenia do najlepszego rozwiązania?
whuber

Kiedyś gałąź Gurobi i związany rozwiązać zastrzeżeniem do optymalności dla macierzy korelacji i . Mam ostateczną wartość celu 8,13. Dla porównania ta chciwa metoda osiągnęła 42,87, podczas gdy losowa selekcja miała oczekiwaną wartość obiektywną 62,07. Więc nie tak świetnie, ale też nie bezużytecznie. I ta metoda z pewnością idzie w parze z prostotą i szybkością! x=argminx{0,1}n(xT.do x)ja=1nxja=k418×418k=20
Casimir

Istniała również dodatnia korelacja między tym, które wpisy zostały ustawione na jeden przez Gurobi, a tą chciwą metodą. x
Casimir
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.