Di musim dingin dan musim panas dalam satu warna? Cari data musiman



Setelah kami memutuskan untuk melihat minat musiman apa yang dimiliki pengguna 2GIS di kota yang berbeda. Ledakan minat pada bunga, hadiah dan ban Tahun Baru sangat diharapkan. Kami memutuskan untuk tidak membatasi diri pada mereka dan melangkah lebih jauh dengan memeriksa semua bidang kegiatan di 113 kota yang ada.

Pada artikel ini saya akan memberi tahu Anda bagaimana kami mencari musiman dan apa fitur perilaku pengguna di dalamnya yang ditemukan.

Mengapa Anda perlu mengukur musiman?


Kebutuhan pengguna 2GIS berubah sepanjang tahun: barang konsumen, layanan, konstruksi, layanan publik. Pengetahuan musiman berguna karena beberapa alasan:

  • Kami mulai memahami lebih lanjut tentang nilai dan minat pengguna kami saat ini dan dalam waktu dekat.
  • Kami dapat "memprediksi" permintaan pengguna.
  • Manajer penjualan fokus pada bidang kegiatan yang relevan bagi pengguna.

Jenis lalu lintas


Sebelum berbicara tentang bagaimana kami memproses lalu lintas, ada baiknya mengklarifikasi bahwa kami membaginya menjadi beberapa jenis.

Pemulihan adalah jenis lalu lintas di mana pengguna tahu persis perusahaan yang ingin ia hubungi. Dia perlu mengklarifikasi alamat, jadwal kerja atau menemukan pintu masuk. Dalam hal ini, pencarian dilakukan berdasarkan nama perusahaan, nomor telepon, dan atribut lain dari perusahaan itu sendiri.

Lalu lintas penemuan adalah ketika pengguna merumuskan permintaan dalam istilah yang lebih umum: "furnitur berlapis kain", "makan di Lenin", "mandi". Artinya, pengguna mengeksplorasi opsi dan penawaran pasar, sering menelepon organisasi atau mengunjungi situs mereka.

Lalu lintas geo terjadi ketika pengguna bekerja dengan peta. Sebagai contoh, ia mencari apotek atau stasiun layanan terdekat dengan rumah.

Semua permintaan pengguna dan semua tindakan selanjutnya ditandai pada lalu lintas. Untuk mencari musiman, analisis mengambil penemuan + geo-traffic. Karena mereka, pertama, sesuai dengan manifestasi kepentingan pengguna, dan kedua, mereka dapat dikendalikan. Anda tidak dapat mengatur lalu lintas pemulihan.

Tentang tren


Bagan 1: Apakah Anda melihat musim?
Bagan 1: Apakah Anda melihat musim?

Sebelum Anda mulai mencari musiman, Anda perlu memperhitungkan perubahan volume lalu lintas di berbagai jenis perangkat. Kami memperhitungkan bahwa pemirsa versi WinPhone dan PC terus menurun. Sedangkan online, Android, iOS terus berkembang.

Pengujian Hipotesis


Kriteria untuk menentukan musim dikembangkan untuk seri stasioner. Adalah perlu untuk menguji hipotesis bahwa seri berisi tren. Kami akan mempertimbangkan deret waktu sebagai proses acak. Kemudian elemen-elemen dari seri ini adalah realisasi dari beberapa variabel acak.

Kita dapat menguji hipotesis bahwa semua nilai sampel milik populasi yang sama dengan rata-rata m. Maka hipotesis utamanya adalah:
H0:mi=m,i=1,2,...,N
melawan hipotesis tren saingan
$ inline $ H_1: ∣m_ {i + 1} āˆ’m_i∣> 0, i = 1,2, ..., N - 1 $ inline $
di mana N adalah jumlah elemen dalam satu baris.

Untuk menguji hipotesis, Anda perlu menggunakan salah satu kriteria untuk signifikansi tren. Berdasarkan penelitian, kriteria inversi dipilih.

Jika hipotesis tidak ditolak, maka perlu untuk menghapus tren dari data. Kami berasumsi bahwa dalam data kami hanya ada tren linier. Oh, itu akan eksponensial! Kami juga akan menganggap bahwa kami tidak dapat memiliki lebih dari satu titik belok.

