[Case Locomizer] Pengetahuan apa yang sebenarnya bisa diekstraksi dari dataset anonim dengan koordinat pengguna

Artikel ini adalah bagian dari seri Case Locomizer, lihat juga

Halo

KDPV: Peta panas yang dibangun oleh algoritma Locomizer untuk KFC

Baru-baru ini, The New York Times menerbitkan artikel yang sensasional tentang cara melacak pengguna dengan set data anonim yang tersedia secara komersial dengan koordinat gerakan mereka, dan di sini, di Habré, terjemahan gratisnya dengan tambahan dari copywriter perusahaan yang tidak dikenal mengumpulkan sejumlah besar komentar dari berbagai tingkat kepedulian.

Kebetulan selama dua setengah tahun terakhir saya telah menjadi pemimpin teknis dalam proyek geoinformasi yang berkaitan dengan tugas untuk secara langsung mengekstraksi pengetahuan dari set data komersial yang tepat. Tapi komentar saya dengan permintaan untuk mengesampingkan kepanikan mengumpulkan banyak minus. Baiklah kalau begitu. Dalam perkataan tentang tidak adanya paranoia dan bukan fakta bahwa Anda tidak diikuti, ada sejumlah kebenaran.

Tetapi ada beberapa kebenaran di sisi lain dari cermin hitam, mungkin lebih banyak. Atau menarik.

Jadi, izinkan saya memberi tahu Anda secara rinci bagaimana kami mengikuti (dan apakah kami mengikuti dalam arti spionase) Anda (dan apakah Anda secara pribadi), dan pengetahuan seperti apa tentang pengguna yang dapat diperoleh tanpa memiliki konteks apa pun selain koordinat gerakannya. dikumpulkan dari terminal pelanggan seluler . Tanpa jurnalisme dan kerakusan berlebihan, dari sudut pandang seorang spesialis teknis yang memiliki pengalaman nyata dalam menyelesaikan tugas-tugas fiktif bagi pelanggan fiksi, termasuk tidak hanya berbagai agen periklanan, Coca-Cola dan Guinness, tetapi juga, misalnya, PBB. Dan dengan binar .

Apalagi! Di akhir seri artikel ini, saya ingin berbagi alat yang telah kami kembangkan selama dua setengah tahun sehingga Anda dapat melakukan riset sendiri jika Anda membeli (atau mendapatkan) dataset yang sesuai. Sampai sekarang, sejauh yang saya tahu, tidak ada yang membuat alat seperti itu tersedia untuk umum. Paling tidak, ketika kami mencari dua tahun lalu, tidak ada yang ditemukan, dan kami harus menulis sendiri. Jalan menuju penghitungan cepat itu sulit dan panjang, bagian kedua akan membahasnya.

Jadi Daftar isi anamnesis ini:

  • Anatomi dataset anonim
  • Masalah akurasi koordinat di strip tengah
  • Heuristik untuk membersihkan data dari kebisingan dan kotoran
  • "Pengetahuan" macam apa itu?
  • Tempat menarik
  • Masalah Ekstraksi Pengetahuan
  • Penilaian Minat Pengguna

Bonus:

  • Terima kasih dan FAQ singkat

Anatomi dataset anonim


Ambil penyedia komersial Tamoco dan lihat file mana yang dikirimkannya. Sebagai contoh, di sini adalah sepotong dataset nyata dari negara Inggris Raya dan Irlandia Utara, tanggal 4 Desember 2019:

sdk_ts,device_id,latitude,longitude,accuracy,country,device_type,device_make,device_model,device_language,device_os,device_os_version,device_hw_version,device_screen_width,device_screen_height,device_battery,altitude,inv_id,trigger_type,app_account_id 1575390011,d75f97488c430502046fdb4ebfcc0ffd,51.516766,-0.1279744,10,GB,,,SM-G950W,en-CA,,,,0,0,0,0,4260328,GEO_FENCE_ENTER,115 1575414847,d75f97488c430502046fdb4ebfcc0ffd,51.516766,-0.1279821,10,GB,,,SM-G950W,en-CA,,,,0,0,0,0,4260328,GEO_FENCE_ENTER,115 1575424373,7e3323b382ddaafb9f774af95631cc44,51.51379,-0.0999953,7.6,GB,,,SM-G925F,en-GB,,,,0,0,0,0,31572218,GEO_FENCE_ENTER,115 1575417663,90165d78553fb37b0d62500733b39d11,53.724384,-6.879851,11,IE,aaid,,SM-A605FN,,android,9,,0,0,0,138,0,UNKNOWN_TRIGGER,229 1575417977,b6f2375275a21c40e03e4c6ea9ea4da0,52.75558,-7.9915,5,IE,idfa,,iPhone7.1,,ios,12.4.3,,0,0,0,122,0,UNKNOWN_TRIGGER,229 

Inilah yang kami lihat di bidang dataset ini:

  • sdk_ts - cap waktu di Unix Epoch ,
  • device_id - ID perangkat anonim (terminal pelanggan seluler, seperti smartphone atau tablet),
  • lintang / bujur - koordinat geografis ,
  • akurasi - akurasi koordinat horisontal, meter,
  • negara - negara
  • bidang yang tersisa adalah sampah yang tidak membawa muatan semantik khusus.

Kenapa sampah segera?

