File size: 16,461 Bytes
b7fd35f
c7fedea
 
 
 
 
 
 
 
 
 
 
 
b7fd35f
c7fedea
b7fd35f
c7fedea
 
 
 
 
 
 
 
d1170d9
c7fedea
d1170d9
c7fedea
 
 
 
 
00d0509
 
d1170d9
c7fedea
 
 
 
d1170d9
c7fedea
 
e2a2630
 
 
 
 
 
 
c7fedea
 
 
 
 
 
 
 
d1170d9
c7fedea
d1170d9
c7fedea
 
 
 
 
00d0509
 
d1170d9
c7fedea
 
 
 
d1170d9
c7fedea
 
e2a2630
 
 
 
 
 
 
c7fedea
 
 
 
 
 
 
 
 
 
d1170d9
c7fedea
 
 
e2a2630
c7fedea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
---
language:
- id
- en
tags:
- recommender-system
- bundle-recommendation
- popularity-bias
- long-tail-exposure
- controlled-reranking
- collaborative-filtering
- co-occurrence-graph
title: Analisis Eksperimen TA
---
# Pemerataan Eksposur Produk Long-Tail pada Sistem Rekomendasi Bundle melalui Simplified Two-Stage Recommendation dan Controlled Reranking Layer

Repositori ini memuat implementasi penuh, catatan log eksekusi (`logs/`), pengujian unit otomatis (`tests/`), serta artefak hasil evaluasi (`data/processed/`) untuk penelitian Tugas Akhir mengenai **Sistem Rekomendasi Paket (*Bundle Recommendation*) Dua Tahap yang Disederhanakan (*Simplified Two-Stage Recommendation*) dengan Lapisan Pengurutan Ulang Terkontrol (*Controlled Reranking Layer*)**.

Eksperimen dilakukan secara komprehensif pada dua dataset rilis **Amazon Review Data (2018)** yang memiliki karakteristik skala, kepadatan relasi graf (`also_buy` dan `also_view`), serta tingkat ketimpangan popularitas (*popularity bias*) yang kontras:
1. **Amazon `2018_Toys_and_Games`** *(Skala Menengah – Katalog Spesifik/Ceruk dengan Distribusi Relasi Graf Merata)*
2. **Amazon `2018_Movies_and_TV`** *(Skala Masif – Katalog Blockbuster dengan Dominasi Bias Popularitas Ekstrem)*

---

## 1. Analisis Eksperimen 1: Dataset `2018_Toys_and_Games`

### 1.1. Karakteristik Data, Sparsity, dan Distribusi Popularitas Awal (Hari 1)
* **Penyaringan Skala Menengah:** Dari **8.201.231** baris interaksi mentah dan **633.883** metadata produk, proses deduplikasi dan *Iterative K-Core Filtering* menghasilkan **1.025 pengguna aktif ($|U|$)**, **3.399 produk ($|I|$)**, dan **48.318 interaksi bersih** (rata-rata $47,14$ transaksi per pengguna).
* **Kekayaan Relasi Graf & Kategori Asli:** Terdapat **287 kategori unik** (yang membentuk **3.434 unit kategori/ceruk evaluasi** pada matriks evaluasi akhir). Setelah pembersihan *dangling edges*, tersisa **12.531 sisi `also_buy`** dan **3.375 sisi `also_view`** valid.
* **Protokol Masking & Sparsity:** Pemisahan 80:20 mengunci **39.040 interaksi latih ($80,80\%$)** dan menyembunyikan **9.278 interaksi uji/masking ($19,20\%$)** dengan **0 kebocoran data (*Zero Leakage*)**. Matriks latih berukuran $1.025 \times 3.399$ memiliki tingkat **Sparsity sebesar 98,8794%**.
* **Karakteristik Kurva Long-Tail:** Berdasarkan pembagian Pareto 20:30:50 pada *Train Set* (**680 HEAD : 1.020 MID : 1.699 TAIL**), **20% produk HEAD menguasai 33,70% dari total interaksi** (dengan rentang frekuensi $[0, 77]$). Angka $33,70\%$ ini menunjukkan bahwa meskipun terdapat bias popularitas, minat pengguna pada domain mainan dan permainan cukup tersebar ke berbagai produk spesifik/ceruk.

