22 votos

k-means aplicación con la costumbre de distancia de la matriz de entrada

Puede que nadie me señale un k-medios de implementación (sería mejor si en matlab) que puede tomar la matriz de distancias en la entrada? El estándar de la implementación en matlab de las necesidades de la observación de la matriz de entrada y no es posible que la costumbre cambio de la medida de similitud.

Gracias.

16voto

Knut Eldhuset Puntos 864

Desde k-significa que debe ser capaz de encontrar el medio de los diferentes subconjuntos de los puntos que usted quiere clúster, en realidad no tiene sentido pedir una versión de k-significa que toma distancia de la matriz como de entrada.

Usted podría tratar de k-medoids lugar. Hay algunos matlab implementaciones disponibles.

11voto

Uri Puntos 111

Usted puede convertir la matriz de distancias en los datos brutos y los de entrada de estos a K-means clustering. Los pasos serían como sigue:

1) las Distancias entre sus puntos N debe ser euclídea al cuadrado. Realizar "doble centrado" de la matriz: se Restan de la fila media de cada elemento; en el resultado, reste la columna media de cada elemento; en el resultado, agregar la matriz significa que a cada elemento; se dividen por menos de 2. La matriz de la que tienen ahora es la SSCP (suma de cuadrados y productos cruzados) de la matriz entre sus puntos en donde el origen es poner en el centro geométrico de la nube de N puntos.

2) Realizar PCA (análisis de componentes Principales) de esa matriz y obtener NxN componente de la matriz de carga. Algunas de las últimas columnas de la que probablemente son todos 0, - para cortar. Lo que te quedas con el de ahora es realmente puntuaciones de los componentes principales, de las coordenadas de N puntos en componentes principales que pasan, como ejes, a través de la nube. Estos datos pueden ser tratados como datos en bruto apto para K-Medios de entrada.

P. S. Si tu distancias no son correcta geometría euclídea al cuadrado puede encontrarse con un problema: el SSCP de la matriz no puede ser positivo (semi)definitiva. Este problema puede ser superado en varias maneras, pero con pérdida de precisión.

3voto

jaredor Puntos 1255

Por favor, consulte este artículo, escrito por uno de mis conocidos ;)

http://arxiv.org/abs/1304.6899

Se trata de una generalizada k-medios de ejecución, la cual toma una distancia arbitraria de la matriz como de entrada. Puede ser cualquier simétrica matriz no negativa con un cero en la diagonal. Tenga en cuenta que puede no dar resultados razonables para el extraño distancia de las matrices. El programa está escrito en C#.

El código fuente se puede obtener visitando el enlace de arriba, a continuación, haga clic en Otros Formatos, a continuación, hacer clic en Descargar Fuente. A continuación, aparecerá una .tar.gz que contiene el Programa.cs. Como alternativa, el código fuente puede ser copiado desde el PDF también.

3voto

Dave Vogt Puntos 3861

Usted puede usar Java en la Máquina de Aprendizaje de la Biblioteca. Tienen un K-Medios de implementación. Uno de los constructores acepta tres argumentos

  1. Valor De K.
  2. Un objeto que es una instancia de la DistanceMeasure Clase.
  3. Número de iteraciones.

Uno puede fácilmente extender el DistanceMeasure de la clase para lograr el resultado deseado. La idea es volver a los valores de una costumbre matriz de distancias en la medida(por Ejemplo x, Ejemplo y) método de esta clase.

K-means es guarnateed a converger asumir ciertas propiedades de la distancia métrica. La distancia euclídea, Manhattan, la distancia u otras métricas estándar de satisfacer estas suposiciones. Desde una costumbre distancia métrica no puede satisfacer estas suposiciones, el constructor tiene un tercer parámetro que especifica el número de iteraciones a ejecutar para la construcción de la clusterer.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X