Averigüe la edad del usuario de VK o qué más puede decir el gráfico social

"Dime quién es tu amigo y te diré quién eres".
Eurípides 480-406 a. C. e.

Durante mucho tiempo miré a API VK como un gato en una lavadora; me hipnotizó la oportunidad de realizar algún tipo de investigación en una de las redes sociales más grandes, que penetró en muchas áreas de nuestras vidas. Y una vez que nació una pregunta, ¿es posible determinar su edad por el círculo social de un usuario de una red social?




Para aquellos que querían conocer la edad oculta, hubo un pequeño hack antes. Solo necesita usar la búsqueda por personas, especificar parámetros estrechos para que el perfil deseado caiga en el SERP, y luego usar la búsqueda binaria para determinar el rango de edad. O resulta que la información de contacto de repente indica el año de graduación. Y no necesita escribir ningún guión. Pero la edad oculta y la información indirecta pueden distorsionarse, y lo más importante es que el artículo todavía no trata sobre cómo obtener más información personal. El artículo propone analizar uno de los aspectos del gráfico social.

Una de las primeras cosas que viene a la mente al considerar las conexiones de perfil: veamos la edad de los compañeros y compañeros de clase, en la gran mayoría este usuario tendrá una edad de + - 1 año. Por esto, gracias a la educación secundaria universal. Solo hay una advertencia: identificar compañeros de clase. Cuanto más tiempo pasa desde la graduación, más comenzamos a rotar en círculos más moteados. Los amigos de la escuela parecen estar en una vida pasada, y ahora están casi imperceptiblemente entre una gran cantidad de nuevos amigos. ¿Es posible que los perfiles de personas de edad madura entiendan de alguna manera qué flujo estudiaron y, por lo tanto, la edad aproximada?

Entonces, veamos la tarea de determinar la edad de un usuario como determinar un subconjunto de compañeros y compañeros de clase. Es decir, asumimos que tiene en amigos un cierto número de compañeros de clase, cuya edad corresponde aproximadamente a la edad del perfil. Por supuesto que hay excepciones, pero son raras. Una persona va a la escuela de campana a campana durante 10 años, durante este período se han establecido muchos contactos inter-sociales. En resumen, todos se conocen, mientras que la edad en este enredo social es mínima. En el futuro, cuando una persona se une a otros grupos, por regla general, la edad en ellos es importante, ya sea en el trabajo, la actividad deportiva o un club de interés. En base a esta diferencia, trataremos de identificar los grupos sociales necesarios.

Echemos un vistazo a uno de los perfiles de VK con muchos amigos. Obtendremos la lista de amigos del usuario utilizando la consulta friends.get. Consideraremos los perfiles solo con la edad especificada y los colocaremos en la línea de tiempo en forma de histograma por año. Hay un ligero matiz sobre cómo dividir a muchos amigos en intervalos anuales. Después de todo, queremos asegurarnos de que los compañeros de clase entren en un intervalo y no se extiendan entre dos vecinos. Se descubrió experimentalmente que romper el año es mejor en el otoño, por lo que los usuarios con fechas de nacimiento en la temporada amarilla ingresan inmediatamente en dos intervalos adyacentes. Es decir, se obtienen intervalos de 15 meses de septiembre a noviembre en incrementos de 12 meses.

oX es la edad de los usuarios, oY es el número de usuarios que se encuentran dentro de un intervalo dado.

Observamos una meseta de cinco años con un número máximo anual de amigos. No es del todo obvio encontrar un grupo de pares entre este período de 5 años. En verdad, esa imagen no es típica. Más a menudo, el año de nacimiento de los compañeros / compañeros de clase se destaca de los demás por un mayor número de amigos. Pero, en un caso difícil para cada usuario, encontremos la proporción de amistades dentro del grupo anual con respecto al número de conexiones con otros amigos del usuario original, para quienes determinamos la edad; entonces promediamos este indicador para cada año. Llamamos a esto el coeficiente normalizado de conectividad.

oX es la edad de los usuarios, oY es el coeficiente de conectividad normalizado para un intervalo dado.

La imagen ha cambiado, y los líderes tienen un solo año. Un equipo con una edad uniforme tiene una gran participación, por lo tanto, tenemos el derecho de esperar que, dado que el usuario es parte de él, tenga una edad similar. Pero, ¿qué pasa si una persona en este colectivo desempeña un papel especial, por ejemplo, no un compañero de clase, sino un maestro? De hecho, para el caso de maestros / formadores, puede haber subgrupos con una alta densidad de conexiones en un intervalo de edad estrecho. En parte, este caso puede manejarse si, al elegir un grupo, no con la conectividad más alta, sino con la edad más alta entre los grupos con una conectividad suficientemente grande. En otras palabras, use la lógica de que una persona en su camino de vida debe ser primero un estudiante ordinario, y solo entonces desempeñar un papel distinguido en "equipos con una edad uniforme".

