pmedian-informe

Upload: charlygarcia

Post on 06-Mar-2016

212 views

Category:

Documents


0 download

DESCRIPTION

pmediana

TRANSCRIPT

Trabajo Prctico: Limpieza de Datos

ANALISIS INTELIGENTE

DE DATOSTRABAJO FINALIMPLEMENTACION MTODO

CLUSTER EN WEKA: P-MEDIAN

Profesores: Dra. Ana Haedo

Daniel Vzquez V.Alumno: Jorge Beyoglonian

Diciembre 2008

ndice

3Resumen

3Introduccin

5Implementacin

5Algoritmo P-Median

6Integracin con Weka

6Registracin del nuevo algoritmo

10Detalles de integracin

10Estandarizacin de variables

11P-Median paso a paso

15Ejemplos

18Problemas con muchas instancias

18Ideas para futuras investigaciones

19Conclusiones

19Detalles de Instalacin

19Disponibilidad pblica

20Bibliografa y referencias

ResumenEl presente trabajo consiste en la presentacin del mtodo de agrupamiento P-Median, su comparacin con el algoritmo K-Means, y el desarrollo de una implementacin a travs de la cual se pueda realizar comparaciones de los resultados, y analizar las mtricas del consumo de recursos empleado por cada mtodo de agrupamiento.La implementacin del algoritmo ser realizada como un mdulo adicional del sistema Weka, incorporando a este informe todos los detalles de su implementacin y los pasos a seguir para poder emplear de forma libre el mdulo desarrollado.

IntroduccinEl anlisis cluster, tambin conocido como anlisis de conglomerados, es una tcnica estadstica multivariante cuya finalidad es formar grupos a partir de un conjunto de elementos de tal forma que estos grupos estn formados por elementos los ms parecidos que sea posible (homogneos) y a su vez lo ms diferentes (heterogneos) que sea posible entre los grupos. Los elementos en cada grupo (conglomerado) tienden a ser similares entre s (alta homogeneidad interna, dentro del cluster) y diferentes a los objetos de los otros grupos (alta heterogeneidad externa, entre clusters) con respecto a algn criterio de seleccin predeterminado. El anlisis de cluster se utiliza en marketing para diversos propsitos, entre los que podemos destacar: segmentacin del mercado, comprensin del comportamiento del comprador, identificacin de oportunidades para productos nuevos, seleccin de mercados de prueba, reduccin de datos, etc.El objetivo del anlisis de cluster es la de agrupar a los individuos por su grado de homogeneidad. Existen distintas clasificaciones de este tipo de modelos, siendo la ms usada los modelos jerrquicos frente a los no jerrquicos.El anlisis cluster jerrquico es una herramienta exploratoria diseada para revelar las agrupaciones naturales (o los conglomerados o clusters) dentro de un conjunto de datos que no sera de otra manera evidente. Es el ms til cuando se desea agrupar un nmero pequeo (menos que algunos cientos) de objetos. Este mtodo comienza separando cada objeto en un cluster por s mismo. En cada etapa del anlisis, el criterio por el que los objetos son separados se relaja en orden a enlazar los dos conglomerados ms similares hasta que todos los objetos sean agrupados en un rbol de clasificacin completo.

El criterio bsico para cualquier agrupacin es la distancia. Los objetos que estn cerca uno del otro perteneceran al mismo conglomerado o cluster, y los objetos que estn lejos uno del otro pertenecern a distintos clusters. Los resultados de agrupamientos jerrquicos se muestran en un diagrama conocido como dendrograma, en el que se pueden observar las uniones y/o divisiones que se van realizando. Las ramas del rbol representan los conglomerados. Las ramas se unen en un nodo cuya ubicacin sobre el eje de distancias indica el nivel en el cual ocurre la fusin. El nodo en el que todas los objetos forman un solo conglomerado se llama nodo raz.

Figure 1. Ejemplo de un dendograma

El anlisis de cluster no jerrquico es especialmente indicado para grandes tablas de datos. El objetivo de este anlisis es realizar una sola particin de los elementos en K grupos.

