Спектральная кластеризация аффинной матрицы

Я пытаюсь выполнить спектральную кластеризацию.

У меня есть собственные векторы симметричной матрицы сродства, и мне нужно найти formula(взято из статьи), где x' Mx — межкластерная оценка.

  1. Является ли x'Mx таким же, как вектор кластера, и поэтому argmax будет означать главный вектор собственных векторов (т.е. собственный вектор с наибольшим собственным значением)?
  2. Если да, то следует ли вычислять x* для каждого кластера? (Потому что как один вектор может описать все кластеры..)

В коде (с использованием библиотеки OpenCV)

    //a symmetric affinity matrix calculated prior
    CvScalar scal;
    CvMat* evec  = cvCreateMat(src->height,src->height,CV_32FC1); //eigenvectors
    CvMat* eval  = cvCreateMat(1,src->height,CV_32FC1);  //eigenvalues (1xN)
    cvZero(evec);
    cvZero(eval);
    cvEigenVV(&mat, evec, eval, 1);

    //result is eval->cols == mat.cols and eval->rows == mat.rows
    for( int j = 0; j < eval->cols; j++ )
    {
        /*access the obtained eigenvalues*/
        scal = cvGet2D( eval, 0, j );
        printf( "\n%f\n", scal.val[0]);

        for(int i=0;i < evec->rows;i++){   
            printf(" vector: %d: %f ", j, cvmGet(evec,j,i)); //Fetching each component of Eigenvector i    
        }
        printf("\n");
    }

person Boris Mocialov    schedule 29.06.2015    source источник


Ответы (1)


Возможный ответ (объяснено в документе "Эффективное отслеживание объектов для распознавания сцен с использованием угловых и масштабных ограничений")

введите здесь описание изображениявведите здесь описание изображения

Итак, это означает, что

1) x * = собственный вектор с наибольшим собственным значением

2) главный собственный вектор может описывать разные кластеры. Если построить значения основного собственного вектора, вариации на графике будут указывать на разные кластеры данных.

person Boris Mocialov    schedule 29.06.2015