У меня есть корреляционная матрица , которую я получил, используя коэффициент линейной корреляции Пирсона через функцию Matlab corrcoef () . Корреляционная матрица размерности 100x100, т.е. я вычислил корреляционную матрицу на 100 случайных величин.
Среди этих 100 случайных величин я хотел бы найти 10 случайных величин, чья матрица корреляции содержит как можно меньшую «корреляцию» (см. Количественную оценку того, насколько «больше корреляции» содержит матрица корреляции A по сравнению с матрицей B корреляции для измерения метрик общая корреляция в корреляционной матрице). Я забочусь только о парной корреляции.
Существуют ли хорошие методы, чтобы найти эти 10 случайных величин за разумное время (например, я не хочу пробовать комбинации )? Алгоритмы аппроксимации в порядке.
источник
metrics to measure the overall correlation
, Вы думаете конкретно об определителе?Ответы:
Давайте рассмотрим сумму абсолютных парных корреляций в качестве нашей меры выбора. Таким образом, мы ищем вектор с l 1 ( v ) = n, который минимизирует v ′ Q v, где Q i j = | A i j | ,v ∈ { 0 , 1 }N L1( v ) = n v'Q v Qя ж= | я ж|
Предположим, что Q также положительно определен как A, задача сводится к решению ограниченной задачи квадратичной оптимизации:
Это предполагает следующее расслабление:
которая может быть легко решена с помощью готовых решателей; тогда результат дается наибольшими компонентами в v ∗ .n v∗
Пример кода Matlab:
источник
Это может быть хуже, чем идея иерархической кластеризации @ ttnphns. Но: я только что натолкнулся на статью, в которойжурналдет ( я+ А ) в качестве растущей субмодульной целевой функции:
Если вы считаете, что это разумная мера «наименее коррелированной», вы можете получить коэффициент1 - 1 / е оптимального набора, просто итеративно выбирая точку, которая максимизирует это. Это может быть эффективно выполнено с помощью блока разложения LU , где v - вектор корреляций с записями, уже находящимися в матрице:
и, конечно, вы должны вычислитьvT( Я+ А )- 1V = ∥ L- 1V ∥2 , гдеL - факторизация Холецкого дляя+ А и используя треугольный решатель, который равенO ( n2) . Так что весь этот процесс должен занятьO(∑nk=1Nk2+k3)=O(Nn3) время выбратьn изN элементов, предполагая, что корреляционная матрица уже вычислена.
источник
Я не совсем понимаю, что вы подразумеваете под «меня волнует только парная корреляция» , но вот что может помочь: используйте инверсию вашей корреляционной матрицы. - 1 я я член равен д е т (A−1ii dе т ( А0я) / де т ( А ) , где 0 я является ( п - 1 )A0я ( n - 1 ) х ( n - 1 ) матрица построена из A , где я столбец и строка были удалены.
Таким образом, получение индекса минимального диагонального коэффициента вA- 1 говорит вам, какая точка имеет наименьшую корреляцию с остальной частью набора.
В зависимости от того, что вы действительно хотите сделать, вы можете либо взять 10 самых низких значений по диагонали инвертирования, либо получить первое, затем вычислить инвертирование с удаленной точкой и так далее.
Если это не то, что вам нужно, я чувствую, что этот трюк может быть полезен, но я не уверен, как, хотя.
источник
Найдите из n элементов с наименьшей попарной корреляцией: поскольку, скажем, корреляция 0,6 объясняет 0,36 отношения между двумя рядами, имеет больше смысла минимизировать сумму квадратов корреляций для ваших целевых k элементов. Вот мое простое решение.К N 0.6 0,36 К
Перепишите свою матрицу корреляций в матрицу квадратов корреляций. Суммируйте квадраты каждого столбца. Удалите столбец и соответствующую строку с наибольшей суммой. Теперь у вас есть ( n - 1 ) × ( n - 1 ) матрица. Повторяйте, пока не получите матрицу k × k . Вы также можете просто сохранить столбцы и соответствующие строки с k наименьшими суммами. Сравнивая методы, я нашел в матрице с n = 43 и k = 20n × n ( n - 1 ) × ( n - 1 ) к × к К n = 43 к = 20 что только два предмета с близкими суммами были по-разному сохранены и исключены.
источник