Это не ошибка.
Как мы подробно рассмотрели в комментариях, происходит две вещи. Во-первых, столбцы ограничены для соответствия требованиям SVD: каждый должен иметь длину блока и быть ортогональным по отношению ко всем остальным. Просмотр как случайная величина , созданная из случайной матрицы через конкретный алгоритм SVD, мы тем самым отметить , что это функционально независимым ограничения создают статистические зависимости между столбцами .UUXk(k+1)/2U
Эти зависимости могут быть выявлены в большей или меньшей степени путем изучения корреляций между компонентами , но возникает второе явление : решение SVD не является уникальным. Как минимум, каждый столбец можно независимо отрицать, давая как минимум различных решений с столбцами. Сильные корреляции (превышающие ) могут быть вызваны соответствующим изменением знаков столбцов. (Один из способов сделать это дан в моем первом комментарии к ответу Амебы в этой теме: я принудительно заставляю всеUU 2 к к +1 / 2 у я я , я = 1 , ... , KU2kk1/2uii,i=1,…,kиметь один и тот же знак, что делает их всех отрицательными или положительными с одинаковой вероятностью.) С другой стороны, все корреляции можно сделать равными нулю, выбрав знаки случайным образом, независимо с равными вероятностями. (Я приведу пример ниже в разделе «Редактировать».)
С осторожностью, мы можем частично различить оба эти явления при чтении диаграммы рассеивания матрицы компонентов . Определенные характеристики - такие как появление точек, почти равномерно распределенных в четко определенных круглых областях, - свидетельствуют об отсутствии независимости. Другие, такие как диаграммы рассеяния, показывающие четкие ненулевые корреляции, очевидно, зависят от выбора, сделанного в алгоритме - но такие выборы возможны только из-за отсутствия независимости в первую очередь.U
Окончательный тест алгоритма декомпозиции, такого как SVD (или Cholesky, LR, LU и т. Д.), Заключается в том, выполняет ли он то, что заявляет. В этом случае достаточно проверить, что когда SVD возвращает тройку матриц , то восстанавливается с точностью до ожидаемой ошибки с плавающей запятой произведением ; что столбцы и ортонормированы; и что диагонально, его диагональные элементы неотрицательны и расположены в порядке убывания. Я применил такие тесты к алгоритму в(U,D,V)XUDV′UVDsvd
R
и никогда не находил это ошибочным. Хотя это и не является гарантией, что это совершенно правильно, такой опыт, который, как я полагаю, разделяют очень многие люди, предполагает, что любая ошибка потребует какого-то необычного вклада для проявления.
Далее следует более подробный анализ конкретных вопросов, затронутых в этом вопросе.
Используя R
«s svd
процедуры, сначала вы можете проверить , что в качестве увеличивается, корреляция между коэффициентами ослабевать, но они по - прежнему отличны от нуля. Если бы вы просто выполнили большую симуляцию, вы бы обнаружили, что они значительны. (Когда , должно быть достаточно 50000 итераций.) Вопреки утверждению в вопросе, корреляции не «полностью исчезают».kUk = 3к = 3
Во-вторых, лучший способ изучить это явление - вернуться к основному вопросу независимости коэффициентов. Хотя корреляции, как правило, близки к нулю в большинстве случаев, отсутствие независимости ясно видно. Это стало наиболее очевидным при изучении полного многомерного распределения коэффициентов . Характер распределения проявляется даже в небольших моделях, в которых ненулевые корреляции не могут (пока) быть обнаружены. Например, рассмотрим матрицу рассеяния для коэффициентов. Чтобы сделать это практически возможным, я установил размер каждого моделируемого набора данных равным и сохранил , тем самым нарисовав реализацийU4к = 210004 × 2 матрицы , создав матрицу . Вот его полная матрица рассеяния с переменными, перечисленными по их позициям в :U1000 × 8U
Сканирование вниз по первому столбцу показывает интересное отсутствие независимости между и другим : посмотрите, например, как верхний квадрант диаграммы рассеяния с почти свободен; или исследуйте эллиптическое наклонное вверх облако, описывающее соотношение и наклонное облако вниз для пары . При внимательном рассмотрении обнаруживается явное отсутствие независимости почти всех этих коэффициентов: очень немногие из них выглядят дистанционно независимыми, хотя большинство из них демонстрируют почти нулевую корреляцию.U11Uя жU21( ты11, у22)( ты21, у12)
(Примечание: большинство круговых облаков являются проекциями из гиперсферы, созданной условием нормализации, в результате чего сумма квадратов всех компонентов каждого столбца равна единице.)
Матрицы диаграммы рассеяния с и демонстрируют сходные закономерности: эти явления не ограничиваются и не зависят от размера каждого моделируемого набора данных: их просто сложнее генерировать и исследовать.к = 3к = 4к = 2
Объяснения для этих шаблонов идут к алгоритму, используемому для получения в разложении по сингулярному значению, но мы знаем, что такие шаблоны несамостоятельности должны существовать с помощью определяющих свойств : поскольку каждый последующий столбец (геометрически) ортогонален предыдущему Кроме того, эти условия ортогональности налагают функциональные зависимости между коэффициентами, которые тем самым переводят в статистические зависимости среди соответствующих случайных величин.UUU
редактировать
В ответ на комментарии, возможно, стоит отметить степень, в которой эти явления зависимости отражают лежащий в основе алгоритм (для вычисления SVD) и насколько они присущи природе процесса.
В конкретных моделях корреляций между коэффициентами зависят много от произвольных выборов , сделанных с помощью алгоритма SVD, потому что решение не является уникальным: столбцы всегда могут быть независимы умноженные на или . Не существует внутреннего способа выбрать знак. Таким образом, когда два алгоритма SVD делают разные (произвольные или, возможно, даже случайные) варианты выбора знака, они могут привести к различным шаблонам диаграмм рассеяния значений . Если вы хотите увидеть это, замените функцию в коде ниже наU- 11( тыя ж, уя'J')stat
stat <- function(x) {
i <- sample.int(dim(x)[1]) # Make a random permutation of the rows of x
u <- svd(x[i, ])$u # Perform SVD
as.vector(u[order(i), ]) # Unpermute the rows of u
}
Это сначала случайным образом x
переупорядочивает наблюдения , выполняет SVD, затем применяет обратный порядок, u
чтобы соответствовать исходной последовательности наблюдения. Поскольку эффект состоит в формировании смеси отраженных и повернутых версий исходных диаграмм рассеяния, диаграммы рассеяния в матрице будут выглядеть намного более однородными. Все выборочные корреляции будут очень близки к нулю (по построению: лежащие в основе корреляции точно равны нулю). Тем не менее, отсутствие независимости все еще будет очевидным (в однородных круглых формах, которые появляются, особенно между и ).Uя , джUя , дж'
Отсутствие данных в некоторых квадрантах некоторых из исходных диаграмм рассеяния (показано на рисунке выше) возникает из-за того, как R
алгоритм SVD выбирает знаки для столбцов.
В выводах ничего не меняется. Поскольку второй столбец ортогонален первому, он (рассматриваемый как многомерная случайная величина) зависит от первого (также рассматриваемого как многомерная случайная величина). Вы не можете иметь все компоненты одного столбца независимыми от всех компонентов другого; все, что вы можете сделать, это посмотреть на данные таким образом, чтобы скрыть зависимости, но зависимость сохранится.U
Здесь обновлен R
код для обработки случаев и рисования части матрицы рассеяния.k > 2
k <- 2 # Number of variables
p <- 4 # Number of observations
n <- 1e3 # Number of iterations
stat <- function(x) as.vector(svd(x)$u)
Sigma <- diag(1, k, k); Mu <- rep(0, k)
set.seed(17)
sim <- t(replicate(n, stat(MASS::mvrnorm(p, Mu, Sigma))))
colnames(sim) <- as.vector(outer(1:p, 1:k, function(i,j) paste0(i,",",j)))
pairs(sim[, 1:min(11, p*k)], pch=".")