I'm using Isomap to reduce some 24 dimensional datasets into 2 or 3 dimensional datasets. With the first set I tried (6000 samples) I had no problems and the result was very similar to what I had obtained for comparison with the isomap algorithm from a matlab toolbox, i.e. a sphere-like object.
However, when I tried a second set (2400 samples, which gave a similar sphere-like structure using matlab), the program complained about the neighbor graph not being connected. Upon including the "-tolerant" option, however, the result was something completely different than expected: the plot shows a single line segment. I then checked the reduced data and found that one of the two output columns was just the zero vector.
I tried again varying the neighbor number (between 5 and 40) and , but I had similar results: a line segment. Note here that the matlab toolbox also drops some points (it uses the largest connected component in the neighbor graph), and that waffles' isomap dropped as few as 100 points whith high neighbor numbers, but still there was no trace of the sphere-like structure.
The question then is: Is this a problem with the "-tolerant" option? This may be the case as isomap worked perfectly fine with the first dataset.
Thank you,
david
.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The -tolerant option is not specified in Tenenbaum's paper. I just added it as a hack to try to make Isomap more robust. As I look at this code again, I think I see the problem. My code removes the point with the fewest neighbors, until the graph is fully connected. This will correctly destroy connected components with fewer than k points, but it will be arbitrary with connected components that contain more than k points.
I will add this to my list of things to do, but unfortunately, it will probably take me a long time to get to it. If you want to tinker with it, the relevant code is in the GIsomap class in waffles/src/GClasses/GManifold.cpp and the GFloydWarshall class in waffles/src/GClasses/GGraph.cpp.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2013-03-22
I cannot figure out why SourceForge e-mails always show the second paragraph in huge bold font.
This is a test.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2013-03-25
Thank you for your help, I'm glad to contribute.
david
.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
That would be great! If you send me an e-mail with a SourceForge username, I can give you access to submit changes to our Git repository. (My e-mail address is on http://waffles.sf.net)
Mike
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello!
I'm using Isomap to reduce some 24 dimensional datasets into 2 or 3 dimensional datasets. With the first set I tried (6000 samples) I had no problems and the result was very similar to what I had obtained for comparison with the isomap algorithm from a matlab toolbox, i.e. a sphere-like object.
However, when I tried a second set (2400 samples, which gave a similar sphere-like structure using matlab), the program complained about the neighbor graph not being connected. Upon including the "-tolerant" option, however, the result was something completely different than expected: the plot shows a single line segment. I then checked the reduced data and found that one of the two output columns was just the zero vector.
I tried again varying the neighbor number (between 5 and 40) and , but I had similar results: a line segment. Note here that the matlab toolbox also drops some points (it uses the largest connected component in the neighbor graph), and that waffles' isomap dropped as few as 100 points whith high neighbor numbers, but still there was no trace of the sphere-like structure.
The question then is: Is this a problem with the "-tolerant" option? This may be the case as isomap worked perfectly fine with the first dataset.
Thank you,
david
.
The -tolerant option is not specified in Tenenbaum's paper. I just added it as a hack to try to make Isomap more robust. As I look at this code again, I think I see the problem. My code removes the point with the fewest neighbors, until the graph is fully connected. This will correctly destroy connected components with fewer than k points, but it will be arbitrary with connected components that contain more than k points.
I will add this to my list of things to do, but unfortunately, it will probably take me a long time to get to it. If you want to tinker with it, the relevant code is in the GIsomap class in waffles/src/GClasses/GManifold.cpp and the GFloydWarshall class in waffles/src/GClasses/GGraph.cpp.
I cannot figure out why SourceForge e-mails always show the second paragraph in huge bold font.
This is a test.
Thank you for your help, I'm glad to contribute.
david
.
That would be great! If you send me an e-mail with a SourceForge username, I can give you access to submit changes to our Git repository. (My e-mail address is on http://waffles.sf.net)
Mike