O livro "Mineração de dados. Recuperando informações do Facebook, Twitter, LinkedIn, Instagram, GitHub »

imagem Oi, habrozhiteli! Nas entranhas das redes sociais populares - Twitter, Facebook, LinkedIn e Instagram - os mais ricos depósitos de informações estão ocultos. Neste livro, pesquisadores, analistas e desenvolvedores aprenderão como extrair esses dados exclusivos usando código Python, um contêiner Jupyter Notebook ou Docker. Primeiro, você se familiarizará com a funcionalidade das redes sociais mais populares (Twitter, Facebook, LinkedIn, Instagram), páginas da web, blogs e feeds, email e GitHub. Em seguida, inicie a análise de dados usando o exemplo do Twitter. Leia este livro para:

  • Aprenda sobre o cenário moderno das redes sociais;
  • Aprenda a usar o Docker para operar facilmente com os códigos fornecidos no livro;
  • Aprenda como adaptar e entregar código ao repositório aberto do GitHub;
  • Aprenda a analisar os dados coletados usando os recursos do Python 3;
  • Domine técnicas avançadas de análise, como TFIDF, similaridade de cosseno, análise de colocação, detecção de cliques e reconhecimento de padrões;
  • Aprenda a criar belas visualizações de dados usando Python e JavaScript.

Trecho. 4.3 Uma breve introdução às técnicas de agrupamento de dados


Agora que temos uma idéia de como acessar a API do LinkedIn, abordaremos uma análise específica e discutiremos o agrupamento em detalhes. considerado essencial em qualquer conjunto de ferramentas de análise de dados. O algoritmo de agrupamento pega uma coleção de elementos e os divide em coleções menores (clusters) de acordo com algum critério projetado para comparar os elementos na coleção.

O clustering é um método fundamental de análise de dados, para que você possa obter uma imagem mais completa dele, este capítulo inclui notas de rodapé e notas que descrevem o aparato matemático subjacente a ele. É bom se você tentar entender esses detalhes, mas para usar com êxito os métodos de cluster, você não precisará entender todas as sutilezas e, é claro, não precisará compreendê-las pela primeira vez. Você pode precisar pensar um pouco para digerir algumas informações, especialmente se você não tiver treinamento matemático.

Por exemplo, se você estiver pensando em mudar para outra cidade, tente combinar os contatos do LinkedIn por região geográfica para avaliar melhor as oportunidades econômicas disponíveis. Voltaremos a essa idéia um pouco mais tarde, mas por enquanto discutiremos brevemente algumas das nuances associadas ao agrupamento.

Ao implementar soluções para os problemas de agrupar dados do LinkedIn ou de outras fontes, você encontrará repetidamente pelo menos dois tópicos principais (uma discussão sobre o terceiro é apresentada na barra lateral "O papel da redução de dimensionalidade no agrupamento" abaixo).

Normalização de dados
Mesmo se você usar uma API muito boa, os dados raramente são fornecidos no formato que você precisa - geralmente é necessário mais do que uma simples conversão para trazer os dados para um formato adequado para análise. Por exemplo, os usuários do LinkedIn permitem certas liberdades ao descrever suas postagens, portanto nem sempre é possível obter descrições perfeitamente normais. Um gerente pode escolher o nome "diretor técnico chefe", outro - o nome mais ambíguo "TRP", e o terceiro pode descrever a mesma posição de alguma maneira diferente. Abaixo, retornaremos ao problema de normalização de dados e implementaremos um modelo para processar certos aspectos nos dados do LinkedIn.

Definição de afinidade
Tendo um conjunto de elementos bem normalizados, você pode avaliar a semelhança de dois deles, sejam nomes de cargos ou empresas, descrições de interesses profissionais, nomes geográficos ou quaisquer outros campos cujos valores possam ser representados em texto arbitrário. Para fazer isso, você precisa definir uma heurística que avalie a semelhança de dois valores. Em algumas situações, a definição de similaridade é bastante óbvia, mas em outras pode ser repleta de algumas dificuldades.

Por exemplo, comparar o tempo total de serviço de duas pessoas é realizado por simples operações de adição, mas comparar características profissionais mais amplas, como "habilidades de liderança", de uma maneira totalmente automatizada, pode ser um grande desafio.

O papel da redução da dimensionalidade no agrupamento