![image](https://cdn-uploads.huggingface.co/production/uploads/6aec8c2aa79eb8b7cb6c6ec1/BSbbbfQdr704aSyvvtKD9.png)

### 1.2. Performa Stage 1 (UBCF) & Stage 2 (Co-occurrence Graph) (Hari 2)
* **Stage 1 (Modified UBCF):** Rata-rata ambang kepuasan pengguna ($\bar{r}_u$) adalah **4,2153** (rentang $[2.61, 5.00]$). Matriks kemiripan pengguna ($1.025 \times 1.025$) mencatat **303.852 pasangan kemiripan aktif**, menghasilkan **3.444.935 prediksi valid** dengan **Seen-Item Leakage = 0**. Rata-rata setiap pengguna memiliki **15,13 item *Low-Rated* ($L_u$)** dan **23,11 item *High-Rated* ($H_u$)** (dengan 52 pengguna ditangani melalui *Uniform Rating Fallback*).
* **Stage 2 (Co-occurrence Graph):** Graf berarah memiliki **3.399 simpul** dan **27.850 sisi aktif** (`buy` = 12.531, `view` = 3.375, `reverse` = 12.684), dengan rata-rata kemiripan kategori antar-item sebesar **0,3403**.
* **Temuan Skenario 1 (Baseline Top-10):** Berkat padatnya jalur graf `also_buy`/`also_view` yang menghubungkan item *Low-Rated* langsung menuju item alternatif yang spesifik, model *Baseline Two-Stage* secara alami telah menghasilkan distribusi eksposur yang cukup seimbang yaitu **22,63% HEAD : 25,02% MID : 52,34% TAIL**, dengan **Recall@10 = 0.0340**, **NDCG@10 = 0.0494**, dan **Category Coverage@10 = 53,93%**.

### 1.3. Hasil Evaluasi Controlled Reranking Layer pada `2018_Toys_and_Games` (Hari 3)
Audit *Fairness Guardrails* pada Langkah 6.1 mengonfirmasi **0 pelanggaran filter histori (`Seen-Item Violations = 0`)** dan **100% ketersediaan opsi kandidat HEAD maupun TAIL (1.025/1.025 pengguna)**.

#### Gambar 1. Komparasi Hasil Eksperimen Antar-Skenario pada `2018_Toys_and_Games`

![image](https://cdn-uploads.huggingface.co/production/uploads/6aec8c2aa79eb8b7cb6c6ec1/af6Lok2nzG7mtMmsxiIkr.png)

#### Gambar 2. Sensitivitas Grid Search $(\alpha, \beta)$ Skenario 3 pada `2018_Toys_and_Games`

![image](https://cdn-uploads.huggingface.co/production/uploads/6aec8c2aa79eb8b7cb6c6ec1/o2kHOxV30MR9b4GrxFzG4.png)

#### Temuan Kunci pada `2018_Toys_and_Games`:
1. **Keunggulan Kualitas Posisi pada Skenario 2 (*Top-k Balancing*):** Penempatan 30% kuota *Head* di posisi atas, 40% prediksi personalisasi di tengah, dan 30% *Tail* di akhir berhasil meraih **NDCG@10 tertinggi (0.0497)** sekaligus menaikkan **Long-Tail Exposure@10 menjadi 56,10%** tanpa menurunkan *Category Coverage* (53,93%).
2. **Fenomena *Over-Penalization* pada Skenario 3 Deterministik:** Karena daftar kandidat *Baseline* pada *Toys_and_Games* sejak awal sudah memiliki proporsi *Head* yang rendah (22,63%), pemberian penalti deterministik $-\beta \cdot Pop(b)$ secara kaku mendorong daftar rekomendasi terlalu ekstrem ke arah item *Tail* (mencapai **88,12%** hingga **95,05%**). Akibatnya, item *Head* dan *Mid* yang relevan tereliminasi dan cakupan kategori menyempit dari 53,93% menjadi 43,59%.
3. **Kemenangan Mutlak Skenario 4 (*Full Controlled Reranking / Roulette Wheel*):** Mekanisme probabilistik berbobot terbukti menjadi solusi paling unggul pada dataset ini. Skenario 4 berhasil **meningkatkan akurasi tebakan masking melampaui Baseline** (**Recall@10 naik menjadi rata-rata 0.0360**, mencapai puncak **0.0381** pada *Trial 2*, dibandingkan *Baseline* 0.0340) sekaligus **melonjakkan Category Coverage@10 sebesar +14,83%** (dari 53,93% menjadi **68,76%**) dan menjaga **Long-Tail Exposure@10 di 55,47%**.

---

## 2. Analisis Eksperimen 2: Dataset `2018_Movies_and_TV`

### 2.1. Karakteristik Data Skala Masif, Extreme Sparsity, dan Efek Blockbuster (Hari 1)
* **Penyaringan Skala Raksasa:** Dari **8.765.568** baris interaksi mentah dan **203.766** metadata produk, tahap pembersihan dan *Iterative K-Core Filtering* menghasilkan **24.786 pengguna aktif ($|U|$)**, **37.280 produk ($|I|$)**, dan **1.109.238 interaksi bersih** (rata-rata $44,75$ transaksi per pengguna). Ukuran ruang matriks interaksi mencapai **924.022.080 sel (~924 juta sel)**.
* **Kepadatan Graf & Kategori Asli:** Terdapat **422 kategori unik** (membentuk **8.709 unit kategori/ceruk evaluasi** pada tahap evaluasi akhir) serta jaringan relasi asli yang sangat masif: **358.819 sisi `also_buy`** dan **173.447 sisi `also_view`** valid.
* **Protokol Masking & Extreme Sparsity:** Pemisahan 80:20 mengisolasi **896.430 interaksi latih ($80,81\%$)** dan menyembunyikan **212.808 interaksi uji/masking ($19,19\%$)** dengan **Zero Leakage**. Matriks latih memiliki tingkat kekosongan yang sangat ekstrem yaitu **Sparsity = 99,9030%**.
* **Bukti Empiris Dominasi Blockbuster (Popularity Bias Berat):** Pembagian Pareto 20:30:50 membagi katalog menjadi **7.456 HEAD : 11.184 MID : 18.640 TAIL**. Analisis distribusi pada *Train Set* membuktikan ketimpangan yang sangat tajam: **20% produk HEAD memonopoli 66,89% dari seluruh interaksi pengguna** (dengan frekuensi mencapai $1.120$ interaksi per produk).

![image](https://cdn-uploads.huggingface.co/production/uploads/6aec8c2aa79eb8b7cb6c6ec1/p2j5iz3rk9Whlzgb9Apgp.png)

### 2.2. Skalabilitas Vektorisasi Stage 1–2 & Bias Popularitas pada Baseline (Hari 2)
* **Efisiensi Vektorisasi Stage 1 (UBCF):** Dengan rata-rata ambang kepuasan pengguna $\bar{r}_u = \mathbf{4,1156}$, algoritma *Top-K Pruned Sparse Matrix Multiplication* (`scipy.sparse`) berhasil menyelesaikan perhitungan matriks kemiripan $24.786 \times 24.786$ (**4.944.639 pasangan kemiripan tersimpan** dari 69,95 juta pasangan aktif) dan menghasilkan **923.125.650 prediksi valid** hanya dalam waktu **~21 detik** dengan **Seen-Item Leakage = 0**. Rata-rata pengguna memiliki **12,88 item $L_u$** dan **23,60 item $H_u$** (2.591 pengguna ditangani oleh *Uniform Fallback*).
* **Stage 2 (Co-occurrence Graph):** Graf berarah memuat **37.280 simpul** dan **626.500 sisi aktif** (`buy` = 358.819, `view` = 173.447, `reverse` = 252.130). Perakitan 50 kandidat *bundle* ($B=3$) untuk seluruh 24.786 pengguna diselesaikan menggunakan *Sparse Category Vectors* dalam waktu ~5 menit.
* **Bukti Popularity Bias pada Skenario 1 (Baseline Top-10):** Tanpa intervensi *reranking*, rekomendasi *Baseline* terjebak dalam bias popularitas yang parah: **73,85% slot rekomendasi dikuasai oleh item HEAD**, **18,00% MID**, dan hanya menyisakan **8,16% untuk item TAIL**, dengan capaian **Recall@10 = 0.0466**, **NDCG@10 = 0.0703**, dan **Category Coverage@10 = 69,40%**.

### 2.3. Hasil Evaluasi Controlled Reranking Layer pada `2018_Movies_and_TV` (Hari 3)
Audit *Fairness Guardrails* memastikan **0 pelanggaran histori (`Seen-Item Violations = 0`)** dan **100% ketersediaan kandidat HEAD serta TAIL untuk seluruh 24.786 pengguna**.

#### Gambar 3. Komparasi Hasil Eksperimen Antar-Skenario pada `2018_Movies_and_TV`

![image](https://cdn-uploads.huggingface.co/production/uploads/6aec8c2aa79eb8b7cb6c6ec1/znt1vE3XFYETc3qsD5e6H.png)

#### Gambar 4. Sensitivitas Grid Search $(\alpha, \beta)$ Skenario 3 pada `2018_Movies_and_TV`

![image](https://cdn-uploads.huggingface.co/production/uploads/6aec8c2aa79eb8b7cb6c6ec1/pUz4vPRrDOYGR801cVpje.png)

#### Temuan Kunci pada `2018_Movies_and_TV`:
1. **Efektivitas Skenario 2 (*Top-k Balancing*) dalam Menekan Monopoli Head:** Pembagian kuota 30:40:30 berhasil **meningkatkan Long-Tail Exposure@10 hampir 2,5 kali lipat** (dari 8,16% menjadi **20,24%**) dan menaikkan **Category Coverage@10 sebesar +4,66%** (menjadi **74,06%**), sembari mempertahankan **97,85% kemampuan Recall@10 Baseline** (0.0456 vs 0.0466).
2. **Peningkatan NDCG@10 & Keseimbangan Ideal pada Skenario 3 (*Popularity-Aware*):**
   * Pada bobot penalti ringan $(\alpha=0.9, \beta=0.1)$, pengurangan skor terhadap film *blockbuster* yang terlalu generik terbukti menggeser item *Mid/Tail* yang lebih sesuai dengan konteks pengguna ke peringkat atas, sehingga **NDCG@10 meningkat melampaui Baseline (0.0712 vs 0.0703)** sembari **melipatgandakan Long-Tail Exposure@10 menjadi 16,85%**.
   * Pada titik optimal $(\alpha=0.8, \beta=0.2)$, sistem mencapai keseimbangan proporsi katalog yang sangat ideal yaitu **35,54% HEAD : 31,95% MID : 32,51% TAIL** (**Long-Tail Exposure naik 4x lipat** dan **Category Coverage naik +8,32% menjadi 77,72%**).
3. **Rekor Cakupan Kategori Tertinggi pada Skenario 4 (*Roulette Wheel*):** Pendekatan sampling probabilistik Skenario 4 mencatatkan **Category Coverage@10 tertinggi di antara seluruh metode yaitu 81,02%** (naik **+11,62%** dari *Baseline*), meningkatkan **Long-Tail Exposure@10 lebih dari 3,3x lipat (27,57%)**, serta menunjukkan stabilitas antar-*trial* yang sangat kokoh (standar deviasi Recall dan NDCG hanya $\pm 0.0002$).

---

## 3. Analisis Komparatif Karakteristik Kedua Dataset (`2018_Toys_and_Games` vs. `2018_Movies_and_TV`)

Pengujian lintas domain pada dua dataset dengan skala dan struktur distribusi yang berbeda memberikan pembuktian ilmiah mengenai bagaimana masing-masing mekanisme di dalam *Controlled Reranking Layer* beradaptasi terhadap karakteristik intrinsik data:

### Tabel 1. Matriks Komparatif Karakteristik & Perilaku Model Lintas Dataset
| Dimensi Perbandingan | Dataset 1: `2018_Toys_and_Games` | Dataset 2: `2018_Movies_and_TV` | Implikasi & Analisis Ilmiah |
| :--- | :--- | :--- | :--- |
| **1. Skala Katalog & Pengguna** | **Menengah:** $1.025$ pengguna $\times 3.399$ produk ($48.318$ interaksi; $\sim 3,48$ juta sel matriks) | **Masif:** $24.786$ pengguna $\times 37.280$ produk ($1.109.238$ interaksi; $\sim 924$ juta sel matriks) | Membuktikan skalabilitas komputasi arsitektur *Vectorized Two-Stage + Reranking* dari jutaan hingga hampir 1 miliar sel matriks. |
| **2. Tingkat Sparsity & Konsentrasi Popularitas Awal** | **Sparsity 98,88%** \| 20% produk HEAD menguasai **33,70%** interaksi (*Moderately Skewed*). | **Sparsity 99,90%** \| 20% produk HEAD memonopoli **66,89%** interaksi (*Heavily Skewed / Blockbuster Effect*). | Industri film/TV memiliki konsentrasi *popularity bias* dua kali lipat lebih tajam dibanding mainan/permainan yang lebih terfragmentasi berdasarkan usia/hobi. |
| **3. Struktur Graf & Ruang Kategori** | **27.850 sisi berarah** \| 287 kategori unik (3.434 ceruk evaluasi). | **626.500 sisi berarah** \| 422 kategori unik (8.709 ceruk evaluasi). | Keduanya memiliki graf asli yang padat, namun pada `Movies_and_TV` simpul film populer menjadi *hub* raksasa yang menarik jalur pencarian graf ke arah item *Head*. |
| **4. Perilaku Model Baseline (Skenario 1)** | Distribusi awal sudah cukup merata (**22,63% HEAD : 25,02% MID : 52,34% TAIL**); Recall@10 = **0.0340**, Cov@10 = **53,93%**. | Mengalami *Popularity Bias* ekstrem (**73,85% HEAD : 18,00% MID : 8,16% TAIL**); Recall@10 = **0.0466**, Cov@10 = **69,40%**. | Ketika *Train Set* didominasi 66,89% oleh item *Head* (`Movies_and_TV`), UBCF dan *Co-occurrence Graph* secara alami memperkuat bias tersebut menjadi 73,85% di rekomendasi akhir. |
| **5. Efektivitas Skenario 2 (*Top-k Balancing* 30:40:30)** | Unggul dalam **memaksimalkan NDCG@10 (0.0497)** dan menaikkan Tail ke **56,10%**. | Sangat efektif sebagai **penyeimbang cepat (2,6 detik)**: menaikkan Tail **2,5x lipat (20,24%)** dan Coverage **+4,66%** dengan *loss* akurasi hampir nol. | Skema kuota kaku 30:40:30 berfungsi sebagai *safety net* yang menjamin batas minimum eksposur *Tail* sekaligus menjaga ketepatan posisi puncak lewat 40% slot prediksi. |
| **6. Perilaku Skenario 3 (*Popularity-Aware* $\alpha, \beta$)** | Memicu *over-penalization* menuju Tail ekstrem (hingga 95,05%) karena *Baseline* sudah rendah *Head*. | **Sangat Efektif & Adaptif:** Pada $(0.9, 0.1)$ meningkatkan **NDCG@10 di atas Baseline (0.0712)**; pada $(0.8, 0.2)$ menciptakan proporsi sempurna **35,5% : 32,0% : 32,5%**. | Penalti linear $-\beta \cdot Pop(b)$ sangat krusial pada dataset berbias berat (`Movies_and_TV`) untuk meruntuhkan monopoli item *Head*, tetapi harus diatur ringan ($\beta \le 0.1$) pada dataset yang sudah seimbang. |
| **7. Perilaku Skenario 4 (*Roulette Wheel Selection*)** | **Arsitektur Terbaik Mutlak:** Meningkatkan **Recall@10 di atas Baseline (0.0360 vs 0.0340)** dan melonjakkan **Coverage +14,83% (ke 68,76%)**. | Meraih **Category Coverage@10 Tertinggi (81,02%, naik +11,62%)** dan meningkatkan Tail **3,4x lipat (27,57%)** dengan variansi sangat stabil ($\pm 0.0002$). | Eksplorasi stokastik terbobot (*Roulette Wheel*) secara konsisten menjadi juara dalam memperluas cakupan kategori (*Category Coverage*) di kedua dataset tanpa terjebak pada penyempitan deterministik. |

### Kesimpulan Umum Penelitian
1. **Validasi Arsitektur Heuristik Dua Tahap:** Kombinasi *Modified User-Based CF* (dengan *Seen-Item Masking* $-\infty$) dan *Co-occurrence Graph* (`also_buy`/`also_view`) terbukti mampu merakit kandidat *bundle* yang relevan secara efisien dan stabil hingga skala hampir 1 miliar sel matriks tanpa membutuhkan *deep learning*.
2. **Panduan Pemilihan Strategi Reranking Berdasarkan Karakteristik Katalog:**
   * Untuk katalog dengan **dominasi popularitas ekstrem (*Blockbuster-Heavy* seperti `Movies_and_TV`)**, **Skenario 3 (*Popularity-Aware Reranking* pada $\alpha=0.9, \beta=0.1$ atau $\alpha=0.8, \beta=0.2$)** dan **Skenario 2 (*Top-k Balancing*)** adalah pilihan terbaik untuk merombak monopoli item *Head* (dari 73,85% menjadi ~35,54%), meningkatkan eksposur *long-tail* hingga 4 kali lipat, serta mendongkrak kualitas urutan (*NDCG@10*).
   * Untuk katalog dengan **preferensi ceruk yang tersebar (*Niche-Rich* seperti `Toys_and_Games`)** atau ketika tujuan utama sistem adalah **memaksimalkan keberagaman lintas kategori (*Category Coverage*)**, **Skenario 4 (*Full Controlled Reranking dengan Roulette Wheel Selection*)** merupakan metode paling superior karena mampu memperluas cakupan kategori sebesar **+11,62% hingga +14,83%** sekaligus meningkatkan peluang ditemukannya kembali item keranjang pengguna yang tersembunyi (*Recall@10* melampaui *Baseline*).

---