Descubra a idade do usuário VK ou o que mais o gráfico social pode dizer

"Diga-me quem é seu amigo e eu direi quem você é."
Eurípides 480-406 aC e

Durante muito tempo, olhei para a API VK como um gato em uma máquina de lavar - fiquei hipnotizado com a oportunidade de realizar algum tipo de pesquisa em uma das maiores redes sociais, que penetrava muitas áreas de nossas vidas. E uma vez que uma pergunta nasceu, é possível determinar sua idade pelo círculo social de um usuário de uma rede social?




Para aqueles que queriam conhecer a idade oculta, havia um pequeno truque antes. Você só precisa usar a pesquisa por pessoas, especificar parâmetros estreitos para que o perfil desejado caia na SERP e, em seguida, use a pesquisa binária para determinar a faixa etária. Ou acontece que as informações de contato indicam repentinamente o ano da graduação. E você não precisa escrever nenhum script. Mas a idade oculta e as informações indiretas podem ser distorcidas, e o mais importante é que o artigo ainda não trata de como obter mais informações pessoais. O artigo propõe analisar um dos aspectos do gráfico social.

Uma das primeiras coisas que vem à mente ao considerar as conexões de perfil: vamos ver a idade dos colegas e colegas de classe; na grande maioria dos usuários, esse usuário terá + - 1 ano. Por isso, graças ao ensino médio universal. Há apenas uma ressalva: identificar colegas de classe. Quanto mais o tempo passa da formatura, mais começamos a girar em círculos mais manchados. Os amigos da escola parecem estar em uma vida passada, e agora eles estão quase imperceptivelmente entre um grande número de novos amigos. É possível que perfis de pessoas em idade madura compreendam de alguma forma qual fluxo eles estudaram e, portanto, aproximam a idade?

Então, vejamos a tarefa de determinar a idade de um usuário como determinando um subconjunto de colegas e colegas de classe. Ou seja, partimos do pressuposto de que ele tem nos amigos um certo número de colegas de classe, cuja idade corresponde aproximadamente à idade do perfil. Claro que existem exceções, mas são raras. Uma pessoa vai à escola de sino em sino por 10 anos, durante esse período muitos contatos inter-sociais foram estabelecidos. Em resumo, todos se conhecem, enquanto a idade espalhada nesse emaranhado social é mínima. No futuro, quando uma pessoa se junta a outros grupos, como regra geral, a idade espalhada neles é significativa, seja trabalho, atividade esportiva ou clube de interesse. Com base nessa diferença, tentaremos identificar os grupos sociais necessários.

Vamos dar uma olhada em um dos perfis da VK com muitos amigos. Obteremos a lista de amigos do usuário usando a consulta friends.get. Consideraremos perfis apenas com a idade especificada e os colocaremos na linha do tempo na forma de um histograma por ano. Há uma ligeira nuance de como dividir muitos amigos em intervalos anuais. Afinal, queremos garantir que os colegas de classe entrem em um intervalo e não se espalhem por dois vizinhos. Foi experimentalmente encontrado que quebrar o ano é o melhor no outono e que os usuários com datas de nascimento na estação amarela entram imediatamente em dois intervalos adjacentes. Ou seja, intervalos de 15 meses de setembro a novembro são obtidos em incrementos de 12 meses.

oX é a idade dos usuários, oY é o número de usuários que se enquadram em um determinado intervalo.

Observamos um platô de cinco anos com um número máximo anual de amigos. Não é de todo óbvio encontrar um grupo de colegas nesse período de 5 anos. Na verdade, essa imagem não é típica. Mais frequentemente, o ano de nascimento de colegas / colegas de classe se destaca dos demais por um número maior de amigos. Mas vamos num caso difícil para cada usuário encontrar a proporção de amizades dentro do grupo anual e o número de conexões com outros amigos do usuário original, para quem determinamos a idade; então calculamos a média desse indicador para cada ano. Chamamos isso de coeficiente normalizado de conectividade.

oX é a idade dos usuários, oY é o coeficiente normalizado de conectividade para um determinado intervalo.

A imagem mudou e os líderes têm um único ano. Uma equipe com uma idade uniforme tem uma grande participação nela; portanto, temos o direito de esperar que, uma vez que o usuário faça parte dela, ele tenha uma idade semelhante. Mas e se uma pessoa nesse coletivo desempenhar um papel especial, por exemplo, não um colega de classe, mas um professor? De fato, no caso de professores / treinadores, pode haver subgrupos com alta densidade de conexões em um intervalo de idade restrito. Em parte, esse caso pode ser tratado se, ao escolher um grupo, não com a maior conectividade, mas com a maior idade entre os grupos com uma conectividade suficientemente grande. Em outras palavras, use a lógica de que uma pessoa em seu caminho de vida deve primeiro ser um aluno comum e só depois desempenhar um papel distinto em "equipes com idade uniforme".

