Perkiraan deret waktu tunggal dari data Google Analytics


Dalam tutorial ini, Anda akan mempelajari cara membuat model deret waktu untuk melakukan satu perkiraan deret waktu menggunakan tabel contoh google_analytics_sample.ga_sessions.

Tabel ga_sessions berisi informasi tentang sepotong data sesi yang dikumpulkan oleh Google Analytics 360 dan dikirim ke BigQuery.

Tujuan

Dalam tutorial ini, Anda akan menggunakan:

  • Pernyataan CREATE MODEL: untuk membuat model deret waktu.
  • Fungsi ML.ARIMA_EVALUATE: untuk mengevaluasi model.
  • Fungsi ML.ARIMA_COEFFICIENTS: untuk memeriksa koefisien model.
  • Fungsi ML.FORECAST: untuk memperkirakan total kunjungan harian.
  • Fungsi ML.EXPLAIN_FORECAST: untuk mendapatkan berbagai komponen deret waktu (seperti tren musiman dan tren) yang dapat digunakan untuk menjelaskan hasil perkiraan.
  • Looker Studio: untuk memvisualisasikan hasil perkiraan.

Biaya

Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:

  • BigQuery
  • BigQuery ML

Untuk informasi selengkapnya tentang biaya BigQuery, lihat halaman harga BigQuery.

Untuk informasi selengkapnya tentang biaya BigQuery ML, lihat harga BigQuery ML.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. BigQuery secara otomatis diaktifkan dalam project baru. Untuk mengaktifkan BigQuery dalam project yang sudah ada, buka

    Enable the BigQuery API.

    Enable the API

Langkah pertama: Buat set data Anda

Buat set data BigQuery untuk menyimpan model ML Anda:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka halaman BigQuery

  2. Di panel Explorer, klik nama project Anda.

  3. Klik View actions > Create dataset.

    Buat set data.

  4. Di halaman Create dataset, lakukan hal berikut:

    • Untuk Dataset ID, masukkan bqml_tutorial.

    • Untuk Location type, pilih Multi-region, lalu pilih US (multiple regions in United States).

      Set data publik disimpan di US multi-region. Untuk mempermudah, simpan set data Anda di lokasi yang sama.

    • Jangan ubah setelan default yang tersisa, lalu klik Create dataset.

      Halaman Create dataset.

Langkah kedua (opsional): Visualisasikan deret waktu yang ingin Anda perkirakan

Sebelum membuat model, sebaiknya lihat tampilan deret waktu input Anda. Anda dapat melakukannya menggunakan Looker Studio.

Dalam kueri GoogleSQL berikut, klausa FROM bigquery-public-data.google_analytics_sample.ga_sessions_* menunjukkan bahwa Anda membuat kueri tabel ga_sessions_* di set data google_analytics_sample. Tabel ini adalah tabel yang dipartisi.

Dalam pernyataan SELECT, kueri akan mengurai kolom date dari tabel input menjadi jenis TIMESTAMP dan mengganti namanya menjadi parsed_date. Kueri menggunakan klausa SUM(...) dan klausa GROUP BY date untuk mengumpulkan totals.visits setiap hari.

#standardSQL
SELECT
  PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date,
  SUM(totals.visits) AS total_visits
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
GROUP BY date

