"Katakan siapa temanmu dan aku akan memberitahumu siapa dirimu."
Euripides 480-406 SM e.
Untuk waktu yang lama saya memandang API VK seperti kucing di mesin cuci - saya terhipnotis oleh kesempatan untuk melakukan semacam penelitian di salah satu jejaring sosial terbesar, yang merambah banyak area kehidupan kita. Dan begitu sebuah pertanyaan muncul, apakah mungkin untuk menentukan usianya oleh lingkaran sosial pengguna jejaring sosial?

Bagi mereka yang ingin mengetahui usia yang tersembunyi, ada peretasan kecil sebelumnya. Anda hanya perlu menggunakan pencarian oleh orang-orang, tentukan parameter sempit sehingga profil yang diinginkan jatuh ke dalam SERP, dan kemudian gunakan pencarian biner untuk menentukan rentang usia. Atau ternyata informasi kontak tiba-tiba menunjukkan tahun kelulusan. Dan Anda tidak perlu menulis skrip apa pun. Tetapi usia yang tersembunyi dan informasi tidak langsung dapat terdistorsi, dan yang paling penting artikel ini masih bukan tentang cara mendapatkan lebih banyak informasi pribadi. Artikel ini mengusulkan untuk menganalisis salah satu aspek dari grafik sosial.
Salah satu hal pertama yang terlintas dalam pikiran ketika mempertimbangkan koneksi profil: mari kita lihat usia teman sekelas dan teman sekelas, di sebagian besar pengguna ini akan memiliki usia + - 1 tahun. Untuk ini, berkat pendidikan menengah universal. Hanya ada satu peringatan: identifikasi teman sekelas. Semakin banyak waktu berlalu dari kelulusan, semakin banyak kita mulai berputar di lingkaran yang lebih berbintik-bintik. Teman-teman sekolah tampaknya berada di kehidupan lampau, dan sekarang mereka hampir tak terlihat di antara sejumlah besar teman baru. Apakah mungkin bagi profil orang usia dewasa untuk entah bagaimana memahami aliran apa yang mereka pelajari dan, oleh karena itu, perkiraan usia?
Jadi, mari kita lihat tugas menentukan usia pengguna sebagai menentukan subset dari teman sekelas dan teman sekelas. Artinya, kami mengambil anggapan bahwa ia memiliki teman dalam sejumlah teman sekelas, yang usianya kira-kira sesuai dengan usia profil. Tentu saja ada pengecualian, tetapi jarang. Seseorang pergi ke sekolah dari bel ke bel selama 10 tahun, selama periode ini banyak kontak lintas sosial telah dibangun. Singkatnya, semua orang mengenal satu sama lain, sementara usia yang menyebar dalam keributan sosial ini sangat minim. Di masa depan, ketika seseorang bergabung dengan kelompok lain, sebagai suatu peraturan, usia yang menyebar di dalamnya adalah signifikan, apakah itu pekerjaan, kegiatan olahraga atau klub minat. Berdasarkan perbedaan ini, kami akan mencoba mengidentifikasi kelompok sosial yang diperlukan.
Mari kita lihat salah satu profil VK dengan banyak teman. Kami akan mendapatkan daftar teman pengguna menggunakan permintaan friends.get. Kami akan mempertimbangkan profil hanya dengan usia yang ditentukan dan menempatkannya pada timeline dalam bentuk histogram berdasarkan tahun. Ada sedikit nuansa dengan cara memecah banyak teman ke dalam interval tahunan. Bagaimanapun, kami ingin memastikan bahwa teman sekelas memasuki satu interval, dan tidak tersebar di dua interval yang berdekatan. Secara eksperimental ditemukan bahwa melanggar tahun adalah yang terbaik di musim gugur, dan sehingga pengguna dengan tanggal lahir di musim kuning masuk langsung ke dalam dua interval yang berdekatan. Artinya, interval 15 bulan dari September hingga November diperoleh secara bertahap 12 bulan.

oX adalah usia pengguna, oY adalah jumlah pengguna yang termasuk dalam interval tertentu.
Kami mengamati dataran tinggi lima tahun dengan jumlah teman tahunan maksimum. Sama sekali tidak jelas untuk menemukan sekelompok teman di antara periode 5 tahun ini. Sebenarnya, gambaran seperti itu tidak khas. Lebih sering, tahun kelahiran teman sekelas / teman sekelas menonjol dari yang lain oleh sejumlah besar teman. Tetapi mari dalam kasus yang sulit untuk setiap pengguna menemukan rasio pertemanan dalam kelompok tahunan dengan jumlah koneksi dengan teman-teman lain dari pengguna asli, untuk siapa kita menentukan usia; maka kami rata-rata indikator ini untuk setiap tahun. Kami menyebutnya koefisien konektivitas yang dinormalisasi.