Uma descrição mais detalhada e algumas fórmulas
Expresse detectado numericamente no fenômeno gráfico. Deixe F0 denotar o conjunto de amigos do usuário para quem a idade é calculada. Fi - muitos amigos de qualquer perfil. Fi, y é o conjunto de amigos de perfil com uma data de nascimento especificada no intervalo anual y. Então , i, y é a conexão do perfil i no intervalo y :

Ci,y= frac|F0 capFi,y||F0 capFi|


y é o coeficiente de conectividade não normalizado no intervalo y para todos os perfis:

Cy= sumiF0,yCi,y


E, finalmente, o ano desejado de nascimento:

 DeclareMathOperator argmaxargmaxano of birth= argmaxy( fracCy|F0,y|):Cy geq0,7 maxy emY(Cy)



Havia também uma idéia para considerar a que tipo essa ou aquela conexão pertence. Se o tipo de conexão for de amigos da escola ou da universidade, considere-os com aumento de peso. E se o tipo de colega, parentes e tudo mais, não leve em consideração essas relações em geral. No entanto, se você usar solicitações que baixam essas informações, o tempo de espera aumentará em um fator de 5. Além disso, a especificação do tipo de conexão não é uma prática popular; portanto, decidiu-se solicitar essas informações apenas para perfis com poucos amigos.

A partir do algoritmo acima, seguem os limites naturais de aplicabilidade da abordagem para determinar a idade. Se o usuário não sofre de nostalgia por seus anos escolares e não tem amigos de seus colegas de classe, precisamos usar outro método.

Que tal tentar essa bagunça nos negócios? Um serviço de quadrinhos foi implementado no grupo VK “Fortune Teller of the Age” . Lá, um bot amigável perderá a idade se você soltar um link em um perfil VK não fechado usando o algoritmo acima.

Como o serviço é organizado
O primeiro link no trabalho do adivinho é o mecanismo de mensagem do grupo VK. Nas configurações do grupo, a API de retorno de chamada é conectada ao seu próprio servidor. À medida que o evento enviado for digitado, selecione "Mensagem recebida". Dessa forma, a mensagem do grupo se transforma em uma solicitação em nosso servidor. Se você não é amigo do frontend como eu, então esta é uma super opção. Em seguida, a partir do servidor, a API VK é chamada com solicitações users.get para o perfil em questão e friends.get para amigos do perfil com uma data de nascimento conhecida. Sua implementação requer acesso a aplicativos VK de token. Eu não usei solicitações que exigem confirmação dos direitos do usuário, para não carregar pessoas com solicitações de permissão de acesso. Após o cálculo da idade estimada, é formada uma resposta à solicitação do grupo e o usuário do vidente vê a resposta nas caixas de diálogo. Barato e alegre.

Quanto à melhoria do próprio algoritmo, nada impede que você vá ainda mais longe, coletando um conjunto de dados de treinamento de perfis com uma idade especificada e treinando um modelo de regressão baseado em, por exemplo, uma matriz de adjacência de um gráfico de idade entre amigos de perfil. Estou certo de que, com uma amostra suficientemente grande, os resultados serão mais precisos que as heurísticas. Como mencionei acima, eu estava curioso para verificar a idéia fundamental, por isso não pretendo desenvolver essa direção.

Concluindo, gostaria de abordar o aspecto da ética. Na minha opinião, o “Fortune Teller of the Age” está na fronteira da vida privada, mas ainda não o atravessa, porque usa dados abertos para análise. Na verdade, portanto, para usuários com um perfil oculto, o serviço não funcionará.

Há um sentimento de que todos os tipos de "adivinhos da idade", como os mecanismos de pesquisa, o SearchFace são apenas os primeiros sinais de um mundo socialmente transparente. Até certo ponto, isso pode ser chamado de retorno ao básico. O homem existiu por muito tempo em sociedades pequenas, onde todos se viam. Uma reputação aberta era parte integrante do mecanismo de regulação social. Sim, novas ferramentas gradualmente tornarão possível refazer as interações sociais de uma pessoa em plena vista, somente agora em nível global. Sim, como qualquer ferramenta, pode ser usada em detrimento. Preciso torná-los acessíveis a todos? Eu não sei Mas tenho certeza de que, se essas ferramentas estiverem disponíveis apenas para um círculo limitado de pessoas, o equilíbrio para o uso construtivo definitivamente não mudará.

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


All Articles