2

I should do multidimensional scaling with "mdscale" function in matlab on the famous Fisher Iris dataset.

I don't get why sometimes it works and sometimes not. This is what I do:

clear all;
load('fisheriris'); %it return a dataset in the variable "meas"

distM = pdist(meas);  %creating the distance matrix of the dataset
newPoints = mdscale(distM, 2, 'criterion', 'stress')    

The error is:

Points in the configuration have co-located. Try a different starting point, or use a different criterion.

If I use another criterion like "sstress" or "metricsstress" it seems to work.

How can it be explained?

Ewybe
  • 395
  • 2
  • 4
  • 15

1 Answers1

0

It depends on the implementation.

An implementation based on matrix inversion should be deterministic, but scales O(n^3) with the size of your data; which is affordable on iris data.

An implementation based on probabilistically finding the Eigenvectors of the matrix (which scales O(n^2) IIRC) is initialized randomly, and will thus yield different results each time.

But are you sure that this is an error, and not just a warning?

The iris data set is particularly prone to such problems, because it has a low resolution. Values were only measured with a resolution of 0.1, so you have very few different values.

Has QUIT--Anony-Mousse
  • 76,138
  • 12
  • 138
  • 194