Bagan 2: Rangkaian waktu (dari Bagan 1) dan trennya
Bagan 2: Rangkaian waktu (dari Bagan 1) dan trennya

Tentang menyapu dan penemuan


Kami menguraikan batas-batas penelitian dan mengatur tentang pengujian hipotesis. Tentu saja, itu bukan tanpa garu dan penemuan: karena tugas itu tidak terbatas pada layanan populer di kota-kota dengan lebih dari satu juta orang, kami telah menyusun daftar kasus khusus yang patut diperhatikan.

  1. Kesenjangan data. Di area aktivitas yang sempit, beberapa tanggal mungkin tidak memiliki data. Kasus ini sangat relevan untuk kota-kota kecil. Fitur ini harus diperhitungkan untuk konstruksi regresi yang benar.
  2. Jika titik belok ditemukan, pertimbangkan kedekatannya dengan awal atau akhir baris. Salah tafsir tentang perilaku serangkaian dalam kondisi batas adalah mungkin. Sebagai contoh, dalam bagan 2, 120 poin pertama tampaknya mengindikasikan pertumbuhan linear yang sejalan. Tetapi, pada kenyataannya, itu menunjukkan dirinya musiman, yang akan kita lihat nanti.
  3. Memilih titik referensi yang tepat. Untuk mendapatkan koefisien yang benar, Anda perlu menggunakan seri, mulai dari titik signifikan pertama, dan ingat koordinat X dari titik ini (tanggal data muncul dalam seri). Tren akan dibangun dalam sistem koordinat dengan 0 pada titik ini. Kasus ini relevan untuk membandingkan bola satu sama lain. Misalnya, di 2GIS kota tidak diluncurkan secara bersamaan dan, karenanya, mereka mulai mengirim statistik pada waktu yang berbeda. Hal yang sama berlaku untuk kemunculan bisnis baru, seperti, misalnya, pangkas rambut.
  4. Mungkin hal yang paling sulit adalah menemukan kompromi antara tingkat detail dan kecukupan jumlah data. Kami menetapkan tiga dimensi: kota, bidang aktivitas, platform perangkat pengguna.

Bagan 3: Serangkaian tanpa tren
Bagan 3: Serangkaian tanpa tren

Pencarian Musiman


Setelah mengurangi tren yang sesuai dari deret waktu, kita dapat melanjutkan ke tugas menemukan musiman. Ini terdiri dari dua subtugas:

  1. Deteksi fakta kehadiran musiman dalam satu seri.
  2. Definisi musim tinggi dan rendah - inilah yang memiliki nilai praktis.

Deteksi korelasi


Ada fungsi pencarian korelasi siap pakai di R dan Python. Kami menggunakan korelasi Pearson. Saat bekerja dengan vektor minat pengguna, perhatikan yang berikut:

  • Setelah mengurangi tren dari seri aslinya, nilai negatif dapat diperoleh. Ini normal pada tahap ini.
  • Untuk tugas kami, memeriksa korelasi deret waktu 365 hari sudah cukup. Ya, pengaruh tahun kabisat tidak signifikan dan kami tidak memperhitungkannya.
  • Untuk mencari musiman, Anda harus memiliki data setidaknya selama dua periode penuh. Perhitungan kami menggunakan data selama empat periode.

Kami mencari korelasi dua vektor: X: [0; N-365], Y: [366; N]. Di mana N adalah panjang baris.

Bagan 4: Deteksi Korelasi
Bagan 4: Deteksi Korelasi

Dapatkan manfaatnya


Fakta keberadaan musiman tidak membawa nilai praktis. Anda perlu memahami apa yang akan dibayarkan ke bidang kegiatan bulan depan: meningkat, diturunkan atau normal.

Skala multiplikatif dipilih sebagai hasil akhir. Di mana unit adalah tingkat "normal" dari minat pengguna di bidang aktivitas. Nilai selain dari satu mencirikan peningkatan ganda atau penurunan minat.