Normalização de dados e determinação de similaridade são dois tópicos principais que você encontrará no armazenamento em cluster em um nível abstrato. Mas há um terceiro tópico - a redução da dimensionalidade, que se torna relevante assim que a escala dos dados deixa de ser trivial. Para agrupar elementos em um conjunto usando uma métrica de similaridade, idealmente é desejável comparar cada elemento com qualquer outro elemento. Nesse caso, no pior cenário, para um conjunto de n elementos, você terá que calcular o grau de similaridade aproximadamente n 2 vezes para comparar cada um dos n elementos com n –1 outros elementos.

Na ciência da computação, essa situação é chamada de problema da complexidade quadrática e geralmente é denotada como O (n 2 ) ; nas conversas, costuma ser chamado de "problema do crescimento quadrático de O grande". Os problemas O (n 2 ) tornam-se insolúveis para valores n muito grandes e, na maioria dos casos, o termo insolúvel significa que você precisa esperar "muito tempo" para que a solução seja computada. “Muito longo” - pode levar minutos, anos ou épocas, dependendo da natureza da tarefa e de suas limitações.

Uma revisão dos métodos de redução de dimensionalidade está além do escopo da discussão atual, portanto, apenas observamos que um método típico de redução de dimensionalidade envolve o uso de uma função para organizar elementos "bastante semelhantes" em um número fixo de grupos, para que os elementos em cada grupo possam ser totalmente considerados semelhantes. A redução de dimensão geralmente não é apenas uma ciência, mas também uma arte, e geralmente é considerada informação confidencial ou segredo comercial pelas organizações que a utilizam com sucesso para obter uma vantagem competitiva.

Os métodos de clustering são a parte principal do arsenal de ferramentas de qualquer especialista em análise de dados, porque em quase todos os setores - da inteligência militar ao design de bancos e paisagismo - você pode precisar analisar uma quantidade realmente enorme de dados relacionais não padronizados e o crescimento no número de vagas de especialistas de acordo com anos anteriores são uma evidência clara disso.

Como regra, uma empresa cria um banco de dados para coletar qualquer informação, mas nem todos os campos podem conter valores de um conjunto predefinido. Isso pode dever-se à lógica incompleta da interface do usuário do aplicativo, à incapacidade de pré-determinar todos os valores aceitáveis ​​ou à necessidade de fornecer aos usuários a capacidade de inserir qualquer texto que desejarem. Seja como for, o resultado é sempre o mesmo: você obtém uma grande quantidade de dados não padronizados. Mesmo que em um determinado campo no total de N valores diferentes de cadeias possam ser armazenados, alguns deles realmente significam o mesmo conceito. Duplicatas podem ocorrer por vários motivos - devido a erros de ortografia, uso de abreviações ou abreviações, além de diferentes registros de caracteres.

Como mencionado acima, essa é uma situação clássica que surge ao analisar dados do LinkedIn: os usuários podem inserir suas informações em formato de texto livre, o que inevitavelmente leva a um aumento nas variações. Por exemplo, se você decidir pesquisar sua rede profissional e determinar onde a maioria dos seus contatos funciona, será necessário considerar as opções mais usadas para escrever nomes de empresas. Mesmo os nomes mais simples das empresas podem ter várias opções que você certamente encontrará (por exemplo, "Google" - uma forma abreviada de "Google, Inc."), e será necessário considerar todas essas opções para trazê-las para um formulário padrão. Ao padronizar nomes de empresas, um bom ponto de partida pode ser normalizar abreviações em nomes como LLC e Inc.

4.3.1 Normalização de dados para análise


Como uma introdução necessária e útil ao estudo dos algoritmos de clustering, consideramos algumas situações típicas que você pode encontrar ao resolver o problema de normalizar dados do LinkedIn. Nesta seção, implementamos um modelo padrão para normalizar a empresa e os cargos. Como um exercício mais avançado, também discutiremos brevemente a questão da desambiguação e geocodificação de nomes de lugares em um perfil do LinkedIn. (Ou seja, tentaremos converter nomes de lugares dos perfis do LinkedIn, como "Área da Grande Nashville", em coordenadas que podem ser mapeadas.)

O principal resultado dos esforços para normalizar os dados é a capacidade de levar em consideração e analisar recursos importantes e usar métodos avançados de análise, como clustering. No caso de dados do LinkedIn, estudaremos recursos como postagens e localizações geográficas.

