rafifaiz12 commited on
Commit
d1170d9
Β·
verified Β·
1 Parent(s): c7fedea

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +9 -30
README.md CHANGED
@@ -22,41 +22,20 @@ Eksperimen dilakukan secara komprehensif pada dua dataset rilis **Amazon Review
22
 
23
  ---
24
 
25
- ## 1. Ringkasan Arsitektur & Protokol Eksperimen
26
-
27
- Sistem dirancang untuk menggantikan ketergantungan pada model *deep learning* yang berat (seperti SVD++ dan *Dual-layer Graph Attention Network*) dengan arsitektur heuristik dua tahap yang transparan dan bebas dari masalah *exploding gradient*, dilanjutkan dengan mekanisme *post-processing reranking*:
28
-
29
- 1. **Cabang Prosedur 1 (Prapemrosesan & K-Core Filtering):** Pembersihan data interaksi dan metadata, pembuangan *dangling edges* pada atribut `also_buy` dan `also_view`, *Iterative K-Core Filtering* ($\text{min\_user}=20, \text{min\_item}=5$), serta *Multi-Hot Category Encoding*.
30
- 2. **Cabang Prosedur 2 (Protokol Simulasi Masking 80:20):** Pemisahan *user-stratified hold-out* yang menyembunyikan 20% transaksi item relevan pengguna ($\ge \bar{r}_u$ atau $\ge 4.0$) menjadi bernilai $0$ pada matriks latih (`train_matrix.npz`) dan mengisolasinya di dalam kunci jawaban (`test_ground_truth_dict.pkl`) untuk diuji apakah sistem mampu menebaknya kembali.
31
- 3. **Cabang Prosedur 3 (Analisis Sparsity & Pelabelan Pareto 20:30:50):** Perhitungan tingkat kekosongan matriks (*sparsity*) dan pengelompokan produk murni berdasarkan frekuensi interaksi di *Train Set* ke dalam zona **HEAD (20% teratas)**, **MID (30% menengah)**, dan **TAIL (50% terbawah)** beserta skor popularitas ternormalisasi $Pop(i) \in [0, 1]$.
32
- 4. **Cabang Prosedur 4 (Stage 1 – Modified User-Based CF & Filter Histori Wajib):** Perhitungan matriks kemiripan pengguna, prediksi rating item yang belum pernah diinteraksikan, penegakan aturan **Seen-Item Filtering ($\hat{r}_{u,i} = -\infty$ untuk seluruh item di *Train Set*)**, serta ekstraksi himpunan item kurang memuaskan (*Low-Rated Item Set* $L_u$, dengan $r_{u,i} < \bar{r}_u$) dan item memuaskan ($H_u$).
33
- 5. **Cabang Prosedur 5 (Stage 2 – Co-occurrence Graph & Kandidat Bundle Baseline):** Pembangunan graf berarah berbobot dari relasi `also_buy` ($w=1.0$), `also_view` ($w=0.6$), dan sisi balik ($w=0.4$). Sistem merakit kandidat paket berukuran $B=3$ untuk menghasilkan *Top-50 Bundle Candidate Pool* per pengguna dengan skor relevansi gabungan:
34
- $$Rel(u, b) = \gamma_1 \cdot \tilde{R}_{CF}(u, b) + \gamma_2 \cdot Sim_{cat}(b, L_u) + \gamma_3 \cdot Connectivity(b, \mathcal{G})$$
35
- di mana $\gamma_1 = 0.60, \gamma_2 = 0.25, \gamma_3 = 0.15$. Pengurutan murni berdasarkan $Rel(u, b)$ tertinggi menghasilkan **Skenario 1 (Baseline Top-10)**.
36
- 6. **Cabang Prosedur 6 (Post-Processing – Controlled Reranking Layer):** Penyusunan ulang kandidat *bundle* untuk menghasilkan daftar rekomendasi Top-$K$ ($K=10$) melalui tiga metode:
37
- * **Skenario 2 (*Top-k Balancing* – Kuota Eksplisit 30:40:30):** Pembagian slot posisi rekomendasi secara terstruktur menjadi 30% Zona *Head* (slot 1–3), 40% Zona Prediksi Personalisasi Murni (slot 4–7), dan 30% Zona *Tail* (slot 8–10).
38
- * **Skenario 3 (*Popularity-Aware Reranking*):** Penyesuaian skor deterministik menggunakan penalti popularitas paket:
39
- $$Score_{final}(u, b) = \alpha \cdot Rel(u, b) - \beta \cdot Pop(b)$$
40
- dengan pengujian sensitivitas *Grid Search* pada pasangan $(\alpha, \beta) \in \{(0.9, 0.1), (0.8, 0.2), (0.7, 0.3), (0.6, 0.4), (0.5, 0.5)\}$.
41
- * **Skenario 4 (*Full Controlled Reranking – Roulette Wheel Selection*):** Pengambilan sampel probabilistik berbobot tanpa pengembalian (*weighted sampling without replacement*) sebanyak 5 *trials* (`seed=42`) berdasarkan distribusi peluang dari $Score_{final}(u, b)$.
42
- 7. **Cabang Prosedur 7 (Evaluasi Akurasi Tebakan Masking & Pemerataan Eksposur):** Pengukuran **Recall@10**, **NDCG@10** (melalui protokol *Bundle-Position Hit* terhadap item *masking*), **Category Coverage@10**, serta **Long-Tail Exposure@10** (proporsi slot item HEAD : MID : TAIL).
43
 
