Определить "наибольший" сингулярный вектор матрицы U после СВД в Matlab
Известно, что в функции Matlab SVD выводятся три матрицы: [U,S,V] = svd(X). На самом деле, "U" - это квадратная матрица m X m, где m - количество строк / столбцов. Кроме того, 'S' - это неквадратная матрица с размерами m X n, в которой хранится n особых значений (полученных из левых единичных векторов матрицы U) в порядке убывания (по диагонали).
Мой вопрос заключается в том, как определить (в Matlab), какие "m" особые векторы матрицы "U" соответствуют первому (наибольшему) особому значению матрицы "S". Кроме того, некоторые значения конкретного сингулярного вектора положительны, а другие отрицательны. Этот знак минус или плюс скрывает какое-либо математическое значение? Я видел примеры, которые используют знак "наибольшего" единственного вектора, как для целей классификации.
2 ответа
- Чтобы быть абсолютно точным, по определению, значения SVD не обязательно переупорядочиваются, но MATLAB SVD переупорядочивает их.
I-й столбец U соответствует i-му особому значению M. А именно, для i-го особого значения sigma_j существуют такие j, что
M* .u_i = sigma_j v_j
у вас также есть
M. v_j = sigma_i u_i
Будьте осторожны, это может быть не то, что вы ищете.
- Координаты ваших особых значений являются координатами в исходном базисе. Положительные значения означают, что ваша новая переменная положительно пропорциональна соответствующей исходной переменной. В статистике это обычно используется, когда вы знаете, что как исходные, так и преобразованные переменные увеличиваются или уменьшаются вместе.
Диагональ S-матрицы содержит сингулярные значения. Таким образом, для i-го сингулярного значения (в позиции i,i на S-матрице) i-й столбец векторов U и V соответственно для двух уравнений ограничения.
Я не думаю, что +/- скрывает какое-либо особое значение. В конце концов, вы можете умножить матрицы U и V на константу -1, и результат все равно будет действительным.