Mesurer la popularité des pages sur les réseaux sociaux avec DEA dans JAVA PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Mesurer la popularité des pages sur les réseaux sociaux avec DEA dans JAVA

Dans l'article précédent, nous avons discuté de la Analyse d'enveloppement des données technique et nous avons vu comment il peut être utilisé comme un algorithme de classement non paramétrique efficace. Dans cet article de blog, nous développerons une implémentation de l'analyse d'enveloppement de données dans JAVA et nous l'utilisons pour évaluer la popularité des médias sociaux des pages Web et des articles sur le Web. Le code est open source (sous licence GPL v3) et vous pouvez le télécharger gratuitement depuis Github.

Mise à jour: le Datumbox Machine Learning Framework est désormais open-source et gratuit pour download. Consultez le package com.datumbox.framework.algorithms.dea pour voir l'implémentation de Data Envelopment Analysis en Java.

Implémentation de l'analyse d'enveloppe de données dans JAVA

Le code est écrit en JAVA et peut être téléchargé directement depuis Github. Il est sous licence GPLv3 alors n'hésitez pas à l'utiliser, à le modifier et à le redistribuer librement.

Le code implémente le Analyse d'enveloppement des données algorithme, utilise le bibliothèque lp_solve pour résoudre les problèmes de programmation linéaire et utilise les données extraites de Analyse SEO Web index afin de construire une métrique composite de popularité des médias sociaux pour les pages Web en fonction de leurs partages sur Facebook, Google Plus et Twitter. Toutes les parties théoriques de l'algorithme sont couvertes dans l'article précédent et dans le code source vous pouvez trouver des commentaires javadoc détaillés concernant l'implémentation.

Ci-dessous, nous fournissons une description de haut niveau de l'architecture de l'implémentation:

1. Bibliothèque lp_solve 5.5

Afin de résoudre les différents problèmes de programmation linéaire, nous utilisons une bibliothèque open source appelée lp_solve. La bibliothèque particulière est écrite en C ANSI et utilise un wrapper JAVA pour appeler les méthodes de la bibliothèque. Ainsi, avant d'exécuter le code, vous devez installer lp_solve sur votre système. Les fichiers binaires de la bibliothèque sont disponibles à la fois pour Linux et Windows et vous pouvez lire plus d'informations sur l'installation sur documentation lp_solve.

Veuillez vous assurer que la bibliothèque particulière est installée sur votre système avant d'essayer d'exécuter le code JAVA. Pour tout problème concernant l'installation et la configuration de la bibliothèque, veuillez vous référer à la documentation lp_solve.

2. Classe DataEnvelopmentAnalysis

Il s'agit de la classe principale de l'implémentation de l'algorithme DEA. Il implémente une méthode publique appelée estimationEfficacité () qui prend une carte des enregistrements et renvoie leurs scores DEA.

3. Objet DeaRecord

Le DeaRecord est un objet spécial qui stocke les données de notre dossier. Étant donné que DEA nécessite de séparer l'entrée et la sortie, l'objet DeaRecord stocke nos données séparément de manière à ce que DEA puisse les gérer.

4. Classe SocialMediaPopularity

Le SocialMediaPopularity est une application qui utilise DEA pour évaluer la popularité d'une page sur les réseaux de médias sociaux sur la base de ses likes Facebook, Google + 1 et Tweets. Il implémente deux méthodes protégées, CalculatePopularity () et estimationPercentiles (), ainsi que deux méthodes publiques, loadFile () et getPopularity ().

La fonction CalculatePopularity () utilise l'implémentation DEA pour estimer les scores des pages en fonction de leur nombre de médias sociaux. La méthode estimationPercentiles () obtient les scores DEA et les convertit en centiles. En général, les centiles sont plus faciles à expliquer que les scores DEA; ainsi, lorsque nous disons que le score de popularité d'une page est de 70%, cela signifie que la page en question est plus populaire que les 70% des pages.