Dalam kasus kami, [untuk saat ini] skala sementara yang cukup bertahan sebulan sudah cukup. Untuk menentukan level 1, median perhatian pengguna bulanan digunakan. Kemudian dihitung deviasi berganda dari median ini.

Bagan 5: Musiman Tahunan
Bagan 5: Musiman Tahunan

Saatnya untuk mengungkapkan rahasia data apa yang ditampilkan grafik artikel. Pada ini dan semua grafik sebelumnya - klik di museum St. Petersburg. Seperti yang dapat dilihat dari jadwal terakhir, museum populer selama liburan Januari, ketika ada banyak hari libur, dan di musim panas.

Bagaimana jika ...


... untuk mengambil dan memberi makan algoritme bukan untuk kepentingan pengguna, tetapi, misalnya, penjualan?

Algoritme tindakannya sama:

  1. Kami mencari tren. Penonton kota bertambah, dan dengan itu jumlah pengiklan bertambah. Penting untuk mengurangi tren yang terkait dengan semakin populernya 2GIS sebagai platform periklanan untuk mendapatkan lonjakan dan penurunan industri.
  2. Kami menemukan korelasi penjualan dari tahun ke tahun, dan kemudian musim tinggi dan rendah.

Butuh sejumlah penyesuaian


Beriklan di 2GIS dijual setiap bulan, sehingga mereka membutuhkan waktu satu bulan untuk skala, tetapi musiman pengguna dianalisis hingga satu hari. Untuk kompatibilitas mundur, kami mengadaptasi algoritme agar bekerja dengan seri arbitrer, di mana di sepanjang sumbu X adalah nomor seri titik, dan di sepanjang sumbu Y ada nilai tertentu (pada level ini, semantik nilai tidak menjadi masalah).

Titik referensi dari serangkaian penjualan (asal), sebagai suatu peraturan, tidak sesuai dengan titik referensi musiman pengguna. Setelah semua, pada awalnya kota mendapatkan audiens, dan baru kemudian iklan muncul. Pada tahap ini, Anda tidak harus menggabungkan hasil dua musim.

Karena penjualan adalah bulanan, kami memiliki poin yang jauh lebih sedikit di jajaran. Dalam hal ini, korelasi harus dipertimbangkan pada 12 poin, bukan 365.

Bagan 6: Musiman penjualan
Bagan 6: Musiman penjualan

Sebagai langkah terakhir, kami memutuskan untuk mengenakan musiman penjualan pada musiman pengguna. Sekarang Anda dapat melihat di mana kami menjual iklan lebih lama dari yang diperlukan, dan tertinggal dari permintaan pengguna.

Sebagai contoh, pengguna tertarik untuk membeli beton di Nizhny Novgorod dari bulan April hingga Oktober. Sementara perusahaan hanya bergerak dalam promosi dari Mei hingga September.

Bagan 7: Persimpangan musim pengguna dan musim penjualan
Bagan 7: Perpotongan musiman pengguna dan musiman penjualan (pengguna hijau, penjualan biru, kebetulan merah)

Apa yang terjadi


Segala sesuatu yang dijelaskan di atas diimplementasikan dalam MS SQL Server 2016. Untuk mencari regresi linier dan korelasi, R digunakan, yang telah dimasukkan dalam server sejak versi 2016. Dan karena kami memiliki Gudang Data dan analisis statistik pengguna yang sudah ada di SQL Server, ternyata sangat nyaman untuk menggunakan R untuk perhitungan matematis.

Contoh menggunakan R dari TSQL:

INSERT INTO #tmp EXEC sp_execute_external_script @language = N'R', @script = @R, @input_data_1 = N'SELECT DataId, Number, Value FROM #data ORDER BY 1, 2' 

Dimana:

  • variabel R berisi langsung kode R;
  • language = N'R '- menunjukkan bahwa skrip yang diteruskan dalam variabel R berisi kode bahasa R. Di SQL Server 2017, Anda dapat menggunakan bahasa = N'Python' di samping R. Kemudian, sesuai, kode Python harus dilewatkan ke parameter skrip.
  • input_data_1 - berisi kueri SQL, yang hasilnya di dalam kode-R dapat diakses sebagai InputDataSet;
  • Hasil dari prosedur adalah RecordDataSet, dibentuk sebagai OutputDataSet <- calcAllTrend (data = InputDataSet);
  • Pastikan untuk menentukan format catatan yang dihasilkan: jumlah dan jenis kolom. Dalam hal ini, format OutputDataSet ditentukan oleh tabel #tmp di mana hasilnya dicatat. Atau Anda dapat menggunakan DENGAN SET HASIL untuk menggambarkan set rekaman yang dihasilkan.

