Måling af sidernes popularitet på sociale medier med DEA i JAVA PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Måling af sidernes popularitet på sociale medier med DEA i JAVA

I den forrige artikel har vi diskuteret om Dataindpakningsanalyse teknik, og vi har set, hvordan den kan bruges som en effektiv ikke-parametrisk rangeringsalgoritme. I dette blogindlæg vil vi udvikle en implementering af Data Envelopment Analysis i JAVA, og vi vil bruge den til at evaluere de sociale mediers popularitet af websider og artikler på nettet. Koden er open source (under GPL v3-licens), og du kan downloade den gratis fra Github.

Opdatering: Datumbox Machine Learning Framework er nu open source og gratis til downloade. Tjek pakken com.datumbox.framework.algorithms.dea for at se implementeringen af ​​Data Envelopment Analysis i Java.

Data Envelopment Analysis implementering i JAVA

Koden er skrevet i JAVA og kan downloades direkte fra Github. Det er licenseret under GPLv3, så du er velkommen til at bruge det, ændre det og omdistribuere det frit.

Koden implementerer Dataindpakningsanalyse algoritme, bruger lp_solve bibliotek til at løse de lineære programmeringsproblemer og bruger udvundet data fra Web SEO Analytics indeks for at konstruere en sammensat popularitetsmåling på sociale medier for websider baseret på deres delinger på Facebook, Google Plus og Twitter. Alle de teoretiske dele af algoritmen er dækket i den foregående artikel, og i kildekoden kan du finde detaljerede javadoc-kommentarer vedrørende implementeringen.

Nedenfor giver vi en beskrivelse på højt niveau af implementeringens arkitektur:

1. lp_solve 5.5 bibliotek

For at løse de forskellige lineære programmeringsproblemer bruger vi et open source bibliotek kaldet lp_solve. Det bestemte lib er skrevet i ANSI C og bruger en JAVA-indpakning til at påkalde biblioteksmetoderne. Før du kører koden, skal du derfor installere lp_solve på dit system. Bibliotekets binære filer er tilgængelige for begge Linux og Windows og du kan læse mere om installationen på lp_solve dokumentation.

Sørg for, at det bestemte bibliotek er installeret på dit system, før du prøver at køre JAVA-koden. For ethvert problem vedrørende installation og konfiguration af biblioteket, se venligst lp_solve-dokumentationen.

2. DataEnvelopmentAnalysis Class

Dette er hovedklassen i implementeringen af ​​DEA-algoritmen. Den implementerer en offentlig metode kaldet estimateEfficiency(), som tager et kort over poster og returnerer deres DEA-score.

3. DeaRecord Objekt

DeaRecord er et særligt objekt, der gemmer data fra vores registrering. Da DEA kræver adskillelse af input og output, gemmer DeaRecord Object vores data separat på en måde, som DEA kan håndtere det.

4. Sociale MedierPopularitetsklasse

SocialMediaPopularity er en applikation, der bruger DEA til at evaluere populariteten af ​​en side på sociale medier baseret på dens Facebook-likes, Google +1'er og tweets. Den implementerer to beskyttede metoder, calculatePopularity() og estimatePercentiles() sammen med to offentlige metoder, loadFile() og getPopularity().

calculatePopularity() bruger DEA-implementeringen til at estimere sidernes score baseret på deres antal sociale medier. Metoden estimatePercentiles() henter DEA-scorerne og konverterer dem til percentiler. Generelt er percentiler lettere at forklare end DEA-score; Når vi siger, at en sides popularitetsscore er 70%, betyder det, at den pågældende side er mere populær end de 70% af siderne.

For at kunne estimere populariteten af ​​en bestemt side, skal vi have et datasæt med de sociale mediers tællinger på andre sider. Dette giver mening, da du skal kunne sammenligne den med andre sider på nettet for at forudsige, hvilken side der er populær og hvilken der ikke er. For at gøre det bruger vi en lille anonymiseret prøve fra Web SEO Analytics-indekset i txt-format. Du kan bygge din egen database ved at udtrække antallet af sociale medier fra flere sider på nettet.

loadFile()-metoden bruges til at indlæse de førnævnte statistikker om DEA, og getPopularity()-metoden er en nem at bruge metode, der får Facebook-likes, Google +1'er og antallet af tweets på en side og evaluerer dens popularitet på sociale medier .

Brug af Data Envelopment Analysis JAVA implementering

I DataEnvelopmentAnalysisExample Class I giver 2 forskellige eksempler på, hvordan man bruger koden.

Det første eksempel bruger DEA-metoden direkte til at evaluere effektiviteten af ​​organisatoriske enheder baseret på deres output (PROGRAMMER, KVITTERINGER, REQS) og input (LAGER, LØNNINGER). Dette eksempel er taget fra en artikel af 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());

Det andet eksempel bruger vores Social Media Popularity-applikation til at evaluere populariteten af ​​en side ved at bruge data fra sociale medier såsom Facebook Likes, Google +1s og Tweets. Alle sociale medier-tællinger er markeret som output, og vi sender en tom inputvektor til DEA.

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

Nødvendige udvidelser

Den medfølgende kode er blot et eksempel på, hvordan DEA kan bruges som en rangeringsalgoritme. Her er nogle udvidelser, der skal foretages for at forbedre implementeringen:

1. Fremskynde implementeringen

Den særlige DEA-implementering evaluerer DEA-scorerne for alle poster i databasen. Dette gør implementeringen langsom, da vi kræver at løse lige så mange lineære programmeringsproblemer som antallet af poster i databasen. Hvis vi ikke kræver beregning af scoren for alle posterne, kan vi fremskynde eksekveringen betydeligt. En lille udvidelse af algoritmen kan således give os bedre kontrol over, hvilke poster der skal løses, og hvilke der kun skal bruges som begrænsninger.

2. Udvidelse af databasen over tæller på sociale medier

Den leverede Social Media Counts Database består af 1111 prøver fra Web SEO Analytics-indekset. For at kunne estimere en mere præcis popularitetsscore er en større stikprøve nødvendig. Du kan oprette din egen database ved at estimere antallet af sociale medier fra flere sider på nettet.

3. Tilføjelse af flere sociale medier netværk

Implementeringen bruger Facebook-likes, Google +1'erne og antallet af tweets til at evaluere populariteten af ​​en artikel. Ikke desto mindre kan målinger fra andre sociale medier-netværk nemt tages i betragtning. Alt du skal gøre er at opbygge en database med tæller på sociale medier fra de netværk, du er interesseret i, og udvide SocialMediaPopularity-klassen til at håndtere dem i overensstemmelse hermed.

Afsluttende bemærkninger til implementeringen

For at kunne udvide implementeringen skal du have en god forståelse for hvordan Dataindpakningsanalyse arbejder. Dette er dækket af den forrige artikel, så sørg for at læse selvstudiet, før du fortsætter til ændringer. For at bruge JAVA-koden skal du desuden have installeret lp_solve-biblioteket i dit system (se ovenfor).

Hvis du bruger implementeringen i et interessant projekt Skriv til os og vi vil præsentere dit projekt på vores blog. Hvis du også kan lide artiklen, så tag et øjeblik og del den på Twitter eller Facebook.

Tidsstempel:

Mere fra Datumboks