Bagian 4
Arsitektur Sistem
Rumus dan rancangan teknis tiap tahap, persis mengikuti implementasi di
src/wisata/ — bukan versi
idealisasi dari proposal.
4.1 Ringkasan Empat Tahap
Desain arsitektur sesuai proposal (Gambar 2) memuat empat tahap berurutan: ① Cascade-Hybrid Recommendation (CBF → NeuMF), ② penggabungan menjadi Top-N rekomendasi final, ③ prediksi kunjungan wisatawan, dan ④ optimasi rute dengan algoritma genetika yang mengonsumsi keluaran ① dan ③ sekaligus.
4.2 Tahap 1 — Content-Based Filtering (CBF)
Vektor fitur destinasi (35 dimensi) tersusun dari empat blok, masing-masing dinormalisasi L2 secara terpisah lalu diberi bobot sebelum digabung — sehingga blok berdimensi besar (fasilitas, kegiatan) tidak otomatis mendominasi kemiripan kosinus dibanding blok kecil (kategori, budget):
dengan b = \dfrac{\log(1+\text{budget}) - \min}{\max - \min} (skala log, karena sebaran budget sangat menceng ke kanan).
Pembobotan IDF pada fasilitas dan kegiatan — atribut yang hampir universal (mis. "Fotografi", muncul di 66/70 destinasi) diberi bobot rendah, atribut langka diberi bobot tinggi:
N = 70 destinasi, df(t) = jumlah destinasi yang memiliki atribut t [T9] .
Penggabungan dengan citra — fitur visual CNN (32 dimensi setelah PCA) digabung lewat bobot α yang dapat disetel:
α = 1 berarti atribut saja (mode sebelum citra tersedia); α = 0 berarti citra murni.
Profil pengguna — dicampur dari riwayat interaksi dan kategori yang diminati (stated preference), dengan bobot campuran w :
Pengguna tanpa riwayat interaksi otomatis mendapat w = 1 (prior sepenuhnya) — jalur cold-start tertangani tanpa cabang kode terpisah.
Skor CBF — kemiripan kosinus antara profil dan tiap destinasi [T9] :
4.3 Tahap 2 — Neural Collaborative Filtering (NeuMF)
NeuMF [T1] menggabungkan dua jalur yang mempelajari embedding pengguna dan destinasi secara terpisah (dimensi 32), lalu menyatukan keduanya:
4 lapis dense (64 → 32 → 16 → 8), aktivasi ReLU, dropout 0,2.
Dilatih dengan implicit feedback — rating ≥ 4 dianggap positif — dan negative sampling (4 negatif per positif, diambil dari destinasi yang belum pernah diinteraksi), memakai binary cross-entropy:
4.4 Cascade: CBF → NeuMF
Berbeda dari hybrid berbobot (skor CBF dan NeuMF dijumlahkan, keduanya melihat seluruh katalog), cascade bekerja berjenjang: CBF menyaring Top-M kandidat (M = 20), lalu hanya kandidat itu yang diperingkat ulang oleh NeuMF. Destinasi di luar Top-M diberi skor −∞ sehingga tidak pernah muncul di hasil akhir, berapa pun skor NeuMF-nya:
Konsekuensinya, Recall@M tahap CBF menjadi langit-langit kinerja seluruh cascade — dibuktikan di Hasil §6.2.
4.5 Tahap 3 — Prediksi Kunjungan Wisatawan
Model sekuensial (RNN, GRU [T6] , atau LSTM [T5] ) memprediksi kunjungan harian per destinasi dari fitur lag dan statistik bergulir:
lag_365 sengaja tidak dipakai baku — menyertakannya membuang seluruh data
2023 (data latih menyusut 703 → 366 hari). Seluruh statistik bergulir dihitung setelah
shift(1) untuk mencegah kebocoran data masa depan.
Dievaluasi dengan empat metrik — dua dilaporkan sekaligus karena data memuat nilai nol (situs Hindu pada hari Nyepi) yang membuat MAPE tak terdefinisi tanpa penanganan:
4.6 Tahap 4 — Optimasi Rute (Algoritma Genetika)
Dirumuskan sebagai Team Orienteering Problem [T7,T8] : dari sekumpulan kandidat, pilih sebagian dan tentukan urutannya di bawah batas waktu harian, jumlah hari, dan anggaran — melewatkan destinasi adalah bagian sah dari solusi, bukan kegagalan.
Fungsi fitness — inilah tempat klaim kebaruan bekerja: skor prioritas cascade dan prediksi kepadatan masuk bersamaan ke suku yang sama:
Relevansi diberi diskon posisi ala nDCG — destinasi relevan yang dikunjungi lebih awal dihargai lebih tinggi.
Jarak dinormalisasi terhadap batas teoretis: kecepatan × jam tersedia × jumlah hari.
Operator genetika — populasi 100, 300 generasi (berhenti dini bila 60 generasi tanpa perbaikan), elitisme 5%, seleksi turnamen (k=3):
- Order Crossover (OX) — mempertahankan urutan relatif induk kedua pada segmen yang tidak diwarisi dari induk pertama.
- Mutasi campuran (laju 25%) — dipilih acak antara tukar posisi, sisip ulang, atau balik segmen.
Empat varian ablation — dibentuk dengan menolkan sebagian bobot, untuk mengisolasi kontribusi tiap suku (bukti kuantitatifnya di Hasil §6.4):
| Varian | w_rel | w_jarak | w_padat | Peran |
|---|---|---|---|---|
| A | 0 | 1 | 0 | Jarak saja — baseline TSP klasik |
| B | 1 | 1 | 0 | + prioritas — setara sistem rekomendasi+rute biasa |
| C | 0 | 1 | 1 | + kepadatan — kontrol |
| D | 1 | 1 | 1 | Ketiganya — usulan penelitian ini |
4.7 Ringkasan Metrik Evaluasi
| Komponen | Metrik | Sumber |
|---|---|---|
| Rekomendasi (CBF, NeuMF, cascade) | Precision@K, Recall@K, F1@K, nDCG@K, HR@K, MRR, Coverage, Gini | [T10,T11] |
| Prediksi kunjungan | MAE, RMSE, MAPE, sMAPE | §4.5 |
| Rute (GA) | nDCG rute, efisiensi jarak, rata-rata kepadatan, kelayakan anggaran | §4.6 |
Evaluasi rekomendasi memakai leave-one-out dengan full ranking atas 70 item (bukan negative sampling) — pilihan ini penting untuk interpretasi hasil, lihat Hasil §6.1.