Sayangnya, bidang ketinggian yang tampaknya bermanfaat seperti itu tidak ada artinya, karena ketinggian diterjemahkan dengan buruk ke nomor lantai bangunan, dan terbang dengan pesawat dapat dihilangkan tanpa itu (tetapi kita akan membicarakannya nanti).

Berbeda dengan jurnalis dari artikel yang ditunjukkan di awal, kami tidak memiliki konteks tambahan tentang pengguna, dan kami tidak membuat asumsi yang tidak berdasar "secara default", seperti "ada di Pentagon - itu artinya, ia berfungsi di Pentagon". Kami juga bukan semacam facebook yang tahu segalanya tentang Anda yang Anda ceritakan tentang diri Anda (dan rata-rata pengguna banyak bercerita tentang diri Anda), ditambah seluruh grafik sosial Anda. Kami membeli data mentah, dan kami tidak mempercayainya.

Jadi dari konteksnya hanya ada lokal pengguna - ini dapat membantu mengidentifikasi turis asing, tetapi ini tidak akurat.

Nah, selain koordinat dan waktu, ada juga model telepon - secara teoritis, ini membuka kemungkinan pemrosesan individual pemilik berbagai perangkat di iOS dan Andriod. Dalam komentar pada artikel dari blog korporat itu, beberapa orang menyarankan untuk gop-stop dengan ponsel yang sangat mahal, melacak mereka dengan geolokasi ... Hmm, Anda tahu, tetapi model bisnis seperti itu untuk kantor normal yang mampu membeli data akan agak tidak menguntungkan :)
Penting untuk memahami bahwa data dari pemasok berasal dari bahan mentah, yaitu, diambil dari perangkat dan tidak diproses dengan cara apa pun, kecuali, mungkin, mengganti device_id yang sebenarnya dengan hash sesuai dengan persyaratan GDPR (stabil, perangkat yang sama akan disajikan di antara tempat pembuangan bulanan yang berbeda sama).

Setiap vendor memiliki kumpulan dan format bidangnya sendiri, tetapi setiap orang memiliki koordinat, akurasi, waktu , dan device_id, dan saya mengambil Tamoco sebagai contoh sebagai yang paling rata-rata. Dan apa yang dapat Anda asumsikan tentang pengguna yang melihat sederet data mentah jika seseorang tidak berurusan dengan sindiran dan peramalan dengan alasan kopi?

Kecuali, fakta bahwa dia, mungkin, pada waktu yang ditentukan, berada di suatu tempat dekat dengan koordinat yang ditunjukkan. Lebih tepatnya, ini diputuskan oleh beberapa perpustakaan dari SDK seseorang yang mengumpulkan geolokasi dalam aplikasi pada terminal pelanggannya dan mengunggah data ini ke agregator. Sepertinya dia ada di sana, tetapi keputusan terakhir, apakah percaya atau tidak, dibuat oleh kita, dan itu sangat jelas setelah fakta.

Masalah akurasi koordinat di strip tengah


GPS adalah hal yang luar biasa. Baru-baru ini ada artikel bagus tentang kemampuannya, pastikan untuk membaca, jika belum.

Itu semua contoh keren yang menceritakan kasus ideal, yang, sayangnya, tidak berlaku untuk dataset komersial.

Pertama, terminal pelanggan seluler dari dataset komersial sama sekali bukan penerima GPS profesional, yang dirancang untuk melayani satu tujuan, dan dibuat pada basis elemen yang jauh lebih cocok, dengan amplifier yang baik dan antena besar. Sebuah smartphone adalah smartphone - yaitu, komponen termurah yang dikemas dalam wadah kecil dengan antena kecil yang berfungsi berkat trik teknologi liar dalam beberapa rentang sekaligus, yang GPS-nya jauh dari yang utama.

Kedua, lingkungan perkotaan adalah medan yang sangat, sangat kasar. Pikirkan sendiri - jika Anda membuang pinggiran kota satu lantai Amerika, setiap jalan kota modern adalah jurang yang dalam dengan dinding yang sangat curam, tidak hanya bahwa cakrawala tidak terlihat, tetapi sepotong langit di atas kepala Anda terlihat sangat kecil. Dan untuk akurasi normal, Anda harus memiliki 4 satelit yang berhadapan langsung pada saat yang sama, lebih baik lagi. Demi menarik, entah bagaimana pergi ke halaman gedung tinggi Anda dan lihat berapa banyak satelit yang dilihat pintar Anda. (Kemungkinan besar, Anda akan membutuhkan android yang di-root dan / atau semacam GPS tracker berbayar.)

Ketiga, rata-rata pengguna terus bergerak, ia tidak menunggu di tempat selama beberapa menit, sampai terminal seluler pelanggannya menangkap jumlah satelit yang diperlukan, ia pergi atau pergi, berputar, dan jarak pandang terus berubah.

Keempat, pengguna tidak selalu memegang telepon di tangannya. Di saku, dompet, atau tas ransel, ia bisa berbaring miring atau bagaimanapun juga, dan tidak akan menangkap apa pun.

Kelima, setiap bangunan yang terbuat dari beton bertulang dapat berupa sangkar Faraday klasik atau array bertahap , atau cermin dengan sifat non-linear yang menarik, yang dapat memperkuat sinyal dan menekannya karena gangguan pada jarak tertentu. Atau memantulkan pada sudut yang tak terduga, pergeseran fasa, dan sebagainya. Itu semua tergantung pada nada logam di dinding beton.

