De populariteit van pagina's op sociale media meten met DEA in JAVA PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het meten van de sociale media populariteit van pagina's met DEA in JAVA

In het vorige artikel hebben we het gehad over de Data Envelopment Analysis techniek en we hebben gezien hoe het kan worden gebruikt als een effectief niet-parametrisch ranking-algoritme. In deze blogpost zullen we een implementatie van Data Envelopment Analysis in JAVA ontwikkelen en we zullen deze gebruiken om de Social Media Populariteit van webpagina's en artikelen op het web te evalueren. De code is open source (onder GPL v3-licentie) en u kunt deze gratis downloaden van GitHub.

Update: het Datumbox Machine Learning Framework is nu open-source en gratis voor Download. Bekijk het pakket com.datumbox.framework.algorithms.dea om de implementatie van Data Envelopment Analysis in Java te zien.

Data Envelopment Analysis implementatie in JAVA

De code is geschreven in JAVA en kan rechtstreeks worden gedownload van GitHub. Het is gelicentieerd onder GPLv3, dus voel je vrij om het te gebruiken, aan te passen en vrij te verspreiden.

De code implementeert de Data Envelopment Analysis algoritme, gebruikt de lp_solve bibliotheek om de lineaire programmeerproblemen op te lossen en gebruikt de geëxtraheerde gegevens uit Web SEO-analyse index om een ​​samengestelde populariteitsstatistiek voor sociale media op te bouwen voor webpagina's op basis van hun aandelen op Facebook, Google Plus en Twitter. Alle theoretische delen van het algoritme komen aan bod in het vorige artikel en in de broncode vindt u gedetailleerde javadoc-opmerkingen over de implementatie.

Hieronder geven we een beschrijving op hoog niveau van de architectuur van de implementatie:

1. lp_solve 5.5 bibliotheek

Om de verschillende lineaire programmeerproblemen op te lossen, gebruiken we een open source-bibliotheek genaamd lp_solve. De specifieke lib is geschreven in ANSI C en gebruikt een JAVA-wrapper om de bibliotheekmethoden aan te roepen. Dus voordat u de code uitvoert, moet u lp_solve op uw systeem installeren. Binaries van de bibliotheek zijn beide beschikbaar voor Linux en Windows en u kunt meer informatie over de installatie lezen op lp_solve documentatie.

Zorg ervoor dat de specifieke bibliotheek op uw systeem is geïnstalleerd voordat u de JAVA-code probeert uit te voeren. Raadpleeg de lp_solve-documentatie voor elk probleem met betrekking tot het installeren en configureren van de bibliotheek.

2. DataEnvelopmentAnalysis-klasse

Dit is de belangrijkste klasse van de implementatie van het DEA-algoritme. Het implementeert een openbare methode genaamd schattingEfficiëntie () die een kaart met records neemt en hun DEA-scores retourneert.

3. DeaRecord-object

Het DeaRecord is een speciaal object dat de gegevens van ons record opslaat. Omdat DEA de invoer en uitvoer moet scheiden, slaat het DeaRecord-object onze gegevens afzonderlijk op, zodat DEA ermee om kan gaan.

4. SocialMediaPopularity-klasse

De SocialMediaPopularity is een applicatie die DEA gebruikt om de populariteit van een pagina op Social Media-netwerken te evalueren op basis van Facebook likes, Google + 1's en Tweets. Het implementeert twee beschermde methoden, de calculPopularity () en de schattingPercentiles (), samen met twee openbare methoden de loadFile () en de getPopularity ().

De calculPopularity () gebruikt de DEA-implementatie om de scores van de pagina's te schatten op basis van hun aantal sociale media. De methode schattingPercentielen () haalt de DEA-scores en zet ze om in percentielen. Over het algemeen zijn percentielen gemakkelijker uit te leggen dan DEA-scores; dus als we zeggen dat de populariteitsscore van een pagina 70% is, betekent dit dat de specifieke pagina populairder is dan de 70% van de pagina's.

