Medición de la popularidad de las páginas en las redes sociales con DEA en JAVA PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Medición de la popularidad en redes sociales de páginas con DEA en JAVA

En el artículo anterior hemos discutido sobre el Análisis Envolvente de Datos técnica y hemos visto cómo se puede utilizar como un algoritmo eficaz de clasificación no paramétrica. En esta publicación de blog desarrollaremos una implementación de Análisis de envoltura de datos en JAVA y la usaremos para evaluar la popularidad de las redes sociales de páginas web y artículos en la web. El código es de código abierto (bajo licencia GPL v3) y puede descargarlo libremente desde Github.

Actualización: el marco de aprendizaje automático de Datumbox ahora es de código abierto y gratuito para descargar. Consulte el paquete com.datumbox.framework.algorithms.dea para ver la implementación del análisis de envoltura de datos en Java.

Implementación del análisis de envoltura de datos en JAVA

El código está escrito en JAVA y se puede descargar directamente desde Github. Está licenciado bajo GPLv3, así que siéntase libre de usarlo, modificarlo y redistribuirlo libremente.

El código implementa el Análisis Envolvente de Datos algoritmo, utiliza el biblioteca lp_solve para resolver los problemas de programación lineal y utiliza datos extraídos de Análisis de SEO web índice para construir una métrica compuesta de popularidad de redes sociales para páginas web basadas en sus acciones en Facebook, Google Plus y Twitter. Todas las partes teóricas del algoritmo están cubiertas en el artículo anterior y en el código fuente puede encontrar comentarios detallados de javadoc sobre la implementación.

A continuación proporcionamos una descripción de alto nivel de la arquitectura de la implementación:

1. biblioteca lp_solve 5.5

Para resolver los diversos problemas de programación lineal, utilizamos una biblioteca de código abierto llamada lp_solve. La lib particular está escrita en ANSI C y utiliza un contenedor JAVA para invocar los métodos de la biblioteca. Por lo tanto, antes de ejecutar el código, debe instalar lp_solve en su sistema. Los binarios de la biblioteca están disponibles tanto para Linux y Windows y puedes leer más información sobre la instalación en documentación de lp_solve.

Asegúrese de que la biblioteca particular esté instalada en su sistema antes de intentar ejecutar el código JAVA. Para cualquier problema relacionado con la instalación y configuración de la biblioteca, consulte la documentación de lp_solve.

2. Clase DataEnvelopmentAnalysis

Esta es la clase principal de la implementación del algoritmo DEA. Implementa un método público llamado EstimaciónEficiencia () que toma un Mapa de registros y devuelve sus puntajes DEA.

3. Objeto DeaRecord

DeaRecord es un objeto especial que almacena los datos de nuestro registro. Dado que DEA requiere separar la entrada y la salida, el objeto DeaRecord almacena nuestros datos por separado de manera que DEA pueda manejarlos.

4. Clase de SocialMediaPopularity

SocialMediaPopularity es una aplicación que utiliza DEA para evaluar la popularidad de una página en las redes sociales en función de sus me gusta de Facebook, Google + 1 y Tweets. Implementa dos métodos protegidos, CalculatePopularity () y EstimatePercentiles () junto con dos métodos públicos, loadFile () y getPopularity ().

CalculatePopularity () utiliza la implementación DEA para estimar los puntajes de las páginas en función de sus recuentos de redes sociales. El método estimadorPercentiles () obtiene los puntajes DEA y los convierte en percentiles. En general, los percentiles son más fáciles de explicar que los puntajes de la DEA; así, cuando decimos que el puntaje de popularidad de una página es del 70%, significa que la página en particular es más popular que el 70% de las páginas.

Para poder estimar la popularidad de una página en particular, debemos tener un conjunto de datos con los recuentos de redes sociales de otras páginas. Esto tiene sentido ya que para predecir qué página es popular y cuál no, debe poder compararla con otras páginas en la web. Para hacerlo, utilizamos una pequeña muestra anónima del índice de Web SEO Analytics en formato txt. Puede crear su propia base de datos extrayendo los recuentos de redes sociales de más páginas en la web.