Keenam, mobil-mobil di sekitarnya juga terbuat dari logam.

Ketujuh, jauh di dalam gedung GPS biasanya tidak menangkap, dan bahkan lebih di kereta bawah tanah.

Jalur mentah dari pengguna yang tidak dikenal berjalan di sekitar London

Semua faktor ini membuat GPS di kota ini sangat tidak bisa diandalkan, dan produsen terminal pelanggan seluler (serta penyedia layanan lokasi untuk OS seluler) harus keluar dengan berbagai teknologi GPS yang dibantu .

Yang paling umum adalah triangulasi pada BTS seluler dan jaringan WiFi (dan bahkan Bluetooth).

Semua mobil Google dan Yandex yang menggelikan ini dengan kamera yang memotret panorama untuk street view, pada kenyataannya, terutama mengumpulkan informasi tentang CellID, nama jaringan dan tingkat sinyal router, dan gambar - jadi, indulgensi yang lewat. Selain itu, HERE Maps mengumpulkan informasi ini secara massal - dan di negara-negara maju, Apple, dan selusin kantor kecil lainnya. Ya, perpustakaan yang terhubung dalam aplikasi seluler dan menyediakan data geolokasi terus-menerus melakukan hal yang persis sama, misalnya, seperti hampir semua widget yang menunjukkan peta.

Pertanyaan utama di sini adalah tepatnya.

Tidak seperti GPS, LBS buruk dengannya. 20 meter untuk LTE dalam kasus yang paling ideal (secara umum - hingga beberapa kilometer), dan untuk Wi-Fi, di sini pola arah router, jaringan mesh yang diperluas dengan repeater, dan karakteristik fisik dari sinyal frekuensi 2,4 dan 5 GHz mengurangi keandalan di luar ruangan hingga 150 meter atau lebih.

Dan ini adalah lompatan konstan pengguna ke sisi lain jalan atau persimpangan, atau bahkan setengah seperempat dari tempat dia sebenarnya - jika, misalnya, router berada di lantai 5, dan di sekitar ngarai dari gedung tinggi, maka tidak akan ada sinyal untuk ditangkap di pintu masuk, tetapi akan menangkap dengan sempurna di ujung ngarai ini.

Akhirnya, banyak pemasok berdosa dengan fitur buruk lainnya. Jika tidak mungkin untuk menentukan posisi dengan akurasi yang dapat diterima, pengguna akan dipindahkan ke pusat geofence tertentu - yaitu, ke pusat poligon yang sesuai dengan kode pos atau wilayah administrasi tertentu, diidentifikasi oleh tanda-tanda tidak langsung, dan peta akan penuh dengan "hot spot" dengan ribuan sinyal.

Lihat di bawah spoiler di bawah untuk penjelasan.
Moscow, Kremlin, dataset kecil mulai November 2019
Pada titik dengan koordinat (55.75270; 37.61720) yang ditandai dalam ilustrasi dengan spidol , segera ada 208.776 sinyal. Ini adalah poin yang belum ditentukan dengan akurasi dan jatuh ke "pusat" dari geofence yang sesuai dari Senat Square, itu adalah "pusat" dari Kremlin.

Selain dia, juga koordinat berikut ini terlalu "panas":

 (55.75222; 37.61556) 193 (55.75111; 37.61537) 53 (55.74988; 37.61701) 45 (55.74988; 37.61700) 36 

Dan di semua titik lain dari gambar ini - tepat satu sinyal.

Lebih buruk lagi, "pusat distrik" seperti itu di setiap substrat kartografi berbeda, dan jika Apple dan Google mencoba memindahkannya dari bangunan tempat tinggal (di Amerika Serikat ada preseden buruk dengan tuntutan hukum), maka tidak ada yang akan peduli dengan perubahan titik dari bangunan non-perumahan.

Menentukan posisi di dalam pusat perbelanjaan besar dengan luas ribuan meter persegi adalah rasa sakit tersendiri. GPS tidak menangkap, jaringan seluler untuk seluruh pusat biasanya sama, dan untuk memahami yang mana dari ratusan toko yang dikunjungi pengguna, Anda juga perlu menemukan lantai. Semoga beruntung dengan itu.

Sebenarnya, bahkan jika ada bidang ketinggian, tidak selalu jelas dengan geoid mana dihitung (tidak harus WGS84 ), dan Gambar tahu seberapa tinggi lantai di gedung itu untuk menghitung sendiri. Dan berapa jumlahnya? Di negara-negara Asia, karena takhayul, misalnya, tidak hanya 13, tetapi juga 4 lantai. Informasi seperti itu sangat sulit ditemukan, dan dengan pemrosesan massal, tenaga kerja tidak akan pernah berhasil.

Oleh karena itu, tidak peduli seberapa besar kita tidak menyukainya, kita harus menggunakan dataset mentah yang canggih

Heuristik untuk membersihkan data dari kebisingan dan kotoran


Tapi pertama-tama saya akan memberi tahu Anda siapa pasien kami.

Pasien kami anonim, dan namanya ribuan, atau lebih baik, jutaan, karena pelanggan kami membayar untuk statistik yang dikumpulkan secara massal. Orang tertentu tidak membuat cuaca untuk Coca-Cola, bahkan jika ia membeli truk soda sekaligus. Pedagang membutuhkan pola dan tren yang sama, serta gambaran tentang bagaimana mereka ditetapkan dari waktu ke waktu. Penting bagi pemilik jaringan pub London untuk mengetahui cuaca dan waktu apa hari mereka akan memiliki arus pengunjung di pub yang terletak di sudut dekat stasiun kereta bawah tanah, dan di mana - di sebelah bioskop, dan mereka benar-benar mabuk jika sampel ini berasal dari ribuan anonim Poupkine Vassily tertentu dari Ryazan, atau tidak.
Yang utama adalah bahwa ada banyak, dan mereka relevan. Kami bekerja dengan populasi .

Karena itu, misalnya, pengguna yang bepergian dengan mobil dan pengguna yang berjalan kaki adalah pengguna dengan nilai yang berbeda. Untuk yang pertama, semakin sempit lingkaran pandang, semakin tinggi kecepatan gerakan, dan mereka tidak akan memperhatikan poster. Tetapi jika mereka berdiri di tengah kemacetan, atau di lampu lalu lintas yang panjang, lalu mengapa tidak. Seperti halnya pengguna yang bepergian dengan bus, yang melihat-lihat, ini adalah pekerjaan utama (jika mereka tidak bodoh dalam jejaring sosial favorit mereka saat ini).

Penting juga untuk memisahkan pengguna yang bekerja di target geofence - penjual toko harus dipisahkan dari pengunjung toko yang sedang kita cari. Lebih tepatnya, seluruh populasi penjual dari semua toko di jaringan ritel dari seluruh populasi pembeli.

Dan semua ini berarti bahwa kita perlu memiliki trek yang berkualitas dengan cara berikut:

• tanpa akurasi koordinat yang rendah,

• tanpa geolokasi kesalahan:
- Teleport setengah seperempat ke samping dan belakang,
- melompat di seberang jalan,
- di luar hot spot

• diklasifikasikan berdasarkan jenis perpindahan:
- berjalan kaki
- dengan mobil
- di dalam bus
- dengan sepeda atau skuter,
- di Shinkansen atau di pesawat ...

• tanpa salah menempatkan pengguna di geofence,

• tanpa trek terpisah, memotong lingkaran tanpa henti di area kecil (dari mana asalnya, itu tidak sepenuhnya jelas, tetapi mereka cukup untuk memisahkannya menjadi kelas masalah yang terpisah - kemungkinan besar, ini semua jenis kunci dengan alarm GSM atau monitor bayi - mereka juga mengumpulkan geolokasi )

Dan jika kondisi pertama adalah sepele - beralih pada dataset dan membuang semua poin yang bidang akurasinya <10 meter, maka sisanya hanyalah sekelompok masalah.

Anda sendiri bisa menebak yang mana. Misalnya, bagaimana membedakan pejalan kaki yang menunggu di halte dari seorang pengemudi yang berdiri di kemacetan yang berdekatan?

Kami harus membuat beberapa asumsi, dan membangun model matematika untuk setiap filter tersebut, penuh dengan berbagai asumsi. Terkadang asumsi cukup kuat dalam hal menjatuhkan sebagian besar populasi.

Misalnya, penjual outlet di pusat perbelanjaan, bekerja secara bergiliran dua hari setiap hari. Jika pada hari kerja jelas tidak tepat, maka pada akhir pekan itu mungkin ditargetkan untuk bioskop di pusat perbelanjaan yang sama. Tapi leluconnya adalah bahwa jadwal standar dari Senin hingga Jumat dan dua hari libur tidak berlaku untuknya, dan penggolong itu harus entah bagaimana berhasil, atau benar-benar membuangnya dari persamaan.

Bagaimanapun, filter dengan banyak pengaturan menggunakan pendekatan heuristik dibangun untuk masing-masing model.

Kami mengumpulkan statistik besar, secara manual menemukan pola yang tidak diinginkan di dalamnya, merumuskan tugas, men-debug-nya secara interaktif, menulis pemrosesan terpisah, dan kemudian menanamkannya dalam pemrosesan dataset - jika kami yakin itu memerlukan persiapan semacam itu.

Ada sejumlah algoritma siap pakai. Misalnya, untuk menentukan titik panas, Anda dapat menggunakan filter klasik dengan frekuensi sinyal pada kisi.

Tetapi pengklasifikasi sesuai dengan jenis gerakan, bekerja pada prinsip jendela geser dan mesin negara (dengan coba-coba, kami menghabiskan hampir setengah tahun untuk pengembangannya), sangat canggih sehingga sudah tidak tepat untuk menyebutnya "filter".

Selain itu, beberapa pemasok menulis sejumlah titik yang tidak bertanggung jawab per lintasan - apakah mereka mendekati titik tengah pada interval di antara pengukuran, atau mereka hanya mencoba menghilangkannya setiap beberapa meter, tetapi ribuan sinyal diterima ketika berjalan per kilometer. Ini jelas terlalu banyak, dan agar tidak tenggelam dalam volume, kami terpaksa menipiskan trek menggunakan heuristik rumit lainnya dengan jendela geser dan matematika rumit untuk menghitung jarak dari semua titik trek ke centroid mereka.
Oleh karena itu, kami menyebut proses superimposisi rantai heuristik pada dataset asli dengan memperkaya data mentah . Dan kami mengekstrak pengetahuan dari data yang sebelumnya diperkaya.

Dan di sini ada kerumitan dengan heuristik: urutan aplikasi sangat mempengaruhi hasilnya. Oleh karena itu, proses pemrosesan setiap kali ternyata unik, dan tidak terlalu baik diulang bahkan pada data dari pemasok yang sama di wilayah yang sama, tetapi setelah enam bulan.

Dan satu hal lagi - Anda tidak dapat mencampur data mentah dari pemasok yang berbeda dalam satu proyek, bahkan jika Anda membawanya ke penyebut umum. Tetapi jika setiap dataset mentah diproses secara independen oleh algoritma yang sesuai untuknya, maka sinyal yang diperkaya (tanpa noise) sudah dapat digabung menjadi satu sumber. Kami tidak menemukan pengguna rangkap dalam data pemasok yang berbeda.

Bagaimanapun, beberapa pengetahuan dari dataset yang diperkaya selalu dapat diekstraksi jika Anda mencoba.

"Pengetahuan" macam apa itu?


Pertanyaan yang bagus

- Kita perlu menemukan semua pengguna dari Ust-Perduysk yang suka mencuri jagung segar dari ladang pertanian kolektif pada akhir Agustus.
- Permisi?
"Yah, itu ladang jagung." Agustus tahun lalu.
- Kami adalah tentang "mencuri" ...
- Tentukan entah bagaimana, Anda ahli!
- Ok Ada lagi?
- Mereka harus merokok Pall Mall.
- (untuk diriku sendiri) Mengapa Pall Mall ... meskipun, tidak peduli, kami tidak tertarik. Jika mereka muncul, maka kita akan menemukan: D (dengan keras, tegas) Hanya jika Anda memberikan info di mana mereka membelinya.

Anda mendengarkan dialog dengan pelanggan bulat dalam ruang hampa, meskipun tidak nyata dalam hal entitas "tinggal di Ust-Perduysk", "ladang jagung", "mencuri" dan merek rokok tertentu, tetapi pada dasarnya sepenuhnya otentik. Tugas-tugas diatur sedemikian rupa - Anda perlu menemukan populasi tertentu, dijelaskan dalam hal geofence dan perilaku pengguna, seperti tempat tinggal, mengunjungi kategori tempat tertentu pada waktu tertentu, dll. Kisaran tugas-tugas tersebut sangat luas, dan serangkaian parameter bisa sangat eksotis.

Tetapi jika ada beberapa jenis matmodel , maka menerapkan metode statistik pada sejumlah besar data yang diperkaya (yaitu, berkualitas tinggi, tanpa anomali), sangat mungkin untuk mendapatkan populasi yang cocok. Semua perkiraan akan probabilistik. Kami tidak dapat secara tegas menyatakan bahwa satu pengguna tinggal di Ust-Perduysk dan mencuri jagung setiap Agustus, tetapi jika setidaknya ada seribu dari mereka, kami akan menemukan mereka dengan probabilitas 90%. Mungkin kita juga bisa perokok, tetapi mengenai merek rokok, konteks tambahan mungkin diperlukan, dan jika pelanggan menyediakannya, kita akan menemukan yang tepat di antara mereka - tetapi kami tidak dapat menjamin keakuratannya.

Tetapi tugas-tugas semacam itu dengan konteks sebenarnya jarang, dan biasanya kami melakukan penelitian berdasarkan beberapa set standar model debug dan diuji yang mengurai populasi umum ke dalam segmen-segmen seperti:

  • tinggal di geofence / bekerja di geofence,
  • distribusi menurut tingkat pendapatan rumah tangga,
  • pengendara
  • kekasih untuk mengunjungi restoran dan kafe,
  • shopaholics
  • penggemar olahraga
  • ibu dengan anak kecil,
  • perjalanan bisnis
  • turis asing ...

Untuk setiap kategori (total beberapa ribu), proses pemrosesan dibangun sesuai dengan templat dari operasi yang telah ditentukan sebelumnya dengan sekelompok pengaturan, dan parameternya tergantung pada persyaratan spesifik pelanggan.

Operasi dikembangkan sebagai berikut: ilmuwan data menulis model dalam bentuk kertas putih, kemudian diprogram dan debugged pada dataset standar Python, dan pada akhirnya pemrosesan akan dilakukan dalam Spark (kami menulis di Jawa, tetapi juga dapat dilakukan di Scala), yang saya optimalkan.(Ya, sesuatu seperti di meme terkenal tentang menggambar burung hantu, bagaimanapun, itu akan lebih rinci di bagian kedua dari cerita saya.)

Template untuk proyek spesifik dari pelanggan tertentu sendiri dikumpulkan oleh orang yang terlatih khusus - analis data. Jika Anda ingin mengajukan pertanyaan kepadanya - tulis keskiy di komentar, dan Gena akan menjawab Anda. Ngomong-ngomong, dia sedang mempersiapkan presentasi visual final dalam bentuk peta panas atau tabel Excel yang besar dan indah, karena pelanggan, pada umumnya, tidak mengerti banyak megabyte kain kaki dari angka.

Ketika templat selesai, dataset diunggah ke S3 di Amazon Web Services, dan menggunakan sihir (yang akan saya jelaskan secara rinci dalam artikel ketiga dari seri ini), dataset diproses dalam layanan ESDM.

Yang penting - kami tidak pernah melakukan tugas mengidentifikasi atau menemukan orang tertentu, karena tidak ada matmodel kami bekerja pada sampel kecil. Sifat statistik dari semua heuristik kami mencegah kami bekerja dengan konteks titik, terlebih lagi, kami dengan sengaja membuang pengguna yang melampaui persentil ke-95, karena kecocokan yang terlalu bagus adalah pertanda markup yang mengkhawatirkan.

Pada peta panas, pengguna tersebut memberikan titik panas khusus. Saya akan memberikan contoh yang mungkin tampak anekdotal, tetapi ini benar-benar nyata.

Saya sendiri pernah secara tidak sengaja memanaskan poligon pada peta panas.
: . , , WB, Warner Bros., . , . .

- , , — , device_id, — , . . , .

-, .

Heuristik - lelucon seperti itu, bisa dibohongi. Hasilnya akan menjadi anekdotal. "Pengguna yang secara aktif tertarik pada pakaian dalam di toko online dikelompokkan di sini."

Tapi ini adalah kasus yang merosot. Dan kasus standar dihitung berdasarkan POI.

Tempat menarik


Swasta nyeri Shai tugas, yang secara terpisah terlibat orang dilatih khusus - menjaga database instansi dikategorikan dan atraksi, hotel dan monumen, kafe internet dan pelacuran ... dan titik-titik lain yang mungkin tarik dari populasi manusia.

Seperti yang saya katakan, kami memiliki ribuan kategori, yang mungkin termasuk satu atau beberapa tempat menarik untuk dikunjungi. Lebih tepatnya, pohon kategori. Ambil "77 kafe dan restoran":

 • 77-1  • 77-8  o 77-8-6      77-8-6-90 McDonalds • 77-8-6-90-1 MacAuto  77-8-6-91 Burger King  77-8-6-92 Pasta Hut 

- dan seterusnya.

Dalam setiap penyelesaian "perusahaan" seperti itu bisa ada dari tidak satu hingga ribuan, dan untuk masing-masing Anda perlu memelihara dan memperbarui direktori dengan koordinat, dan set lengkap kategori yang sesuai. Sebuah pusat perbelanjaan tiga lantai dengan ratusan toko, food court, dan bioskop adalah tempat di mana banyak POI dikonsentrasikan sekaligus dengan banyak kategori duplikat, tetapi satu alamat, dan dengan mempertimbangkan fakta bahwa poin-poin terbuka dan tertutup, tugas otomatis yang buruk untuk mempertahankan basis seperti itu berada di pundak peneliti.

Dan dengan mempertimbangkan fakta bahwa populasi dapat dipesan segera di tingkat prefektur, atau bahkan negara, ukuran basis POI untuk satu proyek dapat diperkirakan dalam jutaan titik dan puluhan kategori. Tapi pertama-tama Anda harus menerimanya. Dan bagus jika negara itu dikembangkan, atau dengan komunitas kartografer OSM yang aktif. Tidak selalu, jadi terkadang Anda harus berlari.

Dan jika seseorang memesan perhitungan pada dataset historis, maka Anda harus menemukan referensi POI, relevan beberapa tahun yang lalu, dan ini sama sekali bukan tugas yang ingin saya lakukan secara khusus. Nah, jika kita sudah memilikinya. Anda harus terus mengumpulkan arsip dari database seperti itu, tiba-tiba orang lain akan berguna.

Jika Anda tiba-tiba tertarik untuk memelihara basis POI, Anda dapat bertanya di komentar koordinator proyek Eugene mitra_kun .

Baiklah, katakanlah kita berhasil menemukan, atau membeli dari beberapa direktori-GIS lokal, basis data POI untuk wilayah untuk proyek kita berikutnya, dan menyortir kategori-kategori (yang mana pemasok mungkin secara radikal berbeda dalam organisasi dari kita). Sekarang kita perlu mengambil dataset yang diperkaya, basis ini, dan menghitung segmen populasi yang kita butuhkan.

Masalah Ekstraksi Pengetahuan


Anda dapat mencoba metode inovatif wartawan dari The New York Times - "Saya berada di Pentagon selama jam kerja, yang berarti bahwa itu adalah karyawan Pentagon." Tetapi jalan ini penuh dengan berbagai implikasi.

Apa itu "waktu kerja"? Saya telah menyebutkan kesalahpahaman bahwa jadwal kerja 5/2 cocok untuk semua orang, tetapi hari kerja 8 jam antara 9 dan 18 juga berlaku hanya untuk plankton kantor. Ini, paling-paling, menyediakan cakupan untuk sekitar setengah dari populasi target (penilaian empiris kami, yang telah disimpulkan dari praktik). Dan di samping jadwal "dua hari dalam satu hari" yang disebutkan, ada yang lain serta berbagai shift dari jenis pagi dan malam, di mana jam kerja sesuai dengan waktu tidur khas perwakilan populasi.

Situasi di pusat kota kota-kota besar seperti London, New York, atau Tokyo bahkan lebih menarik: ada banyak bangunan tipe campuran dengan kantor, hotel, dan apartemen, dan mudah untuk membagi populasi yang "hidup" di lingkungan seperti itu (yaitu , mereka tidur - di malam hari) dan “bekerja” (yaitu, mereka berada di siang hari dengan, mungkin, istirahat makan siang) cukup sulit. Dan kami, sebagaimana telah berulang kali saya tekankan, tidak memiliki konteks tambahan. Hanya koordinat dan waktu.

Tidak dapat dihindari, bagian penting dari populasi harus dikorbankan agar tidak mempersulit heuristik klasifikasi yang sudah canggih. Oleh karena itu, dataset awal harus memiliki volume yang cukup sehingga bahkan ketika menghilangkan sebagian besar, karakteristik hukum statistik dari set besar terus beroperasi di atasnya.

Sangat menarik untuk berurusan dengan masing-masing himpunan bagian yang tidak lazim secara manual, tetapi ini adalah proses yang panjang dan tidak berterima kasih, jadi kami jujur ​​berbicara tentang implikasi yang muncul, dan skor pada pengguna non-standar yang tidak cocok dengan model mayoritas. Oleh karena itu, iklan yang dirancang untuk konsumen massal tidak berfungsi seefektif setengah pemirsa sebagaimana mungkin jika menargetkannya ke seluruh populasi.

Nah, lokasi bertingkat. Di pekerja kantor yang sama di lantai yang berbeda, POI dari kategori yang ditargetkan untuk satu proyek dapat ditemukan. Misalnya, kantor gigi, perusahaan asuransi, mesin kebugaran. Dan dalam kategori apa menghitung kunjungan dua jam dari jenis konsumen, jika itu terjadi, misalnya, pada 29 Agustus? Apakah dia (atau dia) merawat giginya, menandatangani kontrak CASCO, atau apakah dia membeli keanggotaan gym pada akhir bulan? Kami tidak memiliki konteks apa pun, dan kami dapat melihat data selama berbulan-bulan untuk setidaknya mengungkap keanggotaan gym untuk kunjungan rutin, tetapi seringkali pesanan hanya untuk Agustus apa pun tanpa bulan September, dan hanya itu. Kami membuat asumsi bahwa dengan semua probabilitas ketiga opsi itu benar, dan kami memperhitungkan kecepatan tertentu untuk masing-masing kategori ini.

Penilaian Minat Pengguna


Sayangnya, saya tidak memiliki hak untuk berbicara secara rinci tentang matematika di balik kecepatan penghitungan, karena ini adalah pengetahuan yang dipatenkan di mana bisnis kami dibangun. Kami menggunakan matmodel yang berbeda dari semua perwakilan industri lainnya, yang telah keluar dari prasyarat biologis (pendiri proyek memiliki gelar doktor dalam bidang biologi), dan diuji secara eksperimental pada populasi berbagai organisme model, dari kultur sel hingga tikus, dan kemudian dimodifikasi untuk perilaku manusia.

Jika tanpa perincian, maka ketika menugaskan ambulans untuk satu kunjungan ke target geofence, kami memperhitungkan minat yang dimiliki perwakilan populasi untuk semua POI yang tersedia dari kategori yang dipilih. Misalkan seorang pencinta makdak, jika karena alasan tertentu ia tidak terikat dengan restoran tertentu, akan mengunjungi makdaki terutama, tetapi memotong raja burger. Dengan demikian, dengan tingkat positif dalam kategori "restoran cepat saji", itu akan memiliki tingkat positif yang lebih besar dalam kategori "McDonalds", yang lebih besar daripada tingkat negatif yang lebih kecil dalam kategori "Burger King".

Untuk satu pengguna yang dipilih, "total poin pengalaman" agak tidak berarti, dan bahkan mungkin terlihat acak, tetapi ketika jutaan pengguna menumpuk, keajaiban statistik terjadi - jumlah skor pada tingkat populasi dalam interval kepercayaan benar-benar mulai mencerminkan gambaran kepentingan populasi ini di semua POI dari kategori yang dipilih. Untuk memahami dengan tepat bagaimana ini terjadi, Anda perlu membaca disertasi yang sesuai - Saya bukan spesialis dalam biologi dan tidak bisa menilai secara profesional - tetapi kampanye iklan yang dilakukan oleh pelanggan kami dengan mempertimbangkan kepentingan populasi memberikan hasil yang jauh lebih baik daripada metode konvensional, digunakan dalam iklan dan pemasaran tradisional.

Yang lebih menarik lagi, ketika kita tidak hanya menghitung penjumlahan, tetapi mencakup seluruh peta dengan kisi yang seragam dan menghitung kategori kecepatan untuk sinyal yang diperhitungkan di setiap poligon kisi ini berdasarkan pada kepentingan pengguna yang memiliki sinyal yang direkam. Dalam gambar untuk menarik perhatian, salah satunya ditampilkan di awal artikel, tetapi sebenarnya hasil dari satu proyek adalah puluhan, atau bahkan ratusan peta seperti itu - untuk setiap kategori target dan segmen populasi.

Atau - tidak ada yang baik terjadi jika dataset terlalu kecil, berisik, tidak akurat, atau basis POI tidak dikompilasi dengan benar. Karena heuristik dan matmodel tidak lengkap, data harus cukup besar agar hasilnya dapat diandalkan.

Tetapi data besar sebenarnya bukan tentang ukuran.

Dan apa itu, dan bagaimana mereka muncul selama pemrosesan, akan dibahas di bagian selanjutnya. Jangan beralih, dalam beberapa hari saya akan berbicara tentang bagaimana kami membangun konveyor otomatis di cloud Amazon dari prototipe yang dipasang di lutut saya, dan belajar bagaimana menghitung terabyte data mentah dalam hitungan menit, bukan minggu. Ini akan menjadi artikel yang jauh lebih teknis.

Izhevsk bagian dari tim Locomizer.  Dari kiri ke kanan: Gena, I, Eugene, Anya
Inilah mereka.

Terima kasih dan FAQ singkat


Tanpa umpan balik dari kolega hebat - insinyur pada data besar, artikel ini tidak akan begitu jelas:


Dan tanpa perubahan editorial Nadi Noskova dan Polina Rusinova dari tim HUDWAY, dia tidak akan keluar dengan mudah dibaca. Terima kasih

Sekarang FAQ cepat untuk pengulas.

Q. Berapa banyak poin per jam / hari / menit yang dimiliki orang “rata-rata”? Artinya, secara umum, kita dapat mengelompokkan berdasarkan device_id dan memahami di mana orang itu berada pada siang hari? Bisakah saya menempelkan data terus menerus selama seminggu?
A. Tidak ada rata-rata yang diucapkan, mungkin ada poin dari satu hingga jutaan (masalah "ekor panjang"; kami menghapus pengguna dengan jumlah poin di bawah persentil ke-5 dan ke-95), ini sangat bergantung pada pemasok. Anda dapat mengelompokkan, tetap bersatu, tetapi titik awan yang dihasilkan tidak memiliki pola yang jelas "oleh mata", itu hanya awan yang dilemparkan secara acak ke peta. Setelah pengayaan, lintasan sudah terlihat, tetapi mereka biasanya pecah di tempat-tempat yang paling tak terduga dan tidak banyak membantu.

Q.Apakah mungkin untuk bergabung dengan keluarga? Apa yang 2-3 perangkat pergi bersama selama beberapa hari libur? Putus dari tetangga?
A. Diragukan. Tidak mungkin bahwa anggota keluarga memiliki satu set aplikasi yang identik pada terminal pelanggan, dan tidak mungkin bahwa pola penggunaan akan benar-benar bertepatan. Sejauh ini, kami belum memiliki tugas seperti itu, tetapi Anda dapat mencoba. Jika seseorang memerintahkan kami penelitian semacam itu, tentu saja, kami tidak dapat menghabiskan waktu luang untuk menguji hipotesis.

P. Dari perspektif bisnis, apakah mungkin menargetkan pelanggan tertentu? Bagaimana?Hanya ada beberapa device_id, tapi jelas kami tidak tahu nomor sel atau surat. Hanya jika pengguna ini lagi melewati suatu tempat dengan device_id yang sama? Apakah ini statis? Atau apakah itu seperti sidik jari dan dapat berubah dari penyedia data?
A. Penyedia menetapkan device_id, dan ini bukan yang terlihat, misalnya, dalam pengaturan telepon, yaitu, ada anonimisasi ganda. Kami tidak memiliki data selain apa yang dilukis dalam anatomi dataset. Di dalam penyedia, tetap sama untuk satu perangkat, dan Anda dapat menempelkan set data bulanan, penggunaannya kemungkinan akan tetap sama.

Q.Penyedia Data, jelaskan secara lebih rinci. Artinya, ini bukan operator seluler di menara, tetapi "sesuatu yang berjalan di telepon" yang mengumpulkan lokasi di latar belakang dan kemudian mengeringkannya di suatu tempat dengan bundel? Jika ponsel sudah tua, tanpa internet, bluetooth yang disertakan - akankah seseorang mengumpulkan data seperti itu? Jika saya di jalan raya di pompa bensin, tidak ada Wi-Fi di mana pun, dapatkah saya mengumpulkan informasinya?
A.Ini adalah perpustakaan yang sama yang menampilkan iklan kepada Anda di aplikasi Anda, atau merupakan bagian dari itu, seperti menunjukkan tempat di peta. Ini berfungsi pada ponsel Anda jika Anda mengizinkan aplikasi untuk mengumpulkan geolokasi (atau izin ini terdaftar di manifesnya). Informasi dikumpulkan terus menerus ketika aplikasi berjalan di latar belakang, ketika jaringan tersedia, informasi yang dikumpulkan dikirim oleh paket ke cloud jaringan periklanan atau penyedia layanan peta, dan dari sana itu dikumpulkan oleh agregator.

P. Sedikit tentang penyedia data. Ternyata ada lebih dari satu. Apakah mereka masih mengumpulkan hanya sebagian dari aliran, 10/20/40/70%? Apakah mereka entah bagaimana rusak di seluruh wilayah? Bisakah mereka tumpang tindih dalam waktu / lokasi, operator seluler, atau yang lainnya? Atau hanya kuantitas yang bisa menjawab, tanpa penargetan?
A.Ya, ada banyak dari mereka, tetapi kami tidak tahu tentang saham. Seseorang lebih baik di satu negara, orang lain di negara lain. Pelanggan biasanya memberi tahu diri mereka sendiri data siapa yang ingin mereka proses. Kami tidak berhasil menempelkan pengguna dalam kumpulan data pemasok yang berbeda di wilayah yang sama untuk periode waktu yang sama. Penargetan semua pemasok adalah sama - sesuai dengan geofence di wilayah tersebut. Negara, prefektur, kota, dll., Tetapi persimpangan di antara mereka tidak terlihat.

Jika Anda memiliki pertanyaan lebih lanjut, silakan tanyakan di komentar Gene keskiy dan Eugene mitra_kun . Mereka cukup sibuk, tetapi mereka pasti akan menjawab pertanyaan yang menarik dan bermakna tentang pemrosesan data pengguna dan memelihara database bernyanyi dalam beberapa hari.

Dengan masalah teknis, saya sarankan Anda menunggu sampai akhir seri artikel ini.

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


All Articles