Om de populariteit van een bepaalde pagina te kunnen schatten, moeten we een dataset hebben met de social media-tellingen van andere pagina's. Dit is logisch, want om te voorspellen welke pagina populair is en welke niet, moet u deze kunnen vergelijken met andere pagina's op internet. Om dit te doen, gebruiken we een klein geanonimiseerd voorbeeld van de Web SEO Analytics-index in txt-formaat. U kunt uw eigen database bouwen door de aantallen sociale media te extraheren uit meer pagina's op internet.

De loadFile () -methode wordt gebruikt om de bovengenoemde statistieken over DEA te laden en de getPopularity () -methode is een eenvoudig te gebruiken methode die de Facebook-likes, Google + 1's en het aantal tweets van een pagina krijgt en de populariteit op sociale media evalueert .

Met behulp van de JAVA-implementatie van Data Envelopment Analysis

In de DataEnvelopmentAnalysisExample klasse I geef 2 verschillende voorbeelden van hoe de code te gebruiken.

Het eerste voorbeeld maakt rechtstreeks gebruik van de DEA-methode om de efficiëntie van organisatie-eenheden te evalueren op basis van hun output (ISSUES, RECEIPTS, REQS) en input (STOCK, WAGES). Dit voorbeeld is afkomstig uit een artikel van 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());

Het tweede voorbeeld gebruikt onze Social Media Populariteit applicatie om de populariteit van een pagina te evalueren door gebruik te maken van data van Social Media zoals Facebook Likes, Google + 1's en Tweets. Alle tellingen van sociale media zijn gemarkeerd als uitvoer en we geven aan DEA een lege invoervector door.

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

Noodzakelijke uitbreidingen

De verstrekte code is slechts een voorbeeld van hoe DEA kan worden gebruikt als rankingalgoritme. Hier zijn enkele uitbreidingen die gemaakt moeten worden om de implementatie te verbeteren:

1. De implementatie versnellen

De specifieke DEA-implementatie evalueert de DEA-scores van alle records in de database. Dit maakt de implementatie traag omdat we evenveel lineaire programmeerproblemen moeten oplossen als het aantal records in de database. Als we de score van alle records niet hoeven te berekenen, kunnen we de uitvoering aanzienlijk versnellen. Dus een kleine uitbreiding van het algoritme kan ons een betere controle geven over welke records moeten worden opgelost en welke alleen als beperkingen mogen worden gebruikt.

2. Het uitbreiden van de Social Media Counts Database

De geleverde Social Media Counts Database bestaat uit 1111 voorbeelden uit de Web SEO Analytics-index. Om een ​​nauwkeurigere populariteitsscore te kunnen schatten, is een grotere steekproef nodig. U kunt uw eigen database maken door het aantal sociale media te schatten op meer pagina's van het web.

3. Toevoegen van meer social media netwerken

De implementatie gebruikt de Facebook Likes, de Google + 1's en het aantal Tweets om de populariteit van een artikel te evalueren. Desalniettemin kan gemakkelijk rekening worden gehouden met de statistieken van andere sociale medianetwerken. Het enige dat u hoeft te doen, is een database bouwen met de aantallen sociale media van de netwerken waarin u geïnteresseerd bent en de klasse SocialMediaPopularity uitbreiden om ze dienovereenkomstig af te handelen.

Laatste opmerkingen over de uitvoering

Om de implementatie uit te kunnen breiden moet je goed begrijpen hoe Data Envelopment Analysis werken. Dit wordt behandeld in het vorige artikel, dus zorg ervoor dat u de tutorial leest voordat u doorgaat met eventuele wijzigingen. Om de JAVA-code te gebruiken, moet u bovendien de lp_solve-bibliotheek in uw systeem hebben geïnstalleerd (zie hierboven).

Als je de implementatie gebruikt in een interessant project ons een seintje en we zullen uw project op onze blog plaatsen. Als je het artikel ook leuk vindt, neem dan even de tijd en deel het op Twitter of Facebook.

Tijdstempel:

Meer van Datumbox