oX adalah usia pengguna, oY adalah koefisien konektivitas yang dinormalisasi untuk interval yang diberikan.
Gambaran telah berubah, dan para pemimpin memiliki satu tahun. Tim dengan usia seragam memiliki andil besar di dalamnya, oleh karena itu kami berhak berharap bahwa karena pengguna adalah bagian dari itu, maka ia memiliki usia yang sama. Tetapi bagaimana jika seseorang dalam kelompok ini memainkan beberapa peran khusus, misalnya, bukan teman sekelas, tetapi seorang guru? Memang, untuk kasus guru / pelatih, mungkin ada subkelompok dengan kepadatan koneksi yang tinggi dalam interval usia yang sempit. Sebagian, kasus ini dapat ditangani jika, ketika memilih grup, bukan dengan konektivitas tertinggi, tetapi dengan usia tertinggi di antara grup dengan konektivitas yang cukup besar. Dengan kata lain, gunakan logika bahwa seseorang di jalur hidupnya pertama-tama harus menjadi siswa biasa, dan baru kemudian memainkan peran penting dalam "tim dengan usia yang seragam".
Deskripsi yang lebih terperinci dan beberapa rumusEkspresikan secara numerik terdeteksi pada fenomena grafik. Biarkan
F0 menunjukkan set teman pengguna yang umurnya dihitung.
Fi - banyak teman dari profil apa pun.
Fi, y adalah himpunan teman-teman profil yang memiliki tanggal lahir yang ditentukan dalam interval tahunan y. Kemudian
i, y adalah koneksi profil
i dalam interval
:
y adalah koefisien konektivitas non-normal dalam interval y untuk semua profil:
Dan akhirnya, tahun kelahiran yang diinginkan:
Ada juga ide untuk mempertimbangkan jenis koneksi apa ini atau itu milik. Jika jenis koneksi adalah teman sekolah atau universitas, maka pertimbangkan mereka dengan peningkatan berat badan. Dan jika tipe kolega, kerabat dan yang lainnya, maka jangan memperhitungkan hubungan seperti itu secara umum. Namun, jika Anda menggunakan permintaan yang mengunduh informasi seperti itu, waktu tunggu akan meningkat dengan faktor 5. Selain itu, menentukan jenis koneksi bukan praktik yang populer, jadi diputuskan untuk meminta informasi tersebut hanya untuk profil dengan beberapa teman.
Dari algoritma di atas, batas alami penerapan pendekatan untuk menentukan usia mengikuti. Jika pengguna tidak menderita nostalgia selama tahun-tahun sekolahnya, dan ia tidak memiliki teman dari teman sekelasnya, maka kita harus menggunakan metode lain.
Bagaimana kalau mencoba kekacauan ini dalam bisnis? Layanan komik diimplementasikan dalam grup VK
"Fortune Teller of the Age" . Di sana, bot yang bersahabat akan kehilangan usia jika Anda menjatuhkan tautan ke profil VK yang tidak tertutup menggunakan algoritma di atas.
Bagaimana pengaturan layanannyaTautan pertama dalam karya peramal itu adalah mekanisme pesan dari kelompok VK. Dalam pengaturan grup, API panggilan balik terhubung ke server sendiri. Saat jenis acara terkirim, pilih "Pesan masuk". Dengan cara ini, pesan grup berubah menjadi permintaan di server kami. Jika Anda tidak berteman dengan frontend seperti saya, maka ini adalah opsi super. Kemudian, dari server, VK API dipanggil dengan pengguna. Dapatkan permintaan untuk profil yang dimaksud dan teman. Dapatkan teman dari profil dengan tanggal lahir yang diketahui. Implementasinya membutuhkan akses aplikasi token VK. Saya tidak menggunakan permintaan yang memerlukan konfirmasi hak pengguna, agar tidak memuat orang dengan permintaan izin akses. Setelah perhitungan perkiraan usia dibuat, respons terhadap permintaan dari grup terbentuk, dan pengguna peramal melihat jawaban dalam dialog. Murah dan ceria.
Adapun untuk meningkatkan algoritma itu sendiri, tidak ada yang mencegah Anda melangkah lebih jauh, mengumpulkan dataset pelatihan dari profil dengan usia yang ditentukan dan melatih model regresi berdasarkan, katakanlah, matriks kedekatan dari grafik usia di antara teman-teman profil. Saya yakin bahwa dengan sampel yang cukup besar, hasilnya akan lebih akurat daripada heuristik. Seperti yang saya sebutkan di atas, saya penasaran untuk memeriksa ide mendasar, jadi saya tidak berencana untuk mengembangkan arah ini.
Kesimpulannya, saya ingin menyentuh pada aspek etika. Menurut pendapat saya, "Fortune Teller of the Age" ada di perbatasan kehidupan pribadi, tetapi masih tidak melewatinya, karena menggunakan data terbuka untuk analisis. Sebenarnya, oleh karena itu, untuk pengguna dengan profil tersembunyi, layanan tidak akan berfungsi.
Ada perasaan bahwa segala macam "peramal usia", seperti mesin pencari, SearchFace hanyalah tanda-tanda pertama dari dunia yang transparan secara sosial. Sampai batas tertentu, ini bisa disebut kembali ke dasar-dasar. Manusia sudah lama ada di masyarakat kecil, di mana setiap orang saling memandang. Reputasi terbuka adalah bagian integral dari mekanisme regulasi sosial. Ya, alat baru secara bertahap akan memungkinkan untuk membuat kembali interaksi sosial seseorang dalam tampilan penuh, hanya sekarang di tingkat global. Ya, seperti alat apa pun, alat ini dapat digunakan dengan merugikan. Apakah saya perlu membuatnya dapat diakses oleh semua orang? Saya tidak tahu. Tetapi saya yakin bahwa jika alat semacam itu hanya tersedia untuk kalangan terbatas orang, maka keseimbangan menuju penggunaan yang konstruktif pasti tidak akan berubah.