Una descripción más detallada y algunas fórmulas.
Expresar numéricamente detectado en el fenómeno gráfico. Deje F0 denotar el conjunto de amigos del usuario para quienes se calcula la edad. Fi : muchos amigos de cualquier perfil. Fi, y es el conjunto de amigos de perfil que tienen una fecha de nacimiento específica en el intervalo anual y. Entonces i, y es la conexión del perfil i en el intervalo :

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


y es el coeficiente de conectividad no normalizado en el intervalo y para todos los perfiles:

Cy= sumF0,yiCi,y


Y finalmente, el año de nacimiento deseado:

 DeclareMathOperator argmaxargmaxaño of birth= argmaxy( fracCy|F0,y|):Cy geq0.7 maxy enY(Cy)



También hubo una idea de considerar a qué tipo pertenece esta o aquella conexión. Si el tipo de conexión son amigos de la escuela o la universidad, considérelos con mayor peso. Y si el tipo de colega, parientes y todo lo demás, entonces no tenga en cuenta tales relaciones en general. Sin embargo, si utiliza solicitudes que descargan dicha información, el tiempo de espera aumentará en un factor de 5. Además, especificar el tipo de conexión no es una práctica popular, por lo que se decidió solicitar dicha información solo para perfiles con pocos amigos.

Del algoritmo anterior, siguen los límites naturales de aplicabilidad del enfoque para determinar la edad. Si el usuario no sufre nostalgia por sus años escolares y no tiene amigos de sus compañeros de clase, entonces debemos usar otro método.

¿Qué tal probar este desastre en los negocios? Se implementó un servicio de historietas en el grupo VK "Adivino de la Era" . Allí, un bot amigable perderá edad si sueltas un enlace a él en un perfil VK no cerrado usando el algoritmo anterior.

¿Cómo se organiza el servicio?
El primer enlace en el trabajo del adivino es el mecanismo de mensajes del grupo VK. En la configuración del grupo, la API de devolución de llamada está conectada a su propio servidor. A medida que el evento enviado escriba, seleccione "Mensaje entrante". De esta manera, el mensaje grupal se convierte en una solicitud en nuestro servidor. Si no eres amigo de la interfaz como yo, entonces esta es una super opción. Luego, desde el servidor, se llama a la API de VK con users.get solicitudes para el perfil en cuestión y friends.get para amigos del perfil con una fecha de nacimiento conocida. Su implementación requiere aplicaciones de token VK de acceso. No utilicé solicitudes que requieren la confirmación de los derechos del usuario, para no cargar a las personas con solicitudes de permiso de acceso. Después de realizar el cálculo de la edad estimada, se forma una respuesta a la solicitud del grupo y el usuario adivino ve la respuesta en los cuadros de diálogo. Barato y alegre.

En cuanto a mejorar el algoritmo en sí mismo, nada le impide ir más allá: recopilar un conjunto de datos de entrenamiento de perfiles con una edad específica y entrenar un modelo de regresión basado, por ejemplo, en una matriz de adyacencia de un gráfico de edad entre amigos de perfil. Estoy seguro de que con una muestra suficientemente grande, los resultados serán más precisos que la heurística. Como mencioné anteriormente, tenía curiosidad por comprobar la idea fundamental, por lo que no planeo desarrollar esta dirección.

En conclusión, me gustaría tocar el aspecto de la ética. En mi opinión, el "adivino de la época" está en el límite de la vida privada, pero aún no lo cruza, porque utiliza datos abiertos para el análisis. En realidad, por lo tanto, para los usuarios con un perfil oculto, el servicio no funcionará.

Existe la sensación de que todo tipo de "adivinos de la edad", como los motores de búsqueda, SearchFace son solo los primeros signos de un mundo socialmente transparente. Hasta cierto punto, esto se puede llamar un retorno a lo básico. El hombre existió durante mucho tiempo en sociedades pequeñas, donde todos se veían mutuamente. Una reputación abierta era una parte integral del mecanismo de regulación social. Sí, las nuevas herramientas permitirán gradualmente volver a hacer las interacciones sociales de una persona a la vista, solo ahora a nivel global. Sí, como cualquier herramienta, puede usarse en detrimento. ¿Necesito hacerlos accesibles para todos? No lo se Pero estoy seguro de que si tales herramientas están disponibles solo para un círculo limitado de personas, entonces el equilibrio hacia el uso constructivo definitivamente no cambiará.

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


All Articles