I have a small problem regarding feature extraction with correlation. I have divided my question in four parts hoping that somebody can help me.
I have a dataset consisting of fMRI images. Each image is 4D (time series), i.e. x-y-z-t where t is the time. Each image belongs to one class. The dataset is as follows:
Class 1: 9 images Class 2: 10 images Class 3: 6 images Class 4: 12 images
Now I want to extract features from the images based on correlations between voxels. Each voxel has a single value but due to the temporal domain a voxel can be viewed as a vector. For example a voxel is e.g. the vector [v1,v2,v3,....,vn] where each element corresponds to the value of the voxel at one timepoint. If I compute now the correlation between the first and second voxel in an image I just compute the correlation between the corresponding vectors.
I want now to compute the correlations between all voxels in the image, i.e. voxel1 and voxel2, voxel1 and voxel3 etc. Then I will take each correlation value as a feature. Of course I will not compute the correlation between voxel2 and voxel1 because this is the same as the correlation between voxel 1 and voxel 2. This I will do for all images, i.e. from every image I get a data point. Then I will apply PCA to reduce the dimensionality.
Is this reasonable?
Should I use cross-correlation (in Matlab xcorr) or correlation (in Matlab corrcoef)?
- And how can I compute efficiently this correlations?
Last but not least, I have found the following paper (Principal Feature Analysis: A Multivariate Feature Selection Method for fMRI Data): http://www.hindawi.com/journals/cmmm/2013/645921/
In this paper they first applied PCA and then did a clustering (k-means), see section 2.6.2 of paper. They just keep only the vector closest to each cluster and finally the feature corresponding to this vectors are selected as informative features. In the paper they used the approach for voxels and not correlations.
Can I use it also for my correlation based approach, i.e. after applying PCA also applying clustering?
By the way, in this paper they used k-means. Would Ward's hierarchical clustering algorithm also be reasonable? Moreover, they used cosine distance in k-means. Why not using Euclidean distance?
- If I do the feature extraction based on voxels and not correlations, should I then just take each volume in the time series as a single data point or should I average the values in the time series for each voxel?