Medindo a popularidade de páginas nas mídias sociais com DEA em JAVA PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Medindo a popularidade da mídia social de páginas com DEA em JAVA

No artigo anterior, discutimos sobre o Análise de envoltório de dados técnica e vimos como ela pode ser usada como um algoritmo de classificação não paramétrico eficaz. Nesta postagem do blog, desenvolveremos uma implementação de Análise de Envoltória de Dados em JAVA e a usaremos para avaliar a Popularidade das Mídias Sociais de páginas e artigos na web. O código é de código aberto (sob licença GPL v3) e você pode baixá-lo gratuitamente em Github.

Atualização: O Datumbox Machine Learning Framework agora é de código aberto e gratuito para download. Confira o pacote com.datumbox.framework.algorithms.dea para ver a implementação da Análise de Envelopamento de Dados em Java.

Implementação de análise de envoltória de dados em JAVA

O código é escrito em JAVA e pode ser baixado diretamente de Github. Ele é licenciado sob a GPLv3, então fique à vontade para usá-lo, modificá-lo e redistribuí-lo livremente.

O código implementa o Análise de envoltório de dados algoritmo, usa o biblioteca lp_solve para resolver os problemas de Programação Linear e usa dados extraídos de Análise de SEO na Web índice a fim de construir uma métrica composta de popularidade de mídia social para páginas da web com base em seus compartilhamentos no Facebook, Google Plus e Twitter. Todas as partes teóricas do algoritmo são abordadas no artigo anterior e no código-fonte você pode encontrar comentários detalhados do javadoc sobre a implementação.

Abaixo, fornecemos uma descrição de alto nível da arquitetura da implementação:

1. biblioteca lp_solve 5.5

Para resolver os vários problemas de programação linear, usamos uma biblioteca de código aberto chamada lp_solve. A lib em particular é escrita em ANSI C e usa um wrapper JAVA para invocar os métodos da biblioteca. Portanto, antes de executar o código, você deve instalar lp_solve em seu sistema. Binários da biblioteca estão disponíveis tanto para Linux e Windows e você pode ler mais informações sobre a instalação em documentação lp_solve.

Certifique-se de que a biblioteca específica está instalada em seu sistema antes de tentar executar o código JAVA. Para qualquer problema relacionado à instalação e configuração da biblioteca, consulte a documentação lp_solve.

2. Classe DataEnvelopmentAnalysis

Esta é a principal classe de implementação do algoritmo DEA. Ele implementa um método público denominado estimativaEficiência () que obtém um mapa de registros e retorna suas pontuações DEA.

3. Objeto DeaRecord

O DeaRecord é um objeto especial que armazena os dados do nosso cadastro. Como o DEA requer a separação da entrada e da saída, o Objeto DeaRecord armazena nossos dados separadamente de uma maneira que o DEA possa manipulá-los.

4. Classe SocialMediaPopularity

O SocialMediaPopularity é um aplicativo que usa DEA para avaliar a popularidade de uma página nas redes de mídia social com base em seus likes no Facebook, Google + 1s e Tweets. Ele implementa dois métodos protegidos, o calculadorPopularity () e o estimadoPercentiles (), junto com dois métodos públicos, o loadFile () e o getPopularity ().

O CalculatorPopularity () usa a implementação DEA para estimar as pontuações das páginas com base em suas contagens de mídia social. O método quotePercentiles () obtém as pontuações DEA e as converte em percentis. Em geral, os percentis são mais fáceis de explicar do que as pontuações DEA; portanto, quando dizemos que a pontuação de popularidade de uma página é 70%, significa que a página específica é mais popular do que 70% das páginas.

Para poder estimar a popularidade de uma página específica, devemos ter um conjunto de dados com as contagens de mídia social de outras páginas. Isso faz sentido, pois para prever qual página é popular e qual não é, você deve ser capaz de compará-la com outras páginas na web. Para fazer isso, usamos uma pequena amostra anônima do índice Web SEO Analytics fornecido em formato txt. Você pode construir seu próprio banco de dados extraindo as contagens de mídia social de mais páginas na web.

O método loadFile () é usado para carregar as estatísticas mencionadas no DEA e o método getPopularity () é um método fácil de usar que obtém os likes do Facebook, Google + 1s e o número de Tweets de uma página e avalia sua popularidade nas redes sociais .

Usando a implementação JAVA do Data Envelopment Analysis

Na classe DataEnvelopmentAnalysisExample, forneço 2 exemplos diferentes de como usar o código.

O primeiro exemplo usa diretamente o método DEA para avaliar a eficiência das unidades organizacionais com base em sua saída (ISSUES, RECEIPTS, REQS) e entrada (STOCK, WAGES). Este exemplo foi tirado de um artigo 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());

O segundo exemplo usa nosso aplicativo de popularidade de mídia social para avaliar a popularidade de uma página usando dados de mídia social, como curtidas no Facebook, Google + 1s e tweets. Todas as contagens de mídia social são marcadas como saída e passamos para a DEA um vetor de entrada vazio.

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

Expansões Necessárias

O código fornecido é apenas um exemplo de como o DEA pode ser usado como um algoritmo de classificação. Aqui estão algumas expansões que devem ser feitas a fim de melhorar a implementação:

1. Acelerando a implementação

A implementação de DEA específica avalia as pontuações de DEA de todos os registros no banco de dados. Isso torna a implementação lenta, pois precisamos resolver tantos problemas de programação linear quanto o número de registros no banco de dados. Se não exigirmos o cálculo da pontuação de todos os registros, podemos acelerar a execução significativamente. Assim, uma pequena expansão do algoritmo pode nos dar melhor controle sobre quais registros devem ser resolvidos e quais devem ser usados ​​apenas como restrições.

2. Expandindo o banco de dados de contagens de mídia social

O banco de dados de contagens de mídia social fornecido consiste em 1111 amostras do índice Web SEO Analytics. Para poder estimar uma pontuação de popularidade mais precisa, uma amostra maior é necessária. Você pode criar seu próprio banco de dados estimando as contagens de mídia social de mais páginas da web.

3. Adicionando mais redes de mídia social

A implementação usa os likes no Facebook, os + 1s do Google e o número de tweets para avaliar a popularidade de um artigo. No entanto, as métricas de outras redes de mídia social podem ser facilmente levadas em consideração. Tudo o que você precisa fazer é construir um banco de dados com as contagens de mídia social das redes nas quais você está interessado e expandir a classe SocialMediaPopularity para lidar com elas de acordo.

Comentários finais sobre a implementação

Para ser capaz de expandir a implementação, você deve ter um bom entendimento de como Análise de envoltório de dados funciona. Isso é abordado no artigo anterior, portanto, certifique-se de ler o tutorial antes de prosseguir com qualquer alteração. Além disso, para usar o código JAVA, você deve ter instalado em seu sistema a biblioteca lp_solve (veja acima).

Se você usar a implementação em um projeto interessante -nos uma linha cair e apresentaremos seu projeto em nosso blog. Além disso, se você gostou do artigo, por favor, reserve um momento e compartilhe no Twitter ou Facebook.

Carimbo de hora:

Mais de Caixa de dados