Untuk menjalankan kueri, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, klik tombol Compose new query.

  2. Masukkan kueri GoogleSQL berikut di area teks Query editor.

    #standardSQL
    SELECT
     PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date,
     SUM(totals.visits) AS total_visits
    FROM
     `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    GROUP BY date
    
  3. Klik Run.

    Kueri membutuhkan waktu sekitar 7 detik untuk menyelesaikannya. Setelah kueri ini dijalankan, outputnya akan mirip dengan screenshot berikut. Di screenshot, Anda bisa melihat bahwa deret waktu ini memiliki 366 titik data. Klik tombol Explore data, lalu Explore with Looker Studio. Looker Studio akan terbuka di tab baru. Selesaikan langkah-langkah berikut di tab baru.

    Output kueri

    Pada panel Chart, pilih Time series chart:

    Time_series_chart

    Pada panel Data, di bawah panel Chart, buka bagian Metric. Tambahkan kolom total_visits, lalu hapus metrik default Record Count. Hal ini ditunjukkan dalam gambar berikut:

    Time_series_data_fields

    Setelah Anda menyelesaikan langkah-langkah ini, plot berikut akan muncul. Plot menunjukkan bahwa deret waktu yang dimasukkan memiliki pola musiman mingguan.

    Result_visualization

Langkah ketiga: Buat model deret waktu Anda

Selanjutnya, buat model deret waktu menggunakan data Google Analytics 360. Kueri GoogleSQL berikut akan membuat model yang digunakan untuk memperkirakan totals.visits.

Klausa CREATE MODEL membuat dan melatih model bernama bqml_tutorial.ga_arima_model.

#standardSQL
CREATE OR REPLACE MODEL `bqml_tutorial.ga_arima_model`
OPTIONS
  (model_type = 'ARIMA_PLUS',
   time_series_timestamp_col = 'parsed_date',
   time_series_data_col = 'total_visits',
   auto_arima = TRUE,
   data_frequency = 'AUTO_FREQUENCY',
   decompose_time_series = TRUE
  ) AS
SELECT
  PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date,
  SUM(totals.visits) AS total_visits
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
GROUP BY date

Klausa OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...) menunjukkan bahwa Anda membuat model deret waktu berbasis ARIMA. Secara default, auto_arima=TRUE, sehingga algoritme auto.ARIMA otomatis menyesuaikan hyper-parameter dalam model ARIMA_PLUS. Algoritma ini sesuai dengan beberapa model kandidat dan memilih model terbaik dengan kriteria informasi Akaike (AIC) terendah. Selain itu, karena defaultnya adalah data_frequency='AUTO_FREQUENCY', proses pelatihan akan otomatis menyimpulkan frekuensi data dari input deret waktu. Terakhir, pernyataan CREATE MODEL menggunakan decompose_time_series=TRUE secara default, dan pengguna dapat lebih memahami perkiraan deret waktu dengan mengambil data komponen deret waktu, seperti tren musiman dan efek liburan.

Jalankan kueri CREATE MODEL untuk membuat dan melatih model Anda:

  1. Di konsol Google Cloud, klik tombol Compose new query.

  2. Masukkan kueri GoogleSQL berikut di area teks Query editor.

    #standardSQL
    CREATE OR REPLACE MODEL `bqml_tutorial.ga_arima_model`
    OPTIONS
     (model_type = 'ARIMA_PLUS',
      time_series_timestamp_col = 'parsed_date',
      time_series_data_col = 'total_visits',
      auto_arima = TRUE,
      data_frequency = 'AUTO_FREQUENCY',
      decompose_time_series = TRUE
    ) AS
    SELECT
     PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date,
     SUM(totals.visits) AS total_visits
    FROM
     `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    GROUP BY date
    
  3. Klik Run.

    Kueri membutuhkan waktu sekitar 43 detik untuk diselesaikan, setelah itu model Anda (ga_arima_model) akan muncul di panel navigasi. Karena kueri tersebut menggunakan pernyataan CREATE MODEL untuk membuat model, Anda tidak akan melihat hasil kueri.

Langkah keempat: Periksa metrik evaluasi dari semua model yang dievaluasi

Setelah membuat model, Anda dapat menggunakan fungsi ML.ARIMA_EVALUATE untuk melihat metrik evaluasi semua model kandidat yang dievaluasi selama proses penyesuaian hyperparameter otomatis.

Dalam kueri GoogleSQL berikut, klausa FROM menggunakan fungsi ML.ARIMA_EVALUATE terhadap model Anda, bqml_tutorial.ga_arima_model. Secara default, kueri ini menampilkan metrik evaluasi dari semua model kandidat.