Normalização e contagem de empresas


Vamos tentar padronizar os nomes das empresas da sua rede profissional. Como descrito acima, você pode extrair dados do LinkedIn de duas maneiras principais: programaticamente, usando a API do LinkedIn ou o mecanismo de exportação de uma rede profissional na forma de um catálogo de endereços, que inclui informações básicas como nome, cargo, empresa e informações de contato.

Imagine que já temos um arquivo CSV com contatos exportados do LinkedIn e agora podemos normalizar e exibir as entidades selecionadas, como mostra o Exemplo 4.4.

Conforme descrito nos comentários nos exemplos, você precisa renomear o arquivo CSV com os contatos exportados do LinkedIn, seguindo as instruções na seção “Fazendo o download do arquivo de informações de contato no LinkedIn” e copiando-o para um diretório específico onde o código do programa pode encontrá-lo.

Exemplo 4.4 Normalização simples de abreviações nos nomes das empresas


import os import csv from collections import Counter from operator import itemgetter from prettytable import PrettyTable #    LinkedIn: https://www.linkedin.com/psettings/member-data. #  , LinkedIn       , #    .      # resources/ch03-linkedin/. CSV_FILE = os.path.join("resources", "ch03-linkedin", 'Connections.csv') #   ,    #  .     #     . transforms = [(', Inc.', ''), (', Inc', ''), (', LLC', ''), (', LLP', ''), (' LLC', ''), (' Inc.', ''), (' Inc', '')] companies = [c['Company'].strip() for c in contacts if c['Company'].strip() != ''] for i, _ in enumerate(companies): for transform in transforms: companies[i] = companies[i].replace(*transform) pt = PrettyTable(field_names=['Company', 'Freq']) pt.align = 'l' c = Counter(companies) [pt.add_row([company, freq]) for (company, freq) in sorted(c.items(), key=itemgetter(1), reverse=True) if freq > 1] print(pt) 

A seguir, são apresentados os resultados de uma análise de frequência simples:

imagem

O Python suporta a capacidade de passar argumentos para funções desreferenciando uma lista e / ou dicionário, o que às vezes é muito conveniente, como mostra o Exemplo 4.4. Por exemplo, chamar f (* args, ** kw) é equivalente a chamar f (1, 7, x = 23), onde args é definido como uma lista de argumentos [1,7] e kw como um dicionário {'x': 23}. Outras dicas de programação do Python podem ser encontradas no Apêndice B.

Lembre-se de que, para lidar com situações mais complexas, por exemplo, para normalizar nomes diferentes da mesma empresa que foram alterados ao longo do tempo, como O'Reilly Media, você precisará escrever um código mais complexo. Nesse caso, o nome desta empresa pode ser representado como O'Reilly & Associates, O'Reilly Media, O'Reilly, Inc. ou apenas O'Reilly [Se lhe parece que há grandes dificuldades, imagine o tipo de trabalho que os especialistas da Dun & Bradstreet tiveram que realizar (http://bit.ly/1a1m4Om), especializado em catalogar informações e enfrentar a tarefa de compilar e acompanhado por um registro com nomes de empresas em vários idiomas do mundo . ]

Sobre autores


Matthew Russell (@ptwobrussell) é um dos principais especialistas do Médio Tennessee. No trabalho, ele tenta ser um líder, ajuda os outros a se tornarem líderes e cria equipes altamente eficazes para resolver problemas complexos. Fora do trabalho, ele reflete sobre a realidade, pratica o individualismo pronunciado e se prepara para o apocalipse zumbi e a rebelião de máquinas.

Mikhail Klassen, @MikhailKlassen é especialista sênior em processamento e análise de dados na Paladin AI, uma empresa iniciante que cria tecnologias adaptativas de aprendizado. Ele é PhD em astrofísica pela McMaster University e bacharel em física aplicada pela Columbia University. Michael gosta de problemas de inteligência artificial e do uso de ferramentas de análise de dados para bons propósitos. Quando não funciona, geralmente lê ou viaja.

»Mais informações sobre o livro podem ser encontradas no site do editor
» Conteúdo
» Trecho

Cupom de 25% de desconto para vendedores ambulantes - Data Mining

Após o pagamento da versão impressa do livro, um livro eletrônico é enviado por e-mail.

Source: https://habr.com/ru/post/pt466729/


All Articles