Dalam kasus kami, ternyata sebagian besar runtime sp_execute_external_script ditempati secara langsung dengan mengakses Layanan R. R-code itu sendiri bekerja dengan cepat.

Biarkan saya mengingatkan Anda, kami ingin menghitung tren dan musiman untuk semua kota yang mencakup 2GIS dan semua bidang kegiatan. Oleh karena itu, kami memutuskan untuk mengirim tidak satu baris (Angka, Nilai) ke InputDataSet, tetapi beberapa sekaligus, dikelompokkan berdasarkan DataId. Dan siklus DataId diselenggarakan di dalam R. Dengan demikian, kami secara signifikan menghemat memanggil Layanan R.

Fakta dari kehidupan


Anda membaca artikel sampai akhir, itu terpuji. Untuk menghibur Anda sebelum hasilnya, kami membagikan fakta menarik yang diidentifikasi selama analisis musim.

Fakta No. 1


Pengemudi tahu dari pengalaman pribadi bahwa musim mencari ban dan pemasangan ban adalah musim semi dan musim gugur. Tapi, tepatnya, musim di berbagai kota bisa sangat berbeda. Karenanya, saat membuat koleksi dan dasbor (layar pembuka dalam produk), penting untuk mempertimbangkan musim di setiap kota tertentu.

Bagan 8: Musiman ban di Krasnodar, Novosibirsk dan Norilsk
Bagan 8: Musiman ban di Krasnodar, Novosibirsk dan Norilsk

Fakta No. 2


Musiman dapat berbeda bahkan dalam bidang kegiatan yang sama - pada berbagai jenis perangkat. Misalnya, "Hadiah Tahun Baru" di layar lebar mulai mencari di bulan Oktober. Sedangkan dalam versi seluler pencarian dimulai sebulan kemudian dan puncaknya semakin mendekati Tahun Baru.

Bagan 9: Cari hadiah Natal online dan dalam versi seluler 2GIS
Bagan 9: Cari hadiah Natal online dan dalam versi seluler 2GIS

Fakta No. 3


Dalam proses mengerjakan musiman, kami menemukan bidang kegiatan, minat yang ditunjukkan setiap tiga bulan sekali. Dan ini berlaku untuk berbagai kota di Rusia.
Coba tebak bisnis apa ini.

Tip spoiler
Berbagai kota di Rusia. Jadi, bukan cuaca, atau kawasan, atau bisnis lokal, tetapi sesuatu yang umum secara global.
3 bulan = seperempat. Perhatikan April ...

Bagan 10
Bagan 10

Jawabannya
Ini adalah dana asuransi sosial - laporan triwulanan disampaikan kepada FSS setiap tiga bulan sekali, dan puncaknya pada bulan April dijelaskan oleh perubahan dalam formulir pelaporan mulai 1 Januari setiap tahun.

Sekali lagi tentang hal utama


Apakah Anda akan mencari korelasi dalam data? Jangan lupa untuk menyiapkan data ini: selisih proses, bersih dari tren dan emisi. Ingatlah bahwa persiapan akan menghabiskan sebagian besar waktu.

Pada tahap bekerja dengan baris, abstrak sebanyak mungkin dari semantik: bekerja dengan nilai dan nomor seri, maka kode akan lebih mudah untuk digunakan kembali. Visualisasi pada setiap tahap pemrosesan akan sangat membantu.

PS: tugas menemukan tren dan musiman dilakukan sebagai bagian dari tugas lain - memprediksi perubahan dalam perhatian pengguna setelah memperoleh iklan di 2GIS. Saya siap memberi tahu Anda bagaimana kami membuat ramalan, jika Anda tertarik.

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


All Articles