Estoy utilizando el Smile MDS
https://github.com/haifengl/smile/blob/master/core/src/main/java/smile/mds/MDS.java y de vez en cuando nos topamos con:
Caused by: java.lang.IllegalArgumentException:
Some of the first 2 eigenvalues are < 0
Los datos que se envían son una matriz de distancia simétrica cuadrada. No he puesto ninguna restricción a los valores de la matriz de distancia excepto que deben ser no negativos - que, de hecho, están todos entre 0 y 1, ambos inclusive.
Así que dos preguntas:
- ¿en qué condiciones una matriz de este tipo (no negativa) puede dar lugar a valores propios negativos?
- ¿Cómo puedo condicionar la matriz de similitudes de entrada para evitar los valores negativos?
- (crédito extra): ¿hay otras bibliotecas JVM que puedan ayudar a tratar el conjunto de datos existente (arbitrario no negativo) tal como está?