Найменш корельована підмножина випадкових змінних з кореляційної матриці


10

У мене є кореляційна матриця , яку я отримав, використовуючи коефіцієнт лінійної кореляції Пірсона через корркоф Матлаба () . Кореляційна матриця розмірності 100x100, тобто я обчислила кореляційну матрицю на 100 випадкових величин.A

Серед цих 100 випадкових змінних я хотів би знайти 10 випадкових змінних, чия кореляційна матриця містить якомога менше "кореляцій" (див. Кількісне визначення, скільки "більше кореляцій" містить кореляційна матриця A порівняно з кореляційною матрицею B щодо метрик для вимірювання загальна кореляція в кореляційній матриці). Мене хвилює лише парне співвідношення.

Чи є хороші методи знайти ці 10 випадкових змінних за розумну кількість часу (наприклад, я не хочу спробувати комбінації (10010) )? Алгоритми наближення в порядку.


1
metrics to measure the overall correlation. Ви конкретно думаєте про визначник?
ttnphns

1
Дуже схоже питання stats.stackexchange.com/q/73125/3277 .
ttnphns

1
Журнал-визначник є субмодулярной функцією (див стор.18 тут ). Це, на жаль, не збільшується, що означає, що класичний жадібний результат наближення 11/e не застосовується, але все ще відчувається, що це може бути якось корисним ....
Dougal,

1
Якщо ви хочете скористатися середнім значенням кореляції, це стає проблемою , пов'язаною з максимальною вагою кромки , яка, звичайно, є важкою для NP, але вона побачила деяку роботу над алгоритмами наближення.
Дугал

3
Що про ту просту ідею з кластерним аналізом. Візьмітьяк відстань (несхожість) і кластеризація за вибраним методом (я, мабуть, обрав би Уорд або середній ієрархічний зв'язок). Виберіть найбільш щільний кластер, що складається з 10 елементів. |r|
ttnphns

Відповіді:


3

Розглянемо суму абсолютних парних кореляцій як нашу міру вибору. Таким чином, ми шукаємо вектор з що мінімізує де.v{0,1}Nl1(v)=nvQvQij=|Aij|

Припустимо, Q також є позитивно визначеним, оскільки A проблема зводиться до вирішення обмеженої задачі квадратичної оптимізації:

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

Це наводить на розслаблення:

v=min vQv 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)

Чи є у вас випадково версія Python цього сценарію?
Казимир

2

Це може бути гірше, ніж ідея ієрархічної кластеризації @ ttnphns. Але: Я щойно трапився в папері, який використовує як підвищуючу субмодулярну цільову функцію:logdet(I+A)

Ванчінатан, Марфурт, Робелін, Коссман та Краузе. Виявлення цінних предметів із масивних даних . KDD 2015. ( doi , arXiv )

Якщо ви вважаєте, що це розумний показник "найменш співвіднесеного", ви можете потрапити в коефіцієнт оптимального набору, просто ітеративно вибираючи точку, яка це максимально збільшує. Це можна зробити ефективно за допомогою блочного розкладання LU , де - вектор кореляцій із записами, які вже є в матриці:11/ev

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)

і, звичайно, слід обчислити , де - факторизація Холеського і з використанням трикутного розв'язувача що є . Отже, весь цей процес повинен зайняти час для вибору з елементів, якщо припустити, що кореляційна матриця вже обчислена .vT(I+A)1v=L1v2LI+AO(n2)O(k=1nNk2+k3)=O(Nn3)nN


Схоже, посилання на папір мертва. Чи є у вас корисна цитата?
Sycorax каже, що поверніть Моніку

@Sycorax Це доступно на машині Wayback , але я не зміг знайти поточну копію в Інтернеті. Схоже, що семінарський документ було перетворено на конференцію , яку я додаю у відповідь.
Дугал

1

Я не впевнений, що повністю розумію, що ви маєте на увазі під "Мене дбає лише про попарну кореляцію" , але ось щось, що може допомогти: використовуйте інверсію вашої кореляційної матриці. Термін дорівнює , де - x побудована з звідки видалено -й стовпчик та рядок.Aii1det(A0i)/det(A)A0i(n1)(n1)Ai

Отримання показника мінімального коефіцієнта діагоналі в таким чином, говорить вам, яка точка має найнижчу кореляцію до залишку множини.A1

Залежно від того, що ви насправді хочете зробити, ви можете або взяти 10 найнижчих значень по діагоналі інвертування, або отримати перше, потім обчислити обертання з видаленою точкою тощо.

Якщо це не те, що вам потрібно, я вважаю, що цей трюк все-таки може бути корисним, але я не впевнений, яким чином.


0

Знайдіть з предметів з найменшим попарним співвідношенням: Оскільки кореляція припущення пояснює співвідношення між двома рядами, має більше сенсу мінімізувати суму квадратів кореляцій для ваших цільових елементів. Ось моє просте рішення.kn0.60.36k

Перепишіть свою матрицю кореляцій у відповідність до матриці квадратів кореляцій. Підсумовуйте квадрати кожного стовпця. Усуньте стовпчик і відповідний рядок з найбільшою сумою. Тепер у вас є матриця . Повторюйте, поки у вас не буде матриці . Ви також можете просто зберегти стовпці та відповідні рядки з найменшими сумами. Порівнюючи методи, я виявив, що в матриці з та лише два пункти з близькими сумами по-різному зберігаються та усуваються.n×n(n1)×(n1)k×kkn=43k=20


2
Це може спрацювати, але це звучить спеціально (він читається як жадібний алгоритм), і ви не запропонували жодних математичних причин, які б припустили, що це має працювати. Чи є у вас впевненість, що це спрацює, або якісь межі щодо того, наскільки близько він підходить до найкращого рішення?
whuber

Я використав гілку Гуробі і зобов'язаний вирішити умови до оптимальності для кореляційної матриці і . Я отримав остаточне об'єктивне значення 8,13. Для порівняння, цей жадібний метод досяг 42,87, тоді як випадковий вибір мав очікуване об'єктивне значення 62,07. Тож не те що велике, але й не марне. І цей метод, безумовно, має простоту і швидкість! x=argminx{0,1}n(xTC x)i=1nxi=k418×418k=20
Казимир

Існувала також позитивна кореляція між тим, які записи були встановлені однією Ґуробі, і цим жадібним методом. x
Казимир
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.