44
- ---
45
-
46
- ## 2. Analisis Eksperimen 1: Dataset `2018_Toys_and_Games`
47
-
48
- ### 2.1. Karakteristik Data, Sparsity, dan Distribusi Popularitas Awal (Hari 1)
49
  * **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).
50
  * **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.
51
  * **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%**.
52
  * **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.
53
 
54
- ### 2.2. Performa Stage 1 (UBCF) & Stage 2 (Co-occurrence Graph) (Hari 2)
55
  * **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*).
56
  * **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**.
57
  * **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%**.
58
 
59
- ### 2.3. Hasil Evaluasi Controlled Reranking Layer pada `2018_Toys_and_Games` (Hari 3)
60
  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)**.
61
 
62
  #### Tabel 1. Komparasi Hasil Eksperimen Antar-Skenario pada `2018_Toys_and_Games`
@@ -85,20 +64,20 @@ Audit *Fairness Guardrails* pada Langkah 6.1 mengonfirmasi **0 pelanggaran filte
85
 
86
  ---
87
 
88
- ## 3. Analisis Eksperimen 2: Dataset `2018_Movies_and_TV`
89
 
90
- ### 3.1. Karakteristik Data Skala Masif, Extreme Sparsity, dan Efek Blockbuster (Hari 1)
91
  * **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)**.
92
  * **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.
93
  * **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%**.
94
  * **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).
95
 
96
- ### 3.2. Skalabilitas Vektorisasi Stage 1–2 & Bias Popularitas pada Baseline (Hari 2)
97
  * **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*).
98
  * **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.
99
  * **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%**.
100
 
101
- ### 3.3. Hasil Evaluasi Controlled Reranking Layer pada `2018_Movies_and_TV` (Hari 3)
102
  Audit *Fairness Guardrails* memastikan **0 pelanggaran histori (`Seen-Item Violations = 0`)** dan **100% ketersediaan kandidat HEAD serta TAIL untuk seluruh 24.786 pengguna**.
103
 
104
  #### Tabel 3. Komparasi Hasil Eksperimen Antar-Skenario pada `2018_Movies_and_TV`
@@ -130,7 +109,7 @@ Audit *Fairness Guardrails* memastikan **0 pelanggaran histori (`Seen-Item Viola
130
 
131
  ---
132
 
133
- ## 4. Analisis Komparatif Karakteristik Kedua Dataset (`2018_Toys_and_Games` vs. `2018_Movies_and_TV`)
134
 
135
  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:
136
 
 
22
 
23
  ---
24
 
25
+ ## 1. Analisis Eksperimen 1: Dataset `2018_Toys_and_Games`
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
+ ### 1.1. Karakteristik Data, Sparsity, dan Distribusi Popularitas Awal (Hari 1)
 
 
 
 
28
  * **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).
29
  * **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.
30
  * **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%**.
31
  * **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.
32
 
33
+ ### 1.2. Performa Stage 1 (UBCF) & Stage 2 (Co-occurrence Graph) (Hari 2)
34
  * **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*).
35
  * **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**.
36
  * **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%**.
37
 
38
+ ### 1.3. Hasil Evaluasi Controlled Reranking Layer pada `2018_Toys_and_Games` (Hari 3)
39
  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)**.
40
 
41
  #### Tabel 1. Komparasi Hasil Eksperimen Antar-Skenario pada `2018_Toys_and_Games`
 
64
 
65
  ---
66
 
67
+ ## 2. Analisis Eksperimen 2: Dataset `2018_Movies_and_TV`
68
 
69
+ ### 2.1. Karakteristik Data Skala Masif, Extreme Sparsity, dan Efek Blockbuster (Hari 1)
70
  * **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)**.
71
  * **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.
72
  * **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%**.
73
  * **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).
74
 
75
+ ### 2.2. Skalabilitas Vektorisasi Stage 1–2 & Bias Popularitas pada Baseline (Hari 2)
76
  * **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*).
77
  * **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.
78
  * **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%**.
79
 
80
+ ### 2.3. Hasil Evaluasi Controlled Reranking Layer pada `2018_Movies_and_TV` (Hari 3)
81
  Audit *Fairness Guardrails* memastikan **0 pelanggaran histori (`Seen-Item Violations = 0`)** dan **100% ketersediaan kandidat HEAD serta TAIL untuk seluruh 24.786 pengguna**.
82
 
83
  #### Tabel 3. Komparasi Hasil Eksperimen Antar-Skenario pada `2018_Movies_and_TV`
 
109
 
110
  ---
111
 
112
+ ## 3. Analisis Komparatif Karakteristik Kedua Dataset (`2018_Toys_and_Games` vs. `2018_Movies_and_TV`)
113
 
114
  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:
115