Untuk menjalankan kueri ML.ARIMA_EVALUATE, gunakan langkah-langkah berikut:

  1. Di konsol Google Cloud, klik tombol Compose new query.

  2. Masukkan kueri GoogleSQL berikut di area teks Query editor.

    #standardSQL
    SELECT
     *
    FROM
     ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.ga_arima_model`)
    
  3. Klik Run.

  4. Kueri ini selesai dalam waktu kurang dari satu detik. Setelah kueri selesai, klik tab Results di bawah area teks kueri. Hasilnya akan terlihat mirip dengan screenshot berikut:

    Output ML.ARIMA_EVALUATE.

    Hasilnya mencakup kolom berikut:

    • non_seasonal_p
    • non_seasonal_d
    • non_seasonal_q
    • has_drift
    • log_likelihood
    • AIC
    • variance
    • seasonal_periods
    • has_holiday_effect
    • has_spikes_and_dips
    • has_step_changes
    • error_message

    Empat kolom berikut (non_seasonal_{p,d,q} dan has_drift) menentukan model ARIMA dalam pipeline pelatihan. Tiga metrik setelah itu (log_likelihood, AIC, dan variance) relevan dengan proses penyesuaian model ARIMA.

    Algoritma auto.ARIMA terlebih dahulu menggunakan pengujian KPSS untuk menentukan bahwa nilai terbaik untuk non_seasonal_d adalah 1. Jika non_seasonal_d adalah 1, auto.ARIMA kemudian akan melatih 42 model ARIMA kandidat berbeda secara paralel. Perlu diingat bahwa jika non_seasonal_d bukan 1, auto.ARIMA akan melatih 21 model kandidat yang berbeda. Dalam contoh ini, ke-42 model kandidat sudah valid. Oleh karena itu, outputnya berisi 42 baris, dengan setiap baris dikaitkan dengan model ARIMA kandidat. Perlu diingat bahwa untuk beberapa deret waktu, beberapa model kandidat tidak valid karena model tersebut tidak dapat dibalik atau tidak diam. Model yang tidak valid ini dikecualikan dari output, yang akan membuat output memiliki kurang dari 42 baris. Model kandidat ini diurutkan oleh AIC dalam urutan menaik. Model di baris pertama memiliki AIC terendah, dan dianggap sebagai model terbaik. Model terbaik ini disimpan sebagai model akhir dan digunakan saat Anda memanggil ML.EXPLAIN_FORECAST, ML.FORECAST, dan ML.ARIMA_COEFFICIENTS seperti yang ditunjukkan pada langkah-langkah berikut.

    Kolom seasonal_periods adalah tentang pola musiman dalam deret waktu input. Hal ini tidak ada hubungannya dengan pemodelan ARIMA karena memiliki nilai yang sama di semua baris output. Laporan ini melaporkan pola mingguan, yang sesuai ekspektasi seperti dijelaskan pada langkah kedua di atas.

    Kolom has_holiday_effect, has_spikes_and_dips, dan has_step_changes hanya diisi saat decompose_time_series=TRUE. Metrik ini tentang efek liburan, lonjakan dan penurunan, serta perubahan langkah di dalam deret waktu input, yang tidak terkait dengan pemodelan ARIMA. Oleh karena itu, keduanya sama di semua baris output, kecuali untuk model yang gagal tersebut.

    Kolom error_message menunjukkan bahwa kemungkinan error yang terjadi selama proses penyesuaian auto.ARIMA. Kemungkinan alasannya adalah kolom non_seasonal_p, non_seasonal_d, non_seasonal_q, dan has_drift yang dipilih tidak dapat menstabilkan deret waktu. Untuk mengambil kemungkinan pesan error dari semua model kandidat, tetapkan show_all_candidate_models=true.

Langkah kelima: Periksa koefisien model Anda

Fungsi ML.ARIMA_COEFFICIENTS mengambil koefisien model dari model ARIMA_PLUS Anda, bqml_tutorial.ga_arima_model. ML.ARIMA_COEFFICIENTS menggunakan model sebagai satu-satunya input.

Jalankan kueri ML.ARIMA_COEFFICIENTS:

  1. Di konsol Google Cloud, klik tombol Compose new query.

  2. Masukkan kueri GoogleSQL berikut di area teks Query editor.

    #standardSQL
    SELECT
     *
    FROM
     ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.ga_arima_model`)
    
  3. Klik Run.

    Kueri ini selesai dalam waktu kurang dari satu detik. Hasilnya akan terlihat seperti berikut:

    Output ML.ARIMA_COEFFICIENTS.

    Hasilnya mencakup kolom berikut:

    • ar_coefficients
    • ma_coefficients
    • intercept_or_drift

    ar_coefficients menunjukkan koefisien model bagian autoregresif (AR) dari model ARIMA. Demikian pula, ma_coefficients menunjukkan koefisien model bagian rata-rata bergerak (MA). Keduanya adalah array yang panjangnya sama dengan non_seasonal_p dan non_seasonal_q secara berurutan. Dari output ML.ARIMA_EVALUATE, model terbaik seperti di baris atas memiliki non_seasonal_p sebesar 2 dan non_seasonal_q sebesar 3. Oleh karena itu, ar_coefficients adalah array length-2 dan ma_coefficients adalah array length-3. intercept_or_drift adalah istilah konstan dalam model ARIMA.

Langkah keenam: Gunakan model Anda untuk memperkirakan deret waktu

