Misurare la popolarità delle pagine sui social media con DEA in JAVA PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Misurazione della popolarità dei social media delle pagine con DEA in JAVA

Nel precedente articolo abbiamo discusso del Analisi dell'inviluppo dei dati tecnica e abbiamo visto come può essere utilizzato come efficace algoritmo di classificazione non parametrica. In questo post del blog svilupperemo un'implementazione dell'analisi dell'involucro dei dati in JAVA e la utilizzeremo per valutare la popolarità dei social media di pagine Web e articoli sul Web. Il codice è di origine aperta (con licenza GPL v3) e puoi scaricarlo liberamente da Github.

Aggiornamento: Datumbox Machine Learning Framework è ora open-source e gratuito scaricare. Dai un'occhiata al pacchetto com.datumbox.framework.algorithms.dea per vedere l'implementazione di Data Envelopment Analysis in Java.

Implementazione dell'analisi dell'inviluppo dei dati in JAVA

Il codice è scritto in JAVA e può essere scaricato direttamente da Github. È concesso in licenza in GPLv3, quindi sentitevi liberi di usarlo, modificarlo e ridistribuirlo liberamente.

Il codice implementa il Analisi dell'inviluppo dei dati algoritmo, utilizza il libreria lp_solve per risolvere i problemi di Programmazione Lineare e utilizza i dati estratti da Analisi SEO web indice al fine di costruire una metrica composita della popolarità dei social media per le pagine Web basata sulle loro condivisioni su Facebook, Google Plus e Twitter. Tutte le parti teoriche dell'algoritmo sono trattate nell'articolo precedente e nel codice sorgente è possibile trovare commenti javadoc dettagliati relativi all'implementazione.

Di seguito forniamo una descrizione di alto livello dell'architettura dell'implementazione:

1. libreria lp_solve 5.5

Per risolvere i vari problemi di programmazione lineare, utilizziamo una libreria open source chiamata lp_solve. La particolare libreria è scritta in ANSI C e utilizza un wrapper JAVA per richiamare i metodi della libreria. Pertanto, prima di eseguire il codice, è necessario installare lp_solve sul proprio sistema. I binari della libreria sono disponibili sia per Linux e Windows e puoi leggere ulteriori informazioni sull'installazione su documentazione lp_solve.

Assicurati che la libreria specifica sia installata sul tuo sistema prima di provare a eseguire il codice JAVA. Per qualsiasi problema riguardante l'installazione e la configurazione della libreria, consultare la documentazione di lp_solve.

2. Classe DataEnvelopmentAnalysis

Questa è la classe principale dell'implementazione dell'algoritmo DEA. Implementa un metodo pubblico chiamato estimEfficiency () che prende una mappa dei record e restituisce i loro punteggi DEA.

3. Oggetto DeaRecord

Il DeaRecord è un oggetto speciale che memorizza i dati del nostro record. Poiché DEA richiede di separare input e output, l'oggetto DeaRecord memorizza i nostri dati separatamente in modo che DEA possa gestirli.

4. Classe SocialMediaPopularity

SocialMediaPopularity è un'applicazione che utilizza DEA per valutare la popolarità di una pagina sulle reti di social media in base ai suoi Mi piace di Facebook, Google + 1 e Tweet. Implementa due metodi protetti calcolaPopularity () e estimPercentiles () insieme a due metodi pubblici loadFile () e getPopularity ().

CalcolaPopolarità () utilizza l'implementazione DEA per stimare i punteggi delle pagine in base al conteggio dei loro social media. Il metodo stimPercentiles () ottiene i punteggi DEA e li converte in percentili. In generale i percentili sono più facili da spiegare dei punteggi della DEA; quindi quando diciamo che il punteggio di popolarità di una pagina è del 70% significa che la pagina particolare è più popolare del 70% delle pagine.

Per poter stimare la popolarità di una determinata pagina, è necessario disporre di un set di dati con i conteggi dei social media di altre pagine. Questo ha senso dal momento che per prevedere quale pagina è popolare e quali no, devi essere in grado di confrontarla con altre pagine sul web. Per fare ciò, utilizziamo un piccolo campione anonimo dall'indice Web SEO Analytics fornito in formato txt. È possibile creare il proprio database estraendo i conteggi dei social media da più pagine sul Web.

Il metodo loadFile () viene utilizzato per caricare le statistiche di cui sopra su DEA e il metodo getPopularity () è un metodo facile da usare che ottiene i Mi piace di Facebook, Google + 1 e il numero di Tweet di una pagina e ne valuta la popolarità sui social media .

Utilizzo dell'implementazione JAVA di Data Envelopment Analysis

Nella classe DataEnvelopmentAnalysisExample fornisco 2 diversi esempi di come utilizzare il codice.

Il primo esempio utilizza direttamente il metodo DEA per valutare l'efficienza delle unità organizzative in base al loro output (EMISSIONI, RICEVUTE, REQS) e input (STOCK, WAGES). Questo esempio è stato preso da un articolo di 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());

Il secondo esempio utilizza la nostra applicazione per la popolarità dei social media per valutare la popolarità di una pagina utilizzando i dati dei social media come Mi piace di Facebook, Google + 1 e tweet. Tutti i conteggi dei social media sono contrassegnati come output e passiamo alla DEA un vettore di input vuoto.

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

Espansioni necessarie

Il codice fornito è solo un esempio di come DEA può essere usato come algoritmo di classificazione. Ecco alcune espansioni che devono essere fatte per migliorare l'implementazione:

1. Accelerare l'attuazione

La particolare implementazione DEA valuta i punteggi DEA di tutti i record nel database. Ciò rallenta l'implementazione poiché è necessario risolvere tanti problemi di programmazione lineare quanti sono i dati nel database. Se non richiediamo il calcolo del punteggio di tutti i record, possiamo velocizzare notevolmente l'esecuzione. Quindi una piccola espansione dell'algoritmo può darci un migliore controllo su quali record dovrebbero essere risolti e quali dovrebbero essere usati solo come vincoli.

2. Espansione del database dei conteggi dei social media

Il database dei conteggi dei social media fornito è costituito da 1111 campioni dall'indice Web SEO Analytics. Per poter stimare un punteggio di popolarità più accurato, è necessario un campione più ampio. Puoi creare il tuo database stimando il numero dei social media da più pagine del web.

3. Aggiunta di più reti di social media

L'implementazione utilizza i Mi piace di Facebook, i Google + 1 e il numero di Tweet per valutare la popolarità di un articolo. Tuttavia, le metriche di altre reti di social media possono essere facilmente prese in considerazione. Tutto quello che devi fare è costruire un database con i conteggi dei social media dalle reti che ti interessano ed espandere la classe SocialMediaPopularity per gestirli di conseguenza.

Commenti finali sull'attuazione

Per poter espandere l'implementazione è necessario avere una buona conoscenza di come Analisi dell'inviluppo dei dati lavori. Questo è trattato nell'articolo precedente, quindi assicurati di leggere il tutorial prima di procedere a qualsiasi modifica. Inoltre, per utilizzare il codice JAVA devi aver installato nel tuo sistema la libreria lp_solve (vedi sopra).

Se si utilizza l'implementazione in un progetto interessante scriveteci e presenteremo il tuo progetto sul nostro blog. Inoltre, se ti piace l'articolo, ti preghiamo di dedicare un momento e condividerlo su Twitter o Facebook.

Timestamp:

Di più da Databox