После некоторого поиска я обнаружил, что очень мало учитываю веса наблюдений / погрешности измерений в анализе основных компонентов. То, что я нахожу, имеет тенденцию полагаться на итеративные подходы для включения весов (например, здесь ). Мой вопрос: зачем нужен этот подход? Почему мы не можем использовать собственные векторы взвешенной ковариационной матрицы?
pca
measurement-error
weighted-data
без имени
источник
источник
Ответы:
Это зависит от того, к чему именно относятся ваши веса.
Весовые характеристики
Пусть - матрица данных с переменными в столбцах и наблюдений в строках. Если каждое наблюдение имеет ассоциированный вес , то действительно просто включить эти веса в PCA.X n xi wi
Во-первых, нужно вычислить взвешенное среднее значение и вычесть его из данных, чтобы отцентрировать их.μ=1∑wi∑wixi
Затем мы вычисляем взвешенную ковариационную матрицу1∑wiX⊤WX , где W=diag(wi) - это диагональная матрица весов, и применять стандартный PCA для его анализа.
Вес клеток
В работе Tamuz et al., 2013 , которую вы обнаружили, рассматривается более сложный случай, когда различные веса применяются к каждому элементу матрицы данных. Тогда действительно нет аналитического решения, и нужно использовать итерационный метод. Обратите внимание, что, как признают авторы, они заново изобрели колесо, так как такие общие веса, безусловно, рассматривались ранее, например, в работе Габриэля и Замира, 1979, Приближение нижних рангов матриц наименьшими квадратами с любым выбором весов . Это также обсуждалось здесь .wij
В качестве дополнительного замечания: если веса меняются в зависимости от переменных и наблюдений, но симметричны, так что , то аналитическое решение снова возможно, см. Koren and Carmel, 2004, Robust Уменьшение линейной размерности .wij wij=wji
источник
Спасибо большое амеба за понимание весов рядов. Я знаю, что это не стекопоток, но у меня возникли некоторые трудности с поиском реализации взвешенного по строкам PCA с пояснениями, и, поскольку это один из первых результатов поиска в гугле для взвешенного PCA, я подумал, что было бы неплохо приложить свое решение , может быть, это может помочь другим в такой же ситуации. В этом фрагменте кода Python2 PCA, взвешенный с ядром RBF, как описано выше, используется для вычисления касательных 2D-набора данных. Я буду очень рад услышать некоторые отзывы!
И пример вывода (он делает то же самое для каждой точки):
Ура,
Андрес
источник