Fungsi ML.FORECAST akan memperkirakan nilai deret waktu di masa mendatang dengan interval prediksi menggunakan model Anda: bqml_tutorial.ga_arima_model.

Dalam kueri GoogleSQL berikut, klausa STRUCT(30 AS horizon, 0.8 AS confidence_level) menunjukkan bahwa kueri memperkirakan 30 titik waktu di masa mendatang, dan menghasilkan interval prediksi dengan tingkat keyakinan 80%. ML.FORECAST akan menggunakan model, serta beberapa argumen opsional.

Untuk menjalankan kueri ML.FORECAST, gunakan langkah-langkah berikut:

  1. Di konsol Google Cloud, klik tombol Compose new query.

  2. Masukkan kueri GoogleSQL berikut di area teks Query editor.

    #standardSQL
    SELECT
     *
    FROM
     ML.FORECAST(MODEL `bqml_tutorial.ga_arima_model`,
                 STRUCT(30 AS horizon, 0.8 AS confidence_level))
    
  3. Klik Run.

    Kueri ini selesai dalam waktu kurang dari satu detik. Hasilnya akan terlihat seperti berikut:

    Output ML.FORECAST.

    Hasilnya mencakup kolom berikut:

    • forecast_timestamp
    • forecast_value
    • standard_error
    • confidence_level
    • prediction_interval_lower_bound
    • prediction_interval_upper_bound
    • confidence_interval_lower_bound (akan segera tidak digunakan lagi)
    • confidence_interval_upper_bound (akan segera tidak digunakan lagi)

    Baris output diurutkan dalam urutan kronologis forecast_timestamp. Dalam perkiraan deret waktu, prediksi interval, yang ditangkap dari batas bawah dan atas, sama pentingnya dengan forecast_value. forecast_value adalah titik tengah interval prediksi. Interval prediksi bergantung pada standard_error dan confidence_level.

Langkah ketujuh: Jelaskan dan visualisasikan hasil perkiraan

Untuk memahami cara deret waktu diperkirakan, dan untuk memvisualisasikan deret waktu yang diperkirakan bersama dengan deret waktu histori dan semua komponen terpisah, fungsi ML.EXPLAIN_FORECAST akan memperkirakan nilai deret waktu di masa mendatang dengan interval prediksi menggunakan model Anda, bqml_tutorial.ga_arima_model, dan pada saat yang sama menampilkan semua komponen deret waktu yang terpisah.

Seperti fungsi ML.FORECAST, klausa STRUCT(30 AS horizon, 0.8 AS confidence_level) menunjukkan bahwa kueri memperkirakan 30 titik waktu di masa mendatang dan menghasilkan interval prediksi dengan keyakinan 80%. Fungsi ML.EXPLAIN_FORECAST akan menggunakan model, serta beberapa argumen opsional.

Untuk menjalankan kueri ML.EXPLAIN_FORECAST, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, klik tombol Compose new query.

  2. Masukkan kueri GoogleSQL berikut di area teks Query editor.

    #standardSQL
    SELECT
     *
    FROM
     ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.ga_arima_model`,
                         STRUCT(30 AS horizon, 0.8 AS confidence_level))
    
  3. Klik Run.

    Kueri ini selesai dalam waktu kurang dari satu detik. Hasilnya akan terlihat seperti berikut:

    ML.EXPLAIN_FORECAST output1. ML.EXPLAIN_FORECAST output2.

    Hasilnya mencakup kolom berikut:

    • time_series_timestamp
    • time_series_type
    • time_series_data
    • time_series_adjusted_data
    • standard_error
    • confidence_level
    • prediction_interval_lower_bound
    • prediction_interval_lower_bound
    • trend
    • seasonal_period_yearly
    • seasonal_period_quarterly
    • seasonal_period_monthly
    • seasonal_period_weekly
    • seasonal_period_daily
    • holiday_effect
    • spikes_and_dips
    • step_changes
    • residual

    Baris output diurutkan dalam urutan kronologis time_series_timestamp. Berbagai komponen dicantumkan sebagai kolom output. Untuk mengetahui informasi selengkapnya, lihat definisi ML.EXPLAIN_FORECAST.

  4. Setelah kueri selesai, klik tombol Explore data, lalu klik Explore with Looker Studio. Looker Studio akan terbuka di tab baru.

    Output Union_all_query

  5. Pada panel Chart, pilih Time series chart:

    Time_series_chart

  6. Di panel Data, lakukan langkah berikut:

    1. Di bagian Date Range Dimension, pilih time_series_timestamp (Date).
    2. Di bagian Dimension, pilih time_series_timestamp (Date).
    3. Di bagian Metric, hapus metrik default Record Count, dan tambahkan hal berikut:
      • time_series_data
      • prediction_interval_lower_bound
      • prediction_interval_upper_bound
      • trend
      • seasonal_period_weekly
      • step_changes

    Data_panel

  7. Di panel Style, scroll ke bawah ke opsi Data yang Hilang dan gunakan Jeda Baris, bukan Baris ke Nol.

    Style_section

    Plot berikut akan muncul:

    Result_visualization

Langkah kedelapan (opsional): Visualisasikan hasil perkiraan tanpa mengaktifkan decompose_time_series

Jika decompose_time_series disetel ke salah (false) dalam pelatihan ARIMA_PLUS, Anda dapat menggabungkan deret waktu histori dan perkiraan deret waktu menggunakan klausa UNION ALL dan fungsi ML.FORECAST.

Dalam kueri berikut, SQL sebelum klausa UNION ALL akan membentuk deret waktu histori. SQL setelah klausa UNION ALL akan menggunakan fungsi ML.FORECAST untuk menghasilkan perkiraan deret waktu serta interval prediksi. Kueri menggunakan kolom yang berbeda untuk history_value dan forecasted_value untuk memetakannya dalam warna yang berbeda.

Untuk menjalankan kueri, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, klik tombol Compose new query.

  2. Masukkan kueri GoogleSQL berikut di area teks Query editor.

    #standardSQL
    SELECT
     history_timestamp AS timestamp,
     history_value,
     NULL AS forecast_value,
     NULL AS prediction_interval_lower_bound,
     NULL AS prediction_interval_upper_bound
    FROM
     (
       SELECT
         PARSE_TIMESTAMP("%Y%m%d", date) AS history_timestamp,
         SUM(totals.visits) AS history_value
       FROM
         `bigquery-public-data.google_analytics_sample.ga_sessions_*`
       GROUP BY date
       ORDER BY date ASC
     )
    UNION ALL
    SELECT
     forecast_timestamp AS timestamp,
     NULL AS history_value,
     forecast_value,
     prediction_interval_lower_bound,
     prediction_interval_upper_bound
    FROM
     ML.FORECAST(MODEL `bqml_tutorial.ga_arima_model`,
                 STRUCT(30 AS horizon, 0.8 AS confidence_level))
    
  3. Klik Run.

  4. Setelah kueri selesai, klik tombol Explore data, lalu klik Explore with Looker Studio. Looker Studio akan terbuka di tab baru. Selesaikan langkah-langkah berikut di tab baru.

    Output Union_all_query

  5. Pada panel Chart, pilih Time series chart:

    Time_series_chart

  6. Di panel Data, di bawah panel Chart, buka bagian Metric. Tambahkan metrik berikut: history_value, forecast_value, prediction_interval_lower_bound, dan prediction_interval_upper_bound. Lalu, hapus metrik default Record Count.

    Data_section

  7. Di panel Style, scroll ke bawah ke opsi Missing Data dan gunakan Line Breaks, bukan Line to Zero.

    Style_section

    Setelah Anda menyelesaikan langkah-langkah ini, plot berikut akan muncul di panel kiri. Deret waktu histori input berwarna biru, sedangkan deret yang diperkirakan berwarna hijau. Interval prediksi adalah region antara deret batas bawah dan deret batas atas.

    Result_visualization

Pembersihan

Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus resource satu per satu.

  • Anda dapat menghapus project yang dibuat.
  • Atau, Anda dapat menyimpan project dan menghapus set data.

Menghapus set data

Jika project Anda dihapus, semua set data dan semua tabel dalam project akan dihapus. Jika ingin menggunakan kembali project tersebut, Anda dapat menghapus set data yang dibuat dalam tutorial ini:

  1. Jika perlu, buka halaman BigQuery di konsol Google Cloud.

    Buka halaman BigQuery

  2. Di navigasi, klik set data bqml_tutorial yang telah Anda buat.

  3. Klik Delete dataset di sisi kanan jendela. Tindakan ini akan menghapus set data, tabel, dan semua data.

  4. Di kotak dialog Delete dataset, konfirmasi perintah hapus dengan mengetikkan nama set data Anda (bqml_tutorial), lalu klik Delete.

Menghapus project Anda

Untuk menghapus project:

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya