Я работаю над некоторыми методами кластеризации, где для данного кластера векторов d-размерности я предполагаю многомерное нормальное распределение и вычисляю выборочный средний вектор d-размерности и выборочную ковариационную матрицу.
Затем, пытаясь решить, принадлежит ли новый, невидимый, d-мерный вектор этому кластеру, я проверяю его расстояние с помощью этой меры:
Что требует от меня, чтобы вычислить обратную матрицу ковариации . Но учитывая некоторые примеры, я не могу гарантировать, что ковариационная матрица будет обратимой, что мне делать, если это не так?
Спасибо
Ответы:
Если размерность ваших выборок меньше размерности векторного пространства, могут возникнуть сингулярные матрицы. Если у вас меньше выборок, чем (когда - ваша размерность), такая ситуация даже обязательно возникнет: выборок охватывает не более мерной гиперплоскости. Учитывая такую небольшую выборку, вы, очевидно, не можете вычислить дисперсию в ортогональном пространстве.d+1 d k+1 d
Вот почему обычно не использовать буквальный PCA, а вместо этого выполнять разложение по сингулярным значениям , которое можно использовать для вычисления псевдообратной матрицы. Если матрица обратима, псевдообратная обратная будет.
Однако, если вы видите необратимые матрицы, есть вероятность, что ваше расстояние от кластера будет бессмысленным, если вектор находится за пределами гиперплоскости, которую повторяет кластер, потому что вы не знаете дисперсию в ортогональном пространстве (вы можете думать о эта дисперсия равна 0!) SVD может вычислить псевдообратное значение, но «дисперсии» все равно не будут определяться вашими данными.
В этом случае вам, вероятно, следовало сначала сделать глобальное уменьшение размерности. Увеличение размера выборки поможет только тогда, когда у вас действительно есть не избыточные измерения: независимо от того, сколько выборок вы берете из распределений с , матрица всегда будет необратимой, и вы не сможете судить об отклонении относительно стандартного отклонения (которое равно 0).y=x x−y
Кроме того, в зависимости от того, как вы вычисляете ковариационную матрицу, вы можете столкнуться с числовыми проблемами из-за катастрофической отмены. Самый простой обходной путь - сначала всегда центрировать данные, чтобы получить нулевое среднее.
источник