El método loadFile () se usa para cargar las estadísticas mencionadas anteriormente en DEA y el método getPopularity () es un método fácil de usar que obtiene los me gusta de Facebook, Google + 1 y el número de Tweets de una página y evalúa su popularidad en las redes sociales .

Uso de la implementación de JAVA de análisis de envoltura de datos

En la clase DataEnvelopmentAnalysisExample proporciono 2 ejemplos diferentes de cómo usar el código.

El primer ejemplo utiliza directamente el método DEA para evaluar la eficiencia de las unidades organizativas en función de su producción (PROBLEMAS, RECIBOS, REQS) y entrada (STOCK, WAGES). Este ejemplo fue tomado de un artículo de DEAzone.com.

        Map<String, DeaRecord> records = new LinkedHashMap<>();
        
        records.put("Depot1", new DeaRecord(new double[]{40.0,55.0,30.0}, new double[]{3.0,5.0}));
        //...adding more records here...
        
        DataEnvelopmentAnalysis dea = new DataEnvelopmentAnalysis();
        Map<String, Double> results = dea.estimateEfficiency(records);
        System.out.println((new TreeMap<>(results)).toString());

El segundo ejemplo utiliza nuestra aplicación de Popularidad en redes sociales para evaluar la popularidad de una página mediante el uso de datos de las redes sociales como Me gusta de Facebook, Google + 1 y Tweets. Todos los recuentos de redes sociales se marcan como salida y pasamos a DEA un vector de entrada vacío.

        SocialMediaPopularity rank = new SocialMediaPopularity();
        rank.loadFile(DataEnvelopmentAnalysisExample.class.getResource("/datasets/socialcounts.txt"));
        Double popularity = rank.getPopularity(135, 337, 9079); //Facebook likes, Google +1s, Tweets
        System.out.println("Page Social Media Popularity: "+popularity.toString());

Expansiones necesarias

El código proporcionado es solo un ejemplo de cómo DEA puede usarse como algoritmo de clasificación. Aquí hay algunas expansiones que deben hacerse para mejorar la implementación:

1. Acelerar la implementación

La implementación particular de DEA evalúa los puntajes de DEA de todos los registros en la base de datos. Esto hace que la implementación sea lenta ya que necesitamos resolver tantos problemas de programación lineal como el número de registros en la base de datos. Si no requerimos calcular la puntuación de todos los registros, entonces podemos acelerar significativamente la ejecución. Por lo tanto, una pequeña expansión del algoritmo puede darnos un mejor control sobre qué registros deben resolverse y cuáles deben usarse solo como restricciones.

2. Expandir la base de datos de redes sociales

La base de datos de Social Media Counts proporcionada consta de 1111 muestras del índice Web SEO Analytics. Para poder estimar un puntaje de popularidad más preciso, se necesita una muestra más grande. Puede crear su propia base de datos estimando los recuentos de redes sociales de más páginas de la web.

3. Agregar más redes sociales

La implementación utiliza los Me gusta de Facebook, Google + 1 y la cantidad de Tweets para evaluar la popularidad de un artículo. Sin embargo, las métricas de otras redes sociales se pueden tener en cuenta fácilmente. Todo lo que necesita hacer es crear una base de datos con los recuentos de redes sociales de las redes que le interesan y expandir la clase SocialMediaPopularity para manejarlos en consecuencia.

Comentarios finales sobre la implementación

Para poder ampliar la implementación, debe tener una buena comprensión de cómo Análisis Envolvente de Datos trabajos. Esto está cubierto en el artículo anterior, así que asegúrese de leer el tutorial antes de proceder a cualquier cambio. Además, para utilizar el código JAVA, debe haber instalado en su sistema la biblioteca lp_solve (ver arriba).

Si usas la implementación en un proyecto interesante nos deje caer una línea y presentaremos su proyecto en nuestro blog. Además, si te gusta el artículo, tómate un momento y compártelo en Twitter o Facebook.

Sello de tiempo:

Mas de Caja de datos