Afin de pouvoir estimer la popularité d'une page particulière, nous devons avoir un ensemble de données avec le nombre de médias sociaux des autres pages. Cela a du sens, car pour prédire quelle page est populaire et laquelle ne l'est pas, vous devez pouvoir la comparer avec d'autres pages du Web. Pour ce faire, nous utilisons un petit échantillon anonyme de l'index Web SEO Analytics fourni au format txt. Vous pouvez créer votre propre base de données en extrayant le nombre de médias sociaux de plusieurs pages sur le Web.

La méthode loadFile () est utilisée pour charger les statistiques susmentionnées sur DEA et la méthode getPopularity () est une méthode facile à utiliser qui obtient les likes de Facebook, Google + 1 et le nombre de tweets d'une page et évalue sa popularité sur les médias sociaux .

Utilisation de l'implémentation JAVA Data Envelopment Analysis

Dans la classe DataEnvelopmentAnalysisExample, je fournis 2 exemples différents de la façon d'utiliser le code.

Le premier exemple utilise directement la méthode DEA pour évaluer l'efficacité des unités organisationnelles en fonction de leur sortie (ENJEUX, RECETTES, REQS) et de leur entrée (STOCK, SALAIRES). Cet exemple est tiré d'un article 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());

Le deuxième exemple utilise notre application de popularité des médias sociaux pour évaluer la popularité d'une page en utilisant les données des médias sociaux tels que Facebook Likes, Google + 1 et Tweets. Tous les comptes de médias sociaux sont marqués comme sortie et nous passons à DEA un vecteur d'entrée vide.

        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());

Expansions nécessaires

Le code fourni n'est qu'un exemple de la façon dont DEA peut être utilisé comme algorithme de classement. Voici quelques extensions qui doivent être faites afin d'améliorer la mise en œuvre:

1. Accélérer la mise en œuvre

L'implémentation DEA particulière évalue les scores DEA de tous les enregistrements de la base de données. Cela rend l'implémentation lente car nous devons résoudre autant de problèmes de programmation linéaire que le nombre d'enregistrements dans la base de données. Si nous n'avons pas besoin de calculer le score de tous les enregistrements, nous pouvons accélérer considérablement l'exécution. Ainsi, une petite expansion de l'algorithme peut nous donner un meilleur contrôle sur les enregistrements qui doivent être résolus et ceux qui doivent être utilisés uniquement comme contraintes.

2. Extension de la base de données des médias sociaux

La base de données des comptes de médias sociaux fournie comprend 1111 échantillons de l'index Web SEO Analytics. Pour pouvoir estimer un score de popularité plus précis, un plus grand échantillon est nécessaire. Vous pouvez créer votre propre base de données en estimant le nombre de médias sociaux à partir de plusieurs pages du Web.

3. Ajouter plus de réseaux de médias sociaux

L'implémentation utilise les Facebook Likes, les Google + 1 et le nombre de Tweets pour évaluer la popularité d'un article. Néanmoins, les mesures d'autres réseaux de médias sociaux peuvent être facilement prises en compte. Tout ce que vous devez faire est de créer une base de données avec le nombre de médias sociaux à partir des réseaux qui vous intéressent et d'étendre la classe SocialMediaPopularity pour les gérer en conséquence.

Commentaires finaux sur la mise en œuvre

Pour pouvoir étendre l'implémentation, vous devez bien comprendre comment Analyse d'enveloppement des données travaux. Ceci est couvert dans l'article précédent, alors assurez-vous de lire le tutoriel avant de procéder à toute modification. De plus, pour utiliser le code JAVA, vous devez avoir installé dans votre système la bibliothèque lp_solve (voir ci-dessus).

Si vous utilisez l'implémentation dans un projet intéressant Nous Écrire et nous présenterons votre projet sur notre blog. De plus, si vous aimez l'article, veuillez prendre un moment et le partager sur Twitter ou Facebook.

Horodatage:

Plus de Boîte de données