El nmero de grupos puede ser especificado de antemano o ser determinado en el procedimiento. Estos mtodos pueden comenzar con un agrupamiento inicial o con un grupo de puntos semilla (centroides) que formarn los centros de los grupos.

El mtodo de tipo no jerrquico mas comnmente usado es el algoritmo K-means. Este separa un grupo de objetos en una cantidad elegida de grupos haciendo mxima la variacin entre conglomerados y minimizando la variacin dentro de cada conglomerado. Asigna cada objeto al grupo que tiene el centroide (media) ms cercano. La distancia comnmente usada es la Eucldea, tanto en observaciones estandarizadas como en las no estandarizadas. La particin lograda es aquella tal que la suma de la suma de las distancias al cuadrado de los miembros del grupo respecto a su centroide es mnima.

Dado que este algoritmo, en cada iteracin de su proceso, utiliza la media de su poblacin para recalcular el potencial nuevo centroide, la existencia de elementos alejados (que puedan ser outliers o no) logran producir una distorsin tal que lleva a que el algoritmo retorne soluciones errneas, tanto en la composicin de los grupos conformados como en la eleccin de los centroides de cada uno de ellos. Un algoritmo de tipo no jerrquico inmune a este problema descripto en el prrafo anterior es el conocido bajo el nombre P-Median.

Este algoritmo se diferencia del K-means en la postulacin de nuevos centroides que hace en cada iteracin, ya que en lugar de utilizar la media considera la mediana de la poblacin del grupo. De esta manera la existencia de valores lejanos y/o utliers no afectan la ubicacin de los nuevos centroides ni la conformacin de nuevos grupos que minimicen la variacin interna al conglomerado y maximice la variacin intra los diferentes grupos.Implementacin

El objetivo de este trabajo es presentar el algoritmo P-Median, realizar comprobaciones en cuanto a su desempeo, y proveer una implementacin que pueda ser utilizada de la manera ms simple posible por quin la requiera.

La idea fue integrar este mtodo en algunos de los paquetes de software que se emplean comnmente para hacer anlisis exploratorio y de tipo multivariado, por tal razn la implementacin del algoritmo fue realizada en lenguaje Java, previendo cumplir todos los requisitos para poder ser integrado al software Weka.

Algoritmo P-MedianA grandes rasgos el algoritmo P-Median se comporta de igual manera que el K-Means, diferencindose en que en lugar de utilizar la funcin estadstica media utiliza la mediana para generar nuevos centroides en cada iteracin.

Los pasos del algoritmo, en lenguaje natural, son los siguientes:1) Plantear una solucin inicial eligiendo de manera aleatoria instancias para ser utilizadas como centroides de cada grupo. La cantidad de grupos debe ser configurada por el usuario.

2) Para cada instancia considerar la distancia euclidea que tiene contra cada centroide y asignarlo al grupo cuya distancia al centroide sea menor. 3) Para cada grupo calcular por medio de la mediana la nueva ubicacin del centroide de cada grupo.4) Repetir los pasos 2 y 3 hasta que la conformacin de los grupos converja, y ya no haya ms reasignacin de instancias a grupos entre iteraciones.El aspecto caracterstico, y que da nombre al algoritmo, es el que se realiza en el paso 3), en el clculo de la mediana para cada dimensin de todos los componentes del grupo. Para llevar a cabo esta tarea la implementacin tradicional es ordenar los valores de cada dimensin y acceder al elemento, o a los dos elementos en caso que la cantidad sea par, que se encuentra en la mitad de la totalidad que conforman el grupo, y tomar este valor como medida para conformar el nuevo centroide.

Esta tarea tiene un costo computacional importante, ya que en cada iteracin se debe ordenar la coleccin de valores de cada dimensin de todos los grupos. Como podr apreciarse ms adelante en este informe, al momento de realizar las pruebas este punto no resulta impedimento para poder ejecutar el algoritmo, considerando una computadora personal configuracin promedio del ao 2008 y dimensin de problemas acotados a pocos miles de instancias y pocas dimensiones.

Si puede ser un problema importante para realizar anlisis sobre problemas de cantidad de muestras muy importantes y/o de muchas dimensiones.Integracin con WekaWeka cuenta con una jerarqua de clases especfica para cada funcionalidad que brinda. Esta jerarqua y otras cuestiones internas de implementacin pueden modificarse con el advenimiento de nuevas versiones de Weka, no obstante es poco comn que surjan cambios tan importantes que puedan causar que el nuevo algoritmo P-Median no pueda ser integrado al resto del sistema.

Se tom como base la versin Weka Developer 3.5.8. Los algoritmos de agrupamiento (clustering) extienden una clase base llamada RandomizableClusterer, quin provee la especificacin de los puntos de entrada y los enlaces por los cuales este modulo deber comunicarse con el resto del sistema.Asimismo las clases de este tipo tambin pueden implementar ciertas interfaces que simplifican las tareas comunes, por ejemplo NumberOfClustersRequestable.Registracin del nuevo algoritmo

Se gener una nueva clase siguiendo estos mismos lineamientos llamada PMedian, donde se encontrar toda la lgica de la implementacin del algoritmo, as como todas las funcionalidades auxiliares para que este mdulo coexista dentro del mismo paquete de software Weka, integrndose y proveyendo las mismas funcionalidades que el resto de los algoritmos disponibles.La creacin de la nueva clase se llevo a cabo con el siguiente cdigo Java:public class PMedian extends RandomizableClusterer implements NumberOfClustersRequestable, WeightedInstancesHandler { /** * the default constructor */ public PMedian() {

super();

m_SeedDefault = 10;

setSeed( m_SeedDefault );}

}El texto descriptivo para la ventana de configuracin de los parmetros: /** * Returns a string describing this clusterer * * @return a description of the evaluator suitable for displaying in the * explorer/experimenter gui */ public String globalInfo() {

return "Cluster data using the PMedian algorithm"; }

La definicin de las capacidades del algoritmo, donde se especifica que el mismo no soporta valores perdidos: /** * Returns default capabilities of the clusterer. * * @return the capabilities of this clusterer */ public Capabilities getCapabilities() {

Capabilities result = super.getCapabilities();

// attributes

result.enable( Capability.NOMINAL_ATTRIBUTES );

result.enable( Capability.NUMERIC_ATTRIBUTES );

// disable MISSING VALUES

result.disable( Capability.MISSING_VALUES );

return result; }Especificacin de los parametros que debern ser proporcionados para llevar a cabo un ciclo de ejecucin: /** * Gets the current settings of PMedian * * @return an array of strings suitable for passing to setOptions() */ public String[] getOptions() {

int i;

Vector result;

String[] options;

result = new Vector();

if( m_displayStdDevs ) {

result.add( "-V" );

}

if( m_standardizeAttributes ) {

result.add( "-M" );

}

result.add( "-N" );

result.add( "" + getNumClusters() );

options = super.getOptions();

for( i = 0; i < options.length; i++ )

result.add( options[i] );

return (String[]) result.toArray( new String[result.size()] ); }

Ajuste de las opciones configuradas por el usuario para llevar a cabo la ejecucin del algoritmo: public void setOptions(String[] options) throws Exception {

m_displayStdDevs = Utils.getFlag( "V", options );

m_standardizeAttributes = Utils.getFlag( "M", options );

String optionString = Utils.getOption( 'N', options );

if( optionString.length() != 0 ) {

setNumClusters( Integer.parseInt( optionString ) );

}

super.setOptions( options ); }

El cdigo expuesto en parrafos anteriores hace posible que el algoritmo PMedian se integre como un modulo nativo al sistema Weka, el mismo puede observarse como una opcin mas de algoritmos de clustering, como se ve en la siguiente captura de pantalla:

Y al ingresar al algoritmo pueden verse y configurarse las opciones, de la siguiente manera:

Detalles de integracin Una vez registrado el nuevo algoritmo en el sistema Weka el usuario lo ver disponible y podr utilizarlo de la misma manera que utiliza el resto de funcionalidades que otorga el resto del sistema.

Al emplear el PMedian Weka realizar primero una invocacin al mtodo setOptions (funcin descripta en prrafos anteriores) con el fin que el algoritmo pueda obtener las opciones seleccionadas por el usuario, luego invocar al punto de entrada del algoritmo indicndole las datos en los cuales debe ejecutarse.El punto de entrada al algoritmo de agrupamiento (definido dentro de la jerarqua de algoritmos de agrupamiento, mas especficamente en la clase AbstractClusterer) es el siguiente: /** * Generates a clusterer. Has to initialize all fields of the clusterer that * are not being set via options. * * @param data * set of instances serving as training data * @throws Exception * if the clusterer has not been generated successfully */ public void buildClusterer(Instances data) throws Exception {

En el cuadro anterior puede apreciarse la funcin que invoca Weka para realizar la generacin del agrupamiento. En la misma pasa por parmetro los datos en los cuales debe llevar a cabo el algoritmo.El tipo de dato Instances es original de Weka y contiene dentro de s toda la informacin del dataset con el cual se esta operando, tanto la informacin de nombres de campos, tipos de datos, etc, como los datos especficos de las instancias.

El primer paso a llevar a cabo es verificar que se cumplan los requisitos impuestos, en nuestro caso se debe verificar que los datos no contengan valores faltantes, esto se lleva a cabo con la siguiente instruccin:

// can clusterer handle the data?

getCapabilities().testWithFail( data );

Esta invocacin realizar la comprobacin que los datos no contengan datos faltantes, y que los atributos sean de tipo numrico o nominal. La definicin de las capacidades del algoritmo PMedian estn definidos en el mtodo getCapabilities que ya fue expuesto en un punto anterior dentro de este informe (bajo la seccin Registracin del nuevo Algoritmo).Estandarizacin de variables

Para implementar la opcin de estandarizacion de los variables como paso previo al proceso de agrupamiento se utilizo una clase provista por Weka llamada Standardize.

En caso de ser necesario (por solicitud del usuario mediante la ventana de configuracin) se proceder a instanciar un objeto de esta clase, e invocar a un filtro no supervisado que llevar a cabo la estandarizacin de los valores en las instancias previamente cargadas en la aplicacin. Puede verse esta secuencia en el siguiente cdigo:

m_Standardize = new Standardize();

Instances instances = new Instances( data );

instances.setClassIndex( -1 );

if( m_standardizeAttributes ) {

m_Standardize.setInputFormat( instances );

instances = Filter.useFilter( instances, m_Standardize );

}P-Median paso a paso

El primer paso en el algoritmo de agrupamiento es crear tantos centroides como haya especificado el usuario, para luego poder plantear una solucin inicial.

m_ClusterCentroids = new Instances( instances, m_NumClusters );

int[] clusterAssignments = new int[instances.numInstances()];

Random RandomO = new Random( getSeed() );

for( int j = instances.numInstances() - 1; j >= 0; j-- ) {

int instIndex = RandomO.nextInt( j + 1 );

m_ClusterCentroids.add( instances.instance( instIndex ) );

instances.swap( j, instIndex );

if( m_ClusterCentroids.numInstances() == m_NumClusters ) {

break;

}

}Aqu puede apreciarse la eleccin aleatoria de los centroides para conformar luego la solucin inicial.

A travs de un ciclo se itera tantas veces como centroides deban elegirse, y en cada paso se selecciona a travs de un numero aleatorio (con la semilla seleccionada por el usuario) el nmero de instancia que ser elegida como centroide inicial. Luego esta instancia se la coloca al final de todas para que no vuelva a ser elegida en la prxima iteracin.

Como resultado de este conjunto de instrucciones los centroides ya han sido prefijados, y resta asignar cada instancia a su centroide mas cercano para conformar as la solucin inicial del algoritmo.La seleccin y asignacin de cada instancia a su centroide mas cercano, y por consiguiente al grupo al cual pertenece este centroide se realiza con la siguiente funcin:

/** * clusters an instance that has been through the filters * * @param instance * the instance to assign a cluster to * @param updateErrors * if true, update the within clusters sum of errors * @return a cluster number */ private int clusterProcessedInstance(Instance instance) {

double minDist = Integer.MAX_VALUE;

int bestCluster = 0;

for( int i = 0; i < m_NumClusters; i++ ) {

double dist = distance( instance, m_ClusterCentroids.instance(i) );

if( dist < minDist ) {

minDist = dist;

bestCluster = i;

}

}

return bestCluster; }

Considerando nicamente la instancia recibida por parmetro recorre todos los centroides y calcula la distancia que lo separa a cada uno de ellos. Luego selecciona el centroide/grupo al cual la distancia haya sido menor, y lo asigna al mismo. La distancia utilizada es la distancia Euclidea provista por el sistema Weka.En este momento el algoritmo ya cuenta con una solucin inicial; a partir de ahora buscar nuevas soluciones que mejoren en cada iteracin, y se detendr cuando la solucin converja y se estabilice, es decir que como resultado de la iteracin ninguna instancia se haya desplazado de un grupo a otro. for( i = 0; i < m_NumClusters; i++ ) {

double[] vals = new double[instances.numAttributes()];

// Set new set of centroids for( int j = 0; j < instances.numAttributes(); j++ ) {

// Use Median of data values to set the new centroid

vals[j] = MedianOrModeCompute( tempI[i], j ); }

}

m_ClusterCentroids.add( new Instance( 1.0, vals ) );Como puede verse, el clculo de los nuevos centroides es sumamente simple, para cada grupo se computa la mediana (o moda en caso de variables nominales) para cada dimensin y se utiliza este valor como nuevo centroide.El clculo de la mediana es el principal aspecto que distingue a este mtodo de agrupamiento, es llevado a cabo por el mtodo MedianOrModeCompute y recibe como parmetro todas las instancias en el grupo y el ndice de la dimensin para el cual se quiere calcular el valor de la mediana.

/** * Returns the median (mode) for a numeric (nominal) attribute as a * floating-point value. Returns 0 if the attribute is neither nominal nor * numeric. If all values are missing it returns zero. * * @param attIndex the attribute's index (index starts with 0) * @return the median or the mode */ public static double MedianOrModeCompute(Instances instances, int attIndex){

if( instances.attribute( attIndex ).isNumeric() ) {

// copy instance's (values * weight) to a plain vector

Vector values = new Vector();

for( int j = 0; j < instances.numInstances(); j++ ) {

if( !instances.instance( j ).isMissing( attIndex ) ) {

values.add( new Double( instances.instance( j ).weight()

* instances.instance( j ).value( attIndex ) ) );

}

}

// order the vector

java.util.Collections.sort( values );

double median;

// even or odd number of values?

if( values.size() % 2 == 1 )

// odd => (n/2) element

median = values.get( values.size() / 2 );

else

// even => ( (n/2)-1 element + (n/2) element ) / 2

median = ( values.get((values.size()/2)-1) + values.get(values.size()/2) ) / 2;

return median;

}

return instances.meanOrMode( attIndex ); }

En el caso que la variable sea de tipo nominal el valor esperado es la moda. Dado que Weka provee esta funcionalidad se delega en este mtodo su computo (ltima lnea del cdigo referenciado en el cuadro previo).Si el atributo es numrico debe calcularse la mediana. Para tal fin se crea un vector con los valores de las instancias para el atributo indicado, luego se ordena, y por ltimo se accede al elemento de la mitad (o los 2 de la mitad y se divide por 2 en caso que haya una cantidad par de elementos) del vector para obtener la mediana. Este valor es retornado como resultado, y luego empleado en la conformacin del nuevo centroide.

En este punto el algoritmo da inicio a una nueva iteracin. Hasta aqu calculo los grupos iniciales, sus centroides y las instancias que conforman cada grupo. Luego mediante la utilizacin de la media calculo nuevos centroides candidatos para la solucin, y en este punto de la ejecucin es cuando debe decidir si los nuevos centroides mejoran la solucin inicial, y/o el problema converge dando por terminada su ejecucin.

while( !converged ) {

m_Iterations++;

converged = true;

for( i = 0; i < instances.numInstances(); i++ ) {

Instance toCluster = instances.instance( i );

int newC = clusterProcessedInstance( toCluster, true );

if( newC != clusterAssignments[i] ) {

converged = false;

}

clusterAssignments[i] = newC;

}Inicia una nueva iteracin, y se reasignan todas las instancias a los nuevos centroides. Si todas las nuevas asignaciones a grupos coinciden con las que tenian previamente el algoritmo concluye que el sistema converge, y termina su ciclo de ejecucin dando como resultado final estos conformacin de grupos que tiene actualmente.En caso que el sistema no converja se vuelven a repetir todos los pasos descriptos previamente, calculndose nuevamente la mediana para cada dimensin de las instancias de los grupos, calculando en base a esto nuevos centroides y volviendo a reasignar los casos hasta que el sistema se estabilice.

EjemplosCon el fin de evaluar el comportamiento del algoritmo se plantea un ejemplo de tamao reducido, con datos en los cuales se espera ver una diferencia cuando se compare con otros algoritmo, por ejemplo K-Means. La caracterstica de este ejemplo es que cuenta con una variable que se encuentra alejada en uno de sus ejes, lo cual no debiera ser un problema para el P-Median.

Los datos planteados, y su diagrama de dispersin son los siguientes:

Figure 2: Ejemplo realizado con Infostat.El objetivo es conformar 2 grupos con estos casos. Como primer paso se evaluar como se comporta este problema con otros algoritmos empleando el software Infostat y Weka.

Utilizando Infostat, agrupamiento jerrquico con mtodo de encadenamiento simple y distancia Eucldea al cuadrado, los resultados obtenidos fueron:

Infostat, agrupamiento jerrquico con mtodo de encadenamiento Ward y distancia Eucldea, los resultados obtenidos fueron:

Infostat, agrupamiento por mtodo No Jerrquico KMeans utilizando distancia Eucldea:

Utilizando Weka, agrupamiento por SimpleKmeans, el resultado es el siguiente:kMeans

======

Number of iterations: 2

Within cluster sum of squared errors: 1.9419939418869898

Missing values globally replaced with mean/mode

Cluster centroids:

Cluster#

Attribute Full Data 0 1

(24) (13) (11)

============================================

X 43.2917 49.4615 36

Y 25.1667 29.1538 20.4545

Clustered Instances

0 13 ( 54%)

1 11 ( 46%)

Puede observarse que ninguno de los algoritmos probados hasta el momento logra obtener la solucin correcta, tanto los jerrquicos como los no jerrquicos se ven influenciados por la instancia que se encuentra alejada en el eje X.

Este problema podra tratarse como si fuese un caso de valor outlier, y en cuyo caso al retirarse el elemento de la muestra si se obtendran buenas soluciones con cualquiera de los algoritmos probados hasta el momento.

Empleando P-Median, el resultado fue el siguiente:

PMedian

=======Number of iterations: 3

Within cluster sum of squared errors: 4661.0

Cluster centroids:

Cluster#

Attribute Full Data 0 1

(24) (12) (12)

============================================

X 43.2917 67.5 18

Y 25.1667 27.5 24.5

Clustered Instances

0 12 ( 50%)

1 12 ( 50%)

En este ltimo grfico puede observarse claramente que la asignacin a los grupos es la correcta, y que el valor alejado (outlier) no afecta el desempeo del algoritmo PMedian.Problemas con muchas instanciasA medida que crece la cantidad de instancias comienzan los problemas de performance del algoritmo.

Como fue explicado en los detalles de implementacin, en cada iteracin el algoritmo calcula la mediana para cada dimensin del problema. Para realizar esta tarea copia los valores numricos a un vector y los ordena para luego acceder a el/los elementos de la mitad y obtener la mediana. Esta operacin es costosa desde el punto de vista computacional, en el mejor de los casos el costo es del orden n*log2(n), siendo n la cantidad de elementos existentes en ese grupo.No obstante, las pruebas realizadas con casos de ejemplo de hasta 10.000 instancias y 2 dimensiones fueron ejecutadas en un tiempo muy similar al que consumi la ejecucin del mismo problema con el algoritmo SimpleKmeans (empleando Hardware estndar, una PC hogarea modelo 2008).Ideas para futuras investigacionesDurante el desarrollo surgieron ideas para atacar el problema de la degradacin de performance cuando crece en forma importante el nmero de instancias.

Todas ellas estn dirigidas a optimizar la forma de clculo de la mediana. Buscar alternativas para que no sea requisito tener que ordenar los valores de cada grupo en cada iteracin basndose en el supuesto que entre iteraciones solo una pequea parte de las instancias se trasladan de un grupo hacia otro.Otras alternativas incluyen el uso de estructuras con indexacin que permitan mantener los elementos en forma ordenada y eviten de esta forma el paso mas costoso del algoritmo: ordenar los valores de las instancias.Conclusiones Los resultados obtenidos con los ejemplos muestran que el PMedian es un algoritmo que soporta la existencia de datos lejanos sin que esto afecte la conformacin de los grupos que genera. Es una alternativa que permitira obviar la etapa de eliminacin de outliers, y por consiguiente aumenta su confiabilidad ya que la existencia de algunos casos extremos no alterar la calidad de la solucin resultante.

En cuanto al costo computacional que implica su utilizacin con grandes volmenes de datos, es un campo abierto para la investigacin y el desarrollo, un desafio para el estudio y bsqueda de nuevas heursticas y optimizaciones que junto a la evolucin del Hardware permitirn que el algoritmo PMedian sea empleado masivamente en detrimento de otros mtodos menos confiables como el KMeans.Detalles de InstalacinDeben seguirse los siguientes pasos:1)Instalar weka versin 3.5.8 o superior.

2) Copiar los archivos pmedian.jar y GenericPropertiesCreator.props al directorio donde se encuentra instalado Weka (en una PC con Windows en Castellano el directorio es C:\Archivos de programa\Weka-3-5).

3) Editar RunWeka.ini, modificando la asignacin de la variable cp, debe quedar de la siguiente manera: cp=%CLASSPATH%;pmedian.jar

4) Ejecutar weka normalmente, el PMedian debe verse y encontrarse disponible como cualquier otro algoritmo clusterer.Disponibilidad pblicaEste trabajo es acompaado por un CD con todo el cdigo fuente en Java, las libreras para poder ser utilizado libremente.Asimismo se pone a disposicin el repositorio del proyecto donde se puede descargar libremente la ultima versin de todos los componentes en caso que esta tenga modificaciones posteriores a la entrega de este informe.http://www.assembla.com/wiki/show/pmedianLibre acceso al cdigo fuente:

http://trac.assembla.com/pmedian/browserA travs de un cliente subversin, mediante el URL:

http://svn.assembla.com/svn/pmedianBibliografa y referencias

Weka

http://www.cs.waikato.ac.nz/~ml/weka/index.htmlSoftware estadstico Infostat, Manuel del usuario versin 2008

http://www.infostat.com.arK-Means Clustering Algorithmhttp://mathworld.wolfram.com/K-MeansClusteringAlgorithm.htmlAn Efficient Algorithm for the Approximate Median Selection

Problem, por S. Battiato, D. Cantone, D. Catalano and G. Cincotti

http://web.cs.wpi.edu/~hofri/medsel.pdfA constant-factor approximation algorithm for the -median problemhttp://www.cs.cornell.edu/home/eva/median.psSome interchange algorithms for median location problems, por R AWhitaker

http://www.envplan.com/abstract.cgi?id=b090119Fast and Robust Techniques for the Euclidean p-Median Problem

with Uniform Weights, por G. J. Lim_ J. Reesey A. Holderhttp://ramanujan.math.trinity.edu/tumath/research/reports/report107.pdf