1. Ringkasan
Di lab ini, Anda akan mempelajari cara membuat model perkiraan deret waktu dengan TensorFlow, lalu mempelajari cara men-deploy model ini dengan Vertex AI.
Yang Anda pelajari
Anda akan mempelajari cara:
- Mengubah data agar dapat digunakan dalam model ML
- Memvisualisasikan dan menjelajahi data
- Menggunakan BigQuery ML untuk membuat model perkiraan deret waktu
- Membangun model perkiraan deret waktu dengan TensorFlow menggunakan arsitektur LSTM dan CNN
2. Pengantar Perkiraan Deret Waktu
Codelab ini berfokus pada cara menerapkan teknik peramalan deret waktu menggunakan Google Cloud Platform. Kursus ini bukan kursus peramalan deret waktu umum, tetapi penjelasan singkat tentang konsepnya mungkin bermanfaat bagi pengguna kami.
Data Deret Waktu
Pertama, apa itu deret waktu? Ini adalah set data dengan data yang dicatat pada interval waktu reguler. Set data deret waktu berisi waktu dan setidaknya satu variabel yang bergantung pada waktu.

Komponen
Deret waktu dapat diuraikan menjadi beberapa komponen:
- Tren: naik atau turun dalam pola yang cukup dapat diprediksi
- Musiman: berulang selama jangka waktu tertentu seperti hari, minggu, bulan, musim, dll.
- Acak: fluktuasi residual
Mungkin ada beberapa lapisan musiman. Misalnya, pusat panggilan mungkin melihat pola volume panggilan pada hari-hari tertentu dalam seminggu serta pada bulan-bulan tertentu. Residual mungkin dapat dijelaskan oleh variabel lain selain waktu.

Stationarity
Untuk mendapatkan hasil terbaik dalam peramalan, data deret waktu harus dibuat stasioner, dengan properti statistik seperti rata-rata dan varians yang konstan dari waktu ke waktu. Teknik seperti diferensiasi dan penghilangan tren dapat diterapkan pada data mentah agar lebih stasioner.
Misalnya, plot konsentrasi CO2 di bawah menunjukkan pola tahunan yang berulang dengan tren naik. ( Sumber)

Setelah menghapus tren linear, data lebih cocok untuk peramalan, karena kini memiliki rata-rata konstan.

Menggunakan Data Deret Waktu untuk Machine Learning
Untuk menggunakan data deret waktu dalam masalah machine learning, data tersebut perlu diubah sehingga nilai sebelumnya dapat digunakan untuk memprediksi nilai mendatang. Tabel ini menunjukkan contoh cara membuat variabel tertinggal untuk membantu memprediksi target.

Setelah membahas beberapa dasar-dasar, mari kita mulai menjelajahi data dan membuat perkiraan.
3. Menyiapkan lingkungan Notebook Anda
Setelah mempelajari pengantar singkat tentang data, sekarang mari kita siapkan lingkungan pengembangan model.
Langkah 1: Aktifkan API
Konektor BigQuery menggunakan BigQuery Storage API. Telusuri BigQuery Storage API di konsol dan aktifkan API jika saat ini dinonaktifkan.

Langkah 2: Membuat notebook Vertex AI Workbench
Buka bagian Vertex AI Workbench di Cloud Console Anda, lalu klik New Notebook. Kemudian, pilih jenis notebook TensorFlow Enterprise 2.x terbaru tanpa GPU:
Gunakan opsi default, lalu klik Buat. Setelah instance dibuat, pilih Open JupyterLab:

Kemudian, buat notebook Python 3 dari JupyterLab:

Langkah 3: Download materi lab
Buat jendela Terminal baru dari antarmuka JupyterLab: File -> New -> Terminal.
Dari sana, buat clone materi sumber dengan perintah ini:
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
4. Menjelajahi dan Memvisualisasikan Data
Di bagian ini, Anda akan:
- Membuat kueri yang mengelompokkan data ke dalam deret waktu
- Mengisi nilai yang tidak ada
- Memvisualisasikan data
- Menguraikan deret waktu menjadi komponen tren dan musiman
Langkah 1
Di Vertex AI Workbench, buka training-data-analyst/courses/ai-for-time-series/notebooks dan buka 01-explore.ipynb.
Langkah 2
Hapus semua sel di notebook (Edit > Clear All Outputs), ubah setelan region, project, dan bucket di salah satu dari beberapa sel pertama, lalu jalankan sel satu per satu.
Langkah 3
Di bagian ini, Anda telah mengimpor data dan memvisualisasikan berbagai dimensinya. Setelah memiliki gambaran yang lebih jelas tentang data, Anda akan siap melanjutkan ke pemodelan machine learning menggunakan data ini.

5. Membuat Model dengan Perkiraan Deret Waktu BigQuery
Di bagian ini, Anda akan:
- Mengimpor data input deret waktu ke dalam tabel BigQuery
- Membuat model deret waktu menggunakan sintaksis BQML
- Mempelajari cara mengevaluasi parameter dan akurasi model
- Membuat perkiraan menggunakan model Anda
Langkah 1
Kita akan membuat tabel BigQuery dengan data mentah dari CSV yang baru saja kita jelajahi. Mari kita mulai dengan mendownload CSV dari lingkungan notebook.
Dari direktori training-data-analyst/courses/ai-for-time-series/notebooks/data, klik kanan cta_ridership.csv, lalu Download ke lingkungan lokal Anda.
Langkah 2
Selanjutnya, kita akan mengupload data ini ke dalam tabel BigQuery.
Buka BigQuery di konsol (dengan menelusuri atau menggunakan link ini):

Anda dapat menambahkan tabel ke set data baru atau yang sudah ada, yang mengelompokkan tabel terkait. Jika belum membuat set data, Anda dapat mengklik project di sudut kiri bawah, lalu memilih Create Dataset di sudut kanan bawah.

Pilih nama pilihan Anda, seperti demo, terima setelan default, lalu lanjutkan.
Setelah set data tersebut dipilih, pilih Buat Tabel di sudut kanan bawah untuk membuat tabel baru.

Untuk opsi pembuatan tabel, pilih:
- Buat tabel dari: Upload
- Pilih file: cta_ridership.csv
- Nama tabel: cta_ridership
- Skema: Centang kotak untuk mendeteksi Parameter input dan skema secara otomatis

Langkah 3
Sekarang saatnya membuat model. BigQuery ML menyediakan sintaksis langsung yang mirip dengan SQL yang memungkinkan Anda membuat berbagai jenis model.
Di editor kueri, tempel/ketik kueri ini, ganti demo jika perlu dengan nama set data Anda di kedua tempat:
CREATE OR REPLACE MODEL
`demo.cta_ridership_model` OPTIONS(MODEL_TYPE='ARIMA',
TIME_SERIES_TIMESTAMP_COL='service_date',
TIME_SERIES_DATA_COL='total_rides',
HOLIDAY_REGION='us') AS
SELECT
service_date, total_rides
FROM
`demo.cta_ridership`
Mari kita bahas elemen utama sintaksis untuk pemahaman:
| Pernyataan ini membuat model. Ada varian pernyataan ini, misalnya |
| Di sini, kita menentukan opsi model, dengan opsi pertama adalah jenis model. Memilih ARIMA akan membuat model perkiraan deret waktu. |
| Kolom dengan informasi tanggal/waktu |
| Kolom data |
| Dengan parameter opsional ini, kita dapat menyertakan hari libur ke dalam model. Karena eksplorasi data pada langkah sebelumnya menunjukkan bahwa jumlah penumpang lebih rendah pada hari libur, dan data berasal dari Chicago, IL, AS, kami menyertakan hari libur AS ke dalam model. |
| Bagian ini memilih data input yang akan kita gunakan untuk melatih model. |
Ada sejumlah opsi lain yang dapat Anda tambahkan ke kueri, seperti menentukan kolom jika Anda memiliki beberapa deret waktu, atau memilih apakah akan otomatis menemukan parameter model ARIMA. Anda dapat mengetahui detail selengkapnya dalam referensi sintaksis pernyataan CREATE MODEL untuk model deret waktu.
Langkah 4
Mari cari tahu lebih lanjut model kami. Setelah selesai melatih, jalankan kueri lain, sekali lagi ganti demo jika diperlukan:
SELECT * FROM ML.EVALUATE(MODEL `demo.cta_ridership_model`)
Mari kita tafsirkan hasilnya. Di setiap baris, Anda akan melihat model kandidat, dengan parameter dan statistik evaluasinya. Hasil ditampilkan dalam urutan menaik AIC, atau kriteria informasi Akaike, yang memberikan indikator relatif kualitas model. Jadi, model di baris pertama memiliki AIC terendah, dan dianggap sebagai model terbaik.
Anda akan dapat melihat parameter p, d, dan q dari model ARIMA, serta musiman yang ditemukan dalam model. Dalam hal ini, model teratas mencakup musiman mingguan dan tahunan.

Langkah 5
Sekarang, kita siap membuat perkiraan dengan fungsi ML.FORECAST.
Tempel/ketik yang berikut (ganti demo jika diperlukan):
SELECT
*
FROM
ML.FORECAST(MODEL `demo.cta_ridership_model`,
STRUCT(7 AS horizon))
Kueri ini hanya memperkirakan 7 hari ke depan menggunakan model kami. Kita dapat melihat tujuh baris yang ditampilkan di bawah. Prakiraan juga mencakup interval keyakinan, yang secara default adalah 0,95, tetapi dapat dikonfigurasi dalam kueri.

Kerja bagus: kita telah membuat model deret waktu hanya dengan beberapa kueri BQML.
6. Membangun Model Perkiraan Kustom
Di bagian ini, Anda akan:
- Menghapus pencilan dari data
- Melakukan perkiraan multi-langkah
- Menyertakan fitur tambahan dalam model deret waktu
- Mempelajari arsitektur jaringan neural untuk peramalan deret waktu: LSTM dan CNN
- Mempelajari model statistik, termasuk Perataan Eksponensial Holt-Winters
- Model ansambel
Langkah 1
Di Vertex AI Workbench, buka training-data-analyst/courses/ai-for-time-series/notebooks dan buka 02-model.ipynb.
Langkah 2
Hapus semua sel di notebook (Edit > Clear All Outputs), ubah setelan region, project, dan bucket di salah satu dari beberapa sel pertama, lalu jalankan sel satu per satu.
Langkah 3
Di notebook, Anda kini telah mempelajari beberapa arsitektur model: LSTM, CNN, dan model statistik. Untuk setiap model, Anda dapat melihat performa model terhadap data pengujian:

7. Melatih dan Memprediksi di Cloud
Di bagian ini, Anda akan:
- Menyiapkan data dan model untuk pelatihan di cloud
- Latih model Anda dan pantau progres tugas dengan AI Platform Training
- Memprediksi menggunakan model dengan AI Platform Prediction
Langkah 1
Di Vertex AI Workbench, buka training-data-analyst/courses/ai-for-time-series/notebooks dan buka 03-cloud-training.ipynb.
Langkah 2
Hapus semua sel di notebook (Edit > Clear All Outputs), ubah setelan region, project, dan bucket di salah satu dari beberapa sel pertama, lalu jalankan sel satu per satu.
Langkah 3
Di bagian sebelumnya, kita telah melatih model dan melakukan prediksi dengannya, semuanya dalam notebook Workbench. Di bagian ini, kita telah menunjukkan cara menggunakan Python SDK for Vertex AI dari notebook Anda untuk menggunakan layanan Vertex AI dalam pelatihan dan deployment.

8. Tantangan
Di bagian ini, Anda akan mencoba menerapkan konsep yang telah dipelajari ke set data baru.
Kami tidak akan memberikan petunjuk mendetail, hanya beberapa petunjuk (jika Anda menginginkannya).
Tujuannya adalah memprediksi permintaan layanan 311 dari Kota New York. Permintaan non-darurat ini mencakup keluhan kebisingan, masalah lampu jalan, dll.
Langkah 1
Mari kita mulai dengan memahami set data.
Pertama, akses set data City of New York 311 Service Requests.
Untuk lebih memahami data, coba beberapa contoh kueri yang tercantum dalam deskripsi set data:
- Berapa jumlah permintaan 311 yang terkait dengan truk es krim?
- Pada hari apa permintaan 311 terkait pesta paling banyak diterima?
Di UI BigQuery, pilih Create Query untuk melihat cara mengakses set data. Perhatikan bahwa pernyataan select mengkueri dari bigquery-public-data.new_york_311.311_service_requests.
Langkah 2
Kita siap memulai. Di bagian ini, lakukan modifikasi pada notebook Explore and Visualize untuk menggunakan data ini.
Petunjuk
- Duplikasikan notebook
01-explore.ipynbdan mulai kerjakan dari sana. - Untuk menjelajahi data, coba kueri ini:
from google.cloud import bigquery as bq
sql = """
SELECT * FROM `bigquery-public-data.new_york_311.311_service_requests` LIMIT 5
"""
client = bq.Client(project=PROJECT)
df = client.query(sql).to_dataframe()
df.head()
- Untuk mendapatkan jumlah insiden menurut bulan, gunakan kueri ini:
SELECT
COUNT(unique_key) as y,
DATE_TRUNC(DATE(created_date), month) as ds
FROM `bigquery-public-data.new_york_311.311_service_requests`
GROUP by ds ORDER BY ds asc
- Perbarui variabel kolom di bagian konstanta. Dalam kueri di atas, kolom target adalah y, dan kolom tanggal adalah ds. Tidak ada fitur tambahan.
- Pertimbangkan untuk mengubah nama file tempat Anda mengekspor data untuk lab berikutnya.
- Ekspor data menggunakan:
df.to_csv(YOUR-EXPORT-FILENAME, index=False)
Langkah 3
Sekarang, mari kita buat model deret waktu dengan data bulanan.
Petunjuk:
- Duplikasikan notebook
02-model.ipynbdan mulai kerjakan dari sana. - Perbarui parameter set data:
- Perbarui parameter
target_coldants_colagar sesuai dengan set data baru Anda. - Perbarui parameter model:
- Frekuensi ke bulanan (kode untuk awal bulan adalah 'MS')
- Langkah-langkah input: 12 (periode lihat balik adalah 12 bulan)
- Langkah-langkah output: 3 (memprediksi 3 bulan ke depan)
- Musim: 12 (Musiman adalah 12 bulan)
- Ubah nama file input jika Anda mengubahnya di notebook sebelumnya.
- Jika Anda menjalankan kueri di pertengahan bulan, total bulanan untuk bulan terakhir akan jauh lebih rendah dari yang diharapkan. Jadi, untuk tujuan lab ini, mari hapus bulan terakhir dari set data menggunakan:
df = df[:-1] - Sepertinya tidak ada pencilan yang jelas dalam data, jadi lewati atau beri komentar pada sel tersebut.
- Sesuaikan unit LSTM dan filter CNN serta ukuran kernel untuk model baru ini.
9. Pembersihan
Jika Anda ingin terus menggunakan notebook ini, sebaiknya matikan notebook saat tidak digunakan. Dari UI Workbench di Konsol Cloud, pilih notebook, lalu pilih Stop:

Jika Anda ingin menghapus semua resource yang telah dibuat di lab ini, cukup Hapus notebook workbench, bukan menghentikannya.
Menggunakan menu Navigation di Konsol Cloud, jelajahi Storage dan hapus kedua bucket yang Anda buat untuk menyimpan aset model (PERINGATAN: hanya lakukan ini jika Anda membuat bucket baru hanya untuk lab ini).
