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


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 тут ). Це, на жаль, не збільшується, що означає, що класичний жадібний результат наближення 1−1/e не застосовується, але все ще відчувається, що це може бути якось корисним ....
— Dougal,

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

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

Відповіді:


3

Розглянемо суму абсолютних парних кореляцій як нашу міру вибору. Таким чином, ми шукаємо вектор з що мінімізує де.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)

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

2

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

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

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

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

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


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

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

1

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

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

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

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


0

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

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


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

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

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