Mätning av sidors popularitet för sociala medier med DEA i JAVA PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Mäta sociala medier popularitet av sidor med DEA i JAVA

I den tidigare artikeln har vi diskuterat om Analys av datahöljen teknik och vi har sett hur den kan användas som en effektiv icke-parametrisk rankningsalgoritm. I det här blogginlägget kommer vi att utveckla en implementering av Data Envelopment Analys i JAVA och vi kommer att använda den för att utvärdera populariteten för sociala medier på webbsidor och artiklar på webben. Koden är öppen (under GPL v3-licens) och du kan ladda ner den fritt från Github.

Uppdatering: Datumbox Machine Learning Framework är nu öppen källkod och gratis att ladda ner. Kolla in paketet com.datumbox.framework.algorithms.dea för att se implementeringen av Data Envelopment-analys i Java.

Implementering av datahöljen i JAVA

Koden är skriven i JAVA och kan laddas ner direkt från Github. Det är licensierat enligt GPLv3 så använd gärna det, ändra det och omfördela det fritt.

Koden implementerar Analys av datahöljen använder algoritmen lp_solve-biblioteket för att lösa problem med linjär programmering och använder extraherade data från Webb SEO-analys index för att skapa en sammansatt social media-popularitetsstatistik för webbsidor baserat på deras aktier på Facebook, Google Plus och Twitter. Alla de teoretiska delarna av algoritmen beskrivs i föregående artikel och i källkoden kan du hitta detaljerade javadoc-kommentarer om implementeringen.

Nedan ger vi en beskrivning på hög nivå av implementeringsarkitekturen:

1. lp_solve 5.5 bibliotek

För att lösa de olika linjära programmeringsproblemen använder vi ett bibliotek med öppen källkod som heter lp_solve. Den specifika lib är skriven i ANSI C och använder ett JAVA-omslag för att åberopa biblioteksmetoderna. Innan du kör koden måste du installera lp_solve på ditt system. Binarier i biblioteket finns både för Linux och Windows och du kan läsa mer information om installationen på lp_solve dokumentation.

Se till att det specifika biblioteket är installerat på ditt system innan du försöker köra JAVA-koden. För alla problem angående installation och konfigurering av biblioteket, se dokumentationen lp_solve.

2. DataEnvelopmentAnalysis-klass

Detta är huvudklassen för implementeringen av DEA-algoritmen. Den implementerar en offentlig metod som kallas estimeraffektivitet () som tar en karta över poster och returnerar deras DEA-poäng.

3. DeaRecord-objekt

DeaRecord är ett speciellt objekt som lagrar uppgifterna i vår post. Eftersom DEA kräver separering av in- och utdata lagrar DeaRecord Object våra data separat på ett sätt som DEA kan hantera.

4. SocialMediaPopularity-klass

SocialMediaPopularity är en applikation som använder DEA för att utvärdera en sidas popularitet på sociala medienätverk baserat på Facebook-gillanden, Google + 1 och tweets. Den implementerar två skyddade metoder, beräknaPopularity () och estimatPercentiler () tillsammans med två offentliga metoder, loadFile () och getPopularity ().

CalcPopularity () använder DEA-implementeringen för att uppskatta sidornas poäng baserat på deras sociala medieräkningar. Metoden estimatPercentiler () hämtar DEA-poängen och konverterar dem till percentiler. I allmänhet är percentiler lättare att förklara än DEA-poäng; alltså när vi säger att en sidas popularitetspoäng är 70% betyder det att den specifika sidan är mer populär än de 70% av sidorna.

För att kunna uppskatta populariteten för en viss sida måste vi ha en dataset med antalet sociala medier på andra sidor. Detta är vettigt, för att du ska kunna förutsäga vilken sida som är populär och vilken inte, måste du kunna jämföra den med andra sidor på webben. För att göra det använder vi ett litet anonymiserat exempel från Web SEO Analytics-index som tillhandahålls i txt-format. Du kan bygga din egen databas genom att extrahera antalet sociala medier från fler sidor på webben.

Metoden loadFile () används för att ladda den tidigare nämnda statistiken på DEA och metoden getPopularity () är en lättanvänd metod som gör att Facebook gillar, Google + 1 och antalet Tweets på en sida och utvärderar dess popularitet på sociala medier .

Använda JAVA-implementeringen av Data Envelopment Analysis

I DataEnvelopmentAnalysisExempel klass I ger två olika exempel på hur man använder koden.

Det första exemplet använder direkt DEA-metoden för att utvärdera effektiviteten hos organisationsenheter baserat på deras utdata (FRÅGOR, MOTTAG, REQS) och input (LAGER, LÖN) Detta exempel togs från en artikel från 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 andra exemplet använder vår sociala medie popularitetsapplikation för att utvärdera en sidas popularitet med hjälp av data från sociala medier som Facebook Likes, Google + 1 och Tweets. Alla sociala medier räknas som utdata och vi skickar en tom inmatningsvektor till 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ödvändiga utvidgningar

Den angivna koden är bara ett exempel på hur DEA kan användas som en rankningsalgoritm. Här är några utvidgningar som måste göras för att förbättra implementeringen:

1. Påskynda genomförandet

Det specifika DEA-genomförandet utvärderar DEA-poängen för alla poster i databasen. Detta gör implementeringen långsam eftersom vi behöver lösa så många linjära programmeringsproblem som antalet poster i databasen. Om vi ​​inte behöver beräkna poängen för alla poster kan vi påskynda körningen avsevärt. Således kan en liten expansion av algoritmen ge oss bättre kontroll över vilka poster som ska lösas och vilka som endast ska användas som begränsningar.

2. Utöka databasen för sociala medier

Den tillhandahållna Social Media Counts Database består av 1111 prover från Web SEO Analytics-index. För att kunna uppskatta en mer exakt popularitetspoäng krävs ett större urval. Du kan skapa din egen databas genom att uppskatta antalet sociala medier från fler sidor på webben.

3. Lägga till fler sociala medier

Implementeringen använder Facebook Likes, Google + 1 och antalet tweets för att utvärdera en artikels popularitet. Ändå kan mått från andra sociala medianätverk lätt tas med i beräkningen. Allt du behöver göra är att bygga en databas med antalet sociala medier från de nätverk som du är intresserad av och utöka SocialMediaPopularity-klassen för att hantera dem därefter.

Slutliga kommentarer om genomförandet

För att kunna utöka implementeringen måste du ha en god förståelse för hur Analys av datahöljen Arbetar. Detta beskrivs i föregående artikel, så se till att du läser självstudien innan du fortsätter med några ändringar. Dessutom måste du ha installerat lp_solve-biblioteket (se ovan) för att kunna använda JAVA-koden.

Om du använder implementeringen i ett intressant projekt släpp oss en rad och vi kommer att presentera ditt projekt på vår blogg. Om du gillar artikeln kan du också ta en stund och dela den på Twitter eller Facebook.

Tidsstämpel:

Mer från Datumbox