---
# System prepended metadata

title: web usage mining

---

# Tujuan
[Dataset](https://drive.google.com/file/d/1xm1nX5ZSVmUXobc-JUVVL0Lf6uXOL2iD/view?usp=sharing)
[Dataset NASA untuk tugas](https://ita.ee.lbl.gov/html/contrib/NASA-HTTP.html) Silahkan analisi untuk web usage mining bulan juli
[Presentasi](https://docs.google.com/presentation/d/1yE7ieO7REfOP5EaCbN7b_hgEpa3o_gNp/edit?usp=sharing&ouid=108447658857677622027&rtpof=true&sd=true)

Penambangan penggunaan Web (web usage mining  ) adalah untuk menemukan pola penggunaan menarik dari data Web menggunakan teknik penambangan data. Data penggunaan (usage data) mencatat asal pengguna Web beserta riwayat dan perilaku penjelajahannya di sebuah situs web. Data ini dianalisis untuk menemukan pola dan memprediksi perilaku pengguna. Disini memperkenalkan pembaca pada konsep penambangan penggunaan Web, elemen kunci pra-pemrosesan web usage mining, pemodelan, penemuan, serta analisis pola dan prediksi berdasarkan data tersebut.

# Proses Penambangan Penggunaan Web (Usage data web)

Sebelum kita memulai proses penambangan, sangat diperlukan agar data log Web diproses terlebih dahulu dan analisis pola dilakukan. Pra-pemrosesan data sangat penting karena data log Web bersifat noise serta membingungkan. Mungkin muncul pertanyaan di benak Anda, yaitu mengapa data log Web membingungkan? Jawabannya adalah data log Web membingungkan karena berisi data yang tidak relevan dan ambigu. Sangat diperlukan untuk memproses data ini sebelum menerapkan algoritma penambangan Web apa pun; jika tidak, hal ini dapat memengaruhi hasil proses penambangan.

Proses penambangan penggunaan Web (usage) dapat dikategorikan ke dalam tiga tahap berikut:

1. Pengumpulan dan pra-pemrosesan data
2. Penemuan pola
3. Analisis pola

Pada tahap pra-pemrosesan, pembersihan data clickstream dilakukan. Data clickstream adalah informasi yang dikumpulkan tentang pengguna saat mereka menjelajahi situs web. Clickstream adalah catatan klik individu selama berselancar di Web. Data Click Stream berisi informasi dasar tentang halaman yang dikunjungi, dan selain itu, juga dapat mencakup informasi seperti berapa lama pengguna menghabiskan waktu di halaman tertentu, fitur halaman apa yang mereka gunakan, serta ke mana mereka pergi selanjutnya.

Selanjutnya, data dipartisi dan disajikan dalam bentuk serangkaian operasi pengguna. Kumpulan operasi atau transaksi ini pada dasarnya mewakili aktivitas pengguna individu saat mereka mengunjungi situs tersebut. Data transaksi pengguna dapat ditingkatkan dengan menggunakan, struktur situs, dan sebagainya. 

Tujuan utama fase kedua, yaitu penemuan pola, adalah memperoleh pola tersembunyi dari navigasi/berselancar Web yang dilakukan pengguna. Teknik Pembelajaran Mesin dan Statistik diterapkan agar karakteristik perilaku pengguna dapat tercermin dan statistik rinci mengenai parameter seperti sesi, sumber daya Web, dan sebagainya dapat disajikan.

Seseorang mungkin bertanya, apa gunanya pengumpulan data clickstream, lalu pra-pemrosesan dan penemuan pola? Jawabannya adalah data yang telah diproses dan pola-pola tersebut mengarah pada pembentukan model, yang pada dasarnya digunakan sebagai masukan utama untuk berbagai aplikasi seperti analitik Web, sistem rekomendasi, dan sebagainya. Untuk mencapai model komprehensif ini, hasil dari fase kedua selanjutnya diproses dan difilter pada tahap akhir, yaitu tahap analisis pola. Gambar 1 menggambarkan berbagai tahap penambangan penggunaan Web.

![image](https://hackmd.io/_uploads/ByxOTQKkWg.png)



**Gambar 1.** Tahapan penambangan penggunaan web
## Sumber data

File log server, termasuk log akses server Web dan log server aplikasi, merupakan sumber data utama yang digunakan dalam penambangan penggunaan Web. File situs dan metadata, basis data operasional, template aplikasi, serta pengetahuan domain adalah sumber data tambahan yang penting bagi persiapan data maupun identifikasi pola. Contoh dataset weblog server seperti berikut



```markdown
| No | Timestamp           | IP Address | Method | Request Path                                      | Status Code | Response Size | User-Agent                                                                                     | Referrer URL                                       |
|----|---------------------|------------|--------|---------------------------------------------------|-------------|---------------|------------------------------------------------------------------------------------------------|----------------------------------------------------|
| 1  | 2006-02-01 00:08:43 | 1.2.3.4    | GET    | /classes/cs589/papers.html                        | 200         | 9221          | Mozilla/4.0 (compatible; +MSIE6.0; +Windows+NT+5.1; +SV1; +.NET+CLR+2.0.50727)                 | http://dataminingresources.blogspot.com/           |
| 2  | 2006-02-01 00:08:46 | 1.2.3.4    | GET    | /classes/cs589/papers/cms-tai.pdf                 | 200         | 4096          | Mozilla/4.0 (compatible; +MSIE6.0; +Windows+NT+5.1; +SV1; +.NET+CLR+2.0.50727)                 | http://maya.cs.depaul.edu/~classes/cs589/papers.html |
| 3  | 2006-02-01 08:01:28 | 2.3.4.5    | GET    | /classes/ds575/papers/hyperlink.pdf               | 200         | 318814        | Mozilla/4.0 (compatible; +MSIE6.0; +Windows+NT+5.1)                                            | http://www.google.com/search?hl=en&lr=&q=hyperlink+analysis+for+the+web+survey |
| 4  | 2006-02-02 19:34:45 | 3.4.5.6    | GET    | /classes/cs480/announce.html                      | 200         | 3794          | Mozilla/4.0 (compatible; +MSIE6.0; +Windows+NT+5.1; +SV1)                                     | http://maya.cs.depaul.edu/~classes/cs480/          |
| 5  | 2006-02-02 19:34:45 | 3.4.5.6    | GET    | /classes/cs480/styles2.css                        | 200         | 1636          | Mozilla/4.0 (compatible; +MSIE6.0; +Windows+NT+5.1; +SV1)                                     | http://maya.cs.depaul.edu/~classes/cs480/announce.html |
| 6  | 2006-02-02 19:34:45 | 3.4.5.6    | GET    | /classes/cs480/header.gif                         | 200         | 6027          | Mozilla/4.0 (compatible; +MSIE6.0; +Windows+NT+5.1; +SV1)                                     | http://maya.cs.depaul.edu/~classes/cs480/announce.html |
```

---

### Keterangan
- Kolom **"No"** menunjukkan nomor urut entri.
- Kolom **"Timestamp"** mencakup tanggal dan waktu permintaan.
- Kolom **"IP Address"** berisi alamat IP pengguna.
- Kolom **"Method"** biasanya `GET` atau `POST`.
- Kolom **"Request Path"** adalah jalur file atau halaman yang diminta.
- Kolom **"[Status Code](https://www.hostinger.com/id/tutorial/http-status-code#500_Error_Server)"** menunjukkan kode respons HTTP yang dikirim oleh server sebagai balasan terhadap permintaan klien (misalnya browser atau crawler)(misalnya 200 = sukses).
- Kolom **"Response Size"** adalah ukuran respons dalam byte.
- Kolom **"User-Agent"** mengidentifikasi browser dan sistem operasi.
- Kolom **"Referrer URL"** menunjukkan dari halaman mana permintaan berasal.
### Kolom "Method" {GET atau POST}.
Kolom **"Method"** dalam log server web merujuk pada **metode HTTP** yang digunakan oleh klien (misalnya browser atau aplikasi) saat mengirim permintaan ke server. Metode ini menentukan **jenis tindakan** yang ingin dilakukan terhadap sumber daya (resource) di server.


**GET**
- **Tujuan**: Meminta data dari server.
- **Karakteristik**:
  - Data dikirim melalui **URL** (dalam bentuk parameter query, misalnya: `?id=123&kategori=elektronik`).
  - Permintaan bersifat **idempoten**, artinya memanggil berulang kali tidak mengubah keadaan server.
  - **Dapat di-cache** oleh browser atau proxy.
  - **Muncul dalam log akses** hampir setiap kali pengguna membuka halaman, mengklik tautan, atau memuat gambar/file.
- **Contoh penggunaan**:
  - Membuka halaman beranda: `GET /index.html`
  - Mencari produk: `GET /search?q=laptop`
  - Memuat gambar: `GET /images/logo.png`

> **Dalam web usage mining, permintaan dengan metode GET biasanya menjadi fokus utama**, karena mencerminkan aktivitas navigasi pengguna yang sebenarnya.

---

**POST**
- **Tujuan**: Mengirim data **ke server** untuk diproses (misalnya menyimpan, memperbarui, atau mengirim formulir).
- **Karakteristik**:
  - Data dikirim dalam **body permintaan**, bukan di URL.
  - **Tidak disimpan dalam cache**.
  - **Tidak otomatis diulang** oleh browser tanpa konfirmasi (karena bisa mengubah data di server).
  - Umumnya digunakan untuk **formulir**, login, checkout, komentar, dll.
- **Contoh penggunaan**:
  - Login pengguna: `POST /login`
  - Submit formulir kontak: `POST /contact`
  - Tambah ke keranjang: `POST /cart/add`

> **Dalam web usage mining, permintaan POST sering diabaikan atau ditangani secara khusus**, karena:
> - Tidak selalu merepresentasikan “halaman” yang dilihat pengguna.
> - Hasilnya bisa berupa redirect (misalnya ke halaman sukses), bukan tampilan konten langsung.
> - Bisa mengandung data sensitif (seperti kata sandi), sehingga sering disembunyikan atau tidak dicatat lengkap.

---

**Metode HTTP Lain (Jarang Muncul di Log Akses Umum)**

Meski GET dan POST mendominasi, ada metode lain yang kadang muncul, tergantung konfigurasi server atau aplikasi:

- **HEAD**: Mirip GET, tetapi hanya meminta **header respons**, bukan isi halaman. Sering digunakan oleh **crawler** atau tools pemantauan.
- **PUT / DELETE**: Umum di API (misalnya RESTful), tapi jarang dalam situs web biasa.
- **OPTIONS / TRACE**: Digunakan untuk debugging atau negosiasi protokol, hampir tidak pernah muncul dalam analisis perilaku pengguna.

> Dalam konteks **web usage mining**, permintaan dengan metode selain **GET** (dan kadang **POST**) biasanya **disaring atau dihapus** selama tahap pembersihan data, karena tidak relevan untuk memahami pola navigasi pengguna.



### Relevansi dalam Analisis Log Web

- **Fokus utama**: Hanya **permintaan GET** yang benar-benar mencerminkan halaman atau objek yang **dilihat atau diminta oleh pengguna**.
- **Pembersihan data**: Permintaan dengan metode **POST, HEAD, OPTIONS**, dll., sering **dihilangkan** agar analisis sesi dan pola navigasi lebih akurat.
- **Penyaringan berbasis konteks**: Jika tujuan analisis termasuk memahami konversi (misalnya: berapa banyak yang submit formulir?), maka **POST ke endpoint tertentu** (seperti `/checkout`) mungkin tetap dipertahankan.


**Kapan Referrer URL Bisa Kosong atau Tidak Ada?**
Referrer tidak selalu tersedia. Nilainya bisa kosong (- atau "") dalam situasi berikut:

* Pengguna mengetik URL langsung di address bar.
Tidak ada halaman “sebelumnya”, jadi tidak ada referrer.
* Pengguna membuka tautan dari bookmark
Tidak ada halaman sumber, jadi referrer kosong.
* Pengguna datang dari email, aplikasi desktop, atau dokumen PDF
Bisa jadi tidak mengirim referrer.
* Kebijakan privasi browser atau ekstensi (seperti ad blocker)
Bisa memblokir pengiriman header Referer.
* Tautan dari situs HTTPS ke HTTP
Untuk alasan keamanan, browser sering tidak mengirim referrer saat beralih dari HTTPS ke HTTP











## Data Penggunaan (usage data)

Server Web dan aplikasi secara otomatis mengumpulkan data log, yang merupakan representasi pola navigasi pengunjung secara tepat. Dalam penambangan penggunaan web(web usage mining), data ini berfungsi sebagai sumber utama data. Satu catatan dibuat di log akses server untuk setiap kunjungan ke server, yang sesuai dengan permintaan HTTP. Bergantung pada format log, setiap entri dalam log mungkin mencakup informasi berikut:

- Bagian yang berisi waktu dan tanggal permintaan
- Alamat IP klien
- Detail sumber daya yang diminta
- Parameter utama yang digunakan untuk memanggil aplikasi Web
- Status permintaan
- Metode HTTP yang digunakan
- Agen pengguna—versi dan jenis browser serta sistem operasi. Sumber daya Web yang dirujuk
- Untuk melaporkan pengunjung berulang, cookie sisi klien dapat digunakan.

Data dapat dikumpulkan  pada tingkatan yang berbeda. Tingkatan ini bergantung pada tujuan analisis. Jika kita membahas penambangan penggunaan Web (web usage mining), pageview menyediakan tingkat abstraksi paling dasar. Ini pada dasarnya adalah penyajian informasi pada saat client melakukan klik pada web, maka informasi yang diperlukan ditampilkan di layar klien.

Google mendefinisikan pageview sebagai “Sebuah contoh halaman yang dimuat (atau dimuat ulang) di browser”. Setiap kali seseorang memulai sesi dengan membuka dan melihat halaman di situs web Anda (terlepas dari apakah mereka sedang memuat atau memuat ulangnya), Anda mendapatkan satu pageview.

Jika kita membahas pada tingkat pengguna, maka session adalah tingkatan data abstraksi yang paling dasar. Session pada dasarnya adalah serangkaian pageview oleh seorang pengguna selama satu kunjungan.

Google Analytics mendefinisikan session  sebagai “Session adalah periode aktivitas yang diselesaikan oleh pengguna. Google Analytics mencatat sesi setiap kali seseorang mengunjungi situs web Anda. Sesi dimulai segera setelah halaman dibuka, dan cookie diaktifkan, serta berakhir setelah pengguna tidak aktif selama 30 menit secara default.”

Google Analytics 4 menyediakan pengamatan secara lengkap tentang perilaku konsumen di Web dan aplikasi dengan menggunakan data untuk dimodelkan.

## Data Pengguna

Informasi profil pengguna  mungkin tersedia di basis data operasional situs web. Data tersebut dapat mencakup detail demografis tentang pengguna yang terdapaftar di sistem, ulasan pengguna terhadap berbagai item seperti buku atau film, kunjungan pengguna, riwayat pembelian, serta indikasi eksplisit atau implisit lainnya mengenai preferensi pengguna. Jika memungkinkan untuk mengetahui siapa pengguna tersebut, sebagian data ini dapat dikumpulkan secara anonim.

## Elemen Penting  Pra-Pemrosesan web usage mining

Pra-pemrosesan data terdiri dari pembersihan data, identifikasi pengguna, identifikasi sesi, penelusuran  jalur secara lengkap, dan identifikasi transaksi. Gambar berikut menggambarkan berbagai tahap penambangan penggunaan Web (web usage mining).

![image](https://hackmd.io/_uploads/Bko7MVKkZg.png)
**Gambar.2** Tahapan pra proses data dalam penambangan penggunaan web (web usage mining)

## Pembersihan Data

Pembersihan data biasanya melibatkan tindakan yang spesifik terhadap situs, seperti menghapus referensi berlebihan, misalnya grafik, atau file suara, yang mungkin tidak diperlukan untuk analisis. Karena navigasi crawler, referensi-referensi tersebut juga dihapus pada tahap pembersihan data.

Ini mengurangi ukuran file log. Penting untuk meningkatkan efektivitas proses penambangan. Proses ini terdiri dari tahapan-tahapan berikut:

- Penghapusan noise lokal dan global
- Penghapusan catatan grafik, video, dan informasi format
- Penghapusan catatan dengan kode status HTTP yang gagal
- Pembersihan bagian metode dan robots


### **Penghapusan noise lokal dan global**
- **Noise lokal**: Aktivitas yang tidak relevan dari pengguna tertentu, seperti klik berulang yang tidak disengaja atau navigasi acak.
- **Noise global**: Permintaan otomatis yang tidak berasal dari pengguna manusia, misalnya:
  - Permintaan dari **crawler/robot mesin pencari** (Googlebot, Bingbot, dll.),
  - Permintaan dari **tools pemantauan** atau **scraper**.
- Penghapusan noise ini memastikan bahwa hanya **sesi pengguna manusia yang valid** yang dianalisis.

---

### **Penghapusan catatan grafik, video, dan informasi format**
- File seperti gambar (`.jpg`, `.png`), stylesheet (`.css`), skrip (`.js`), video, atau file suara biasanya **dimuat otomatis oleh browser** saat membuka halaman web.
- Permintaan terhadap file-file ini **tidak mencerminkan keputusan navigasi pengguna**, melainkan kebutuhan teknis rendering halaman.
- Dengan menghapus entri log yang mengarah ke file-file tersebut, kita fokus hanya pada **permintaan halaman konten utama** (misalnya `.html`, `.php`, atau URL dinamis yang merepresentasikan halaman web).

> **Contoh**: Permintaan ke `/images/logo.png` dihapus, tetapi permintaan ke `/produk/123` dipertahankan.



### **Penghapusan catatan dengan kode status HTTP yang gagal**
- Kode status HTTP seperti:
  - `404` (Not Found),
  - `500` (Internal Server Error),
  - `403` (Forbidden),
  - `400` (Bad Request)
- Menunjukkan bahwa **permintaan tidak berhasil** atau **halaman tidak tersedia**.
- Karena pengguna tidak benar-benar melihat konten yang dimaksud, entri ini **tidak mencerminkan perilaku navigasi yang valid** dan dianggap sebagai noise.
- Dengan menghapus data tersebut meningkatkan kualitas pola yang diekstraksi.

---

### **Pembersihan bagian metode dan robots**
- **Bagian metode**: Mengacu pada HTTP method dalam log (seperti `GET`, `POST`, `HEAD`).
  - Dalam web usage mining, biasanya hanya permintaan dengan metode **`GET`** yang relevan, karena mencerminkan permintaan untuk melihat halaman.
  - Metode seperti `HEAD` (sering digunakan oleh crawler hanya untuk mengecek header) atau `POST` (biasanya untuk form submission, bukan navigasi) sering diabaikan atau ditangani secara khusus.
- **Robots**: Mengacu pada permintaan dari **user-agent crawler**.
  - Biasanya diidentifikasi dari field **User-Agent** di log (misalnya: `Googlebot`, `crawler`, `bot`).
  - Permintaan ini **dihapus sepenuhnya** karena bukan berasal dari pengguna nyata.

---

### Mengapa proses pembersihan ini penting?
Proses pembersihan ini sangat penting karena :
- **Mengurangi ukuran log** secara signifikan,
- **Meningkatkan akurasi pola perilaku pengguna**,
- **Mencegah bias** akibat aktivitas non-manusia atau permintaan teknis,
- Menjadi fondasi untuk tahap berikutnya dalam web usage mining: **identifikasi sesi**, **pembentukan path navigasi**, dan **penambangan aturan asosiasi atau klaster**.

## Identifikasi Pengguna

Setiap pengguna  yang mengakses situs web tertentu dapat diidentifikasi melalui proses identifikasi pengguna. Tujuan dasar fase ini adalah menyediakan layanan yang dipersonalisasi bagi pengguna. Tujuan ini dicapai dengan mengekstraksi karakteristik pengguna tertentu dari kelompok pengguna. Di internet, semua pengguna dapat diidentifikasi berdasarkan alamat IP unik mereka. Dengan kata lain, kita dapat mengatakan bahwa setiap alamat IP berkaitan dengan satu pengguna tertentu. Namun, memang ada beberapa kemungkinan sebagai berikut:

- Beberapa pengguna mungkin memiliki alamat IP unik
- Beberapa pengguna mungkin memiliki dua atau lebih alamat IP
- Dan beberapa pengguna mungkin berbagi satu alamat IP.

Untuk identifikasi pengguna, aturan-aturan berikut diikuti:

- Jika terdapat alamat IP yang berbeda, maka akan dianggap sebagai pengguna yang berbeda.
- Jika alamat IP sama, tetapi browser berbeda, atau sistem operasi berbeda, maka dalam kasus ini  pengguna dianggap berbeda.
- Selanjutnya, jika alamat IP, browser, dan sistem operasi semuanya sama, maka identifikasi pengguna akan dilakukan dengan memeriksa apakah halaman yang diminta dapat diakses melalui halaman-halaman yang sebelumnya telah diakses. Identifikasi ini dilakukan sesuai dengan topologi situs.

## Identifikasi Sesi

Memcatat aktivitas pengguna ke dalam sesi-sesi, di mana masing-masing mewakili satu kunjungan ke situs, dikenal sebagai identifikasi sesi atau sessionization. Penambangan log Web biasanya mencakup rentang waktu lama, sehingga pengguna dapat mengunjungi situs lebih dari sekali. Proses ini adalah langkah kritis setelah pembersihan data, sebelum masuk ke ekstraksi pola.

Tujuan indentifikasi sesi adalah mengelompokkan permintaan (requests) yang **secara logis dilakukan oleh pengguna yang sama dalam satu kunjungan**, sehingga pola navigasi bisa dianalisis secara bermakna
Ini menentukan berapa kali seorang pengguna telah mengakses halaman Web tertentu, mengumpulkan semua referensi halaman bagi pengguna tersebut dalam log, lalu membaginya menjadi sesi-sesi pengguna.


Log server web **tidak selalu mencatat identitas pengguna secara eksplisit**, terutama jika:
- Pengguna tidak login,
- Tidak ada cookie yang digunakan,
- Atau privasi browser membatasi pelacakan.

Situs web yang tidak memiliki fitur seperti ID sesi tertanam dan data autentikasi pengguna tambahan harus mengandalkan metode heuristik untuk sessionization atau identifikasi sesi. Tujuan heuristik sessionization adalah merekonstruksi rangkaian aktivitas nyata yang dilakukan oleh satu pengguna selama satu kunjungan ke situs web menggunakan data clickstream.

#### **Berdasarkan IP Address + User-Agent**
- Asumsi: pengguna dengan kombinasi IP dan user-agent yang sama dalam rentang waktu dekat kemungkinan adalah orang yang sama.
- *Kelemahan*: banyak pengguna bisa berbagi IP (misalnya di jaringan kantor), atau IP bisa berubah (mobile).

#### **Timeout-based (Berdasarkan Waktu)**
- Jika jeda antara dua permintaan berturut-turut dari pengguna yang sama **melebihi ambang batas** (misalnya 30 menit), maka dianggap sebagai sesi baru.
- Ini adalah pendekatan paling umum karena sederhana dan praktis.

#### **Berdasarkan Cookie atau Session ID**
- Jika situs menggunakan **session cookie** atau melacak ID sesi (misalnya di URL atau header), identifikasi jadi jauh lebih akurat.
- Tapi tidak semua log menyimpan atau mengizinkan akses ke informasi ini.

Dalam klasifikasi, prediksi, pengelompokan, dan fungsi penambangan lainnya, sesi-sesi ini dapat digunakan sebagai vektor data. Suatu sesi dianggap sebagai sesi pengguna baru jika URL di bidang referer URL pada catatan saat ini belum pernah dilihat sebelumnya. Sulit untuk merekonstruksi sesi pengguna yang tepat dari catatan akses server. Timeout standar merupakan dasar dari teknik identifikasi sesi. Sesi baru dibentuk ketika jeda waktu antara dua permintaan berturut-turut melebihi batas timeout. 

Contoh Sederhana:
**Log asli (belum dikelompokkan):**
```
10.0.0.1 – /home       – 10:00:00
10.0.0.1 – /produk/A   – 10:02:00
10.0.0.1 – /produk/B   – 10:05:00
10.0.0.1 – /kontak     – 10:40:00   ← jeda 35 menit
10.0.0.1 – /tentang    – 10:41:00
```

**Setelah identifikasi sesi (timeout = 30 menit):**
- **Sesi 1**: `/home` → `/produk/A` → `/produk/B`
- **Sesi 2**: `/kontak` → `/tentang`



## Identifikasi Jalur

Pelengkapan jalur adalah aktivitas pra-pemrosesan yang mungkin sangat penting dan sering dilakukan setelah sessionization. Menemukan keberadaan akses penting yang tidak tercantum dalam log akses sangatlah krusial. 
Log server web hanya mencatat permintaan HTTP yang benar-benar dikirim ke server. Namun, banyak aktivitas pengguna tidak menghasilkan permintaan ke server, karena:
1. Caching di Sisi Klien (Browser)
Ketika pengguna mengunjungi kembali halaman yang sebelumnya sudah dimuat (misalnya dengan menekan tombol Back), browser sering menggunakan versi yang tersimpan di cache lokal.
Akibatnya: tidak ada permintaan HTTP baru → tidak ada entri log → aktivitas itu "menghilang".
2. Caching di Proxy
Jaringan perusahaan atau ISP sering menggunakan proxy cache.
Jika halaman sudah di-cache di proxy, permintaan tidak sampai ke server asli → tidak tercatat.
3. Navigasi Non-Linear
Pengguna bisa melompat bolak-balik antar halaman menggunakan riwayat browser, tanpa melakuka permintaan baru.
Akibatnya: Jalur navigasi dalam sesi menjadi tidak lengkap, terputus, atau menyesatkan jika dianalisis apa adanya. 



Pelengkapan jalur, yang didasarkan pada pemahaman struktur situs dan data referer dari log server, dapat digunakan untuk secara heuristik menyimpulkan referensi yang hilang akibat caching. Log referer dapat digunakan untuk menentukan dari halaman mana permintaan berasal, seperti cara kerja identifikasi pengguna ketika menentukan apakah halaman yang diminta pengguna secara langsung terkait dengan halaman yang mereka akse sebelumnya. Diasumsikan bahwa pengguna menjelajah kembali menggunakan tombol "kembali" dan sesi halaman yang telah di-cache jika halaman tersebut ada dalam riwayat klik terakhir mereka. Halaman-halaman yang dilacak mundur juga dimasukkan ke dalam jalur lengkap yang tercermin oleh suatu sesi.

**Mengapa Identifikasi Jalur penting?**
* Meningkatkan Keakuratan Analisis
Tanpa path completion, pola seperti “pengguna yang lihat produk jarang ke checkout” bisa salah, padahal mereka memang ke checkout—tapi log tidak mencatatnya.
* Mendukung Penambangan Pola yang Valid
Algoritma seperti association rule mining atau sequential pattern mining sangat sensitif terhadap urutan. Jika urutan tidak lengkap, pola yang ditemukan bisa bias atau tidak valid.
* Meningkatkan Kualitas Rekomendasi & Personalisasi
Sistem rekomendasi butuh jalur navigasi utuh untuk memahami keinginan pengguna.
* Memenuhi Prinsip Clean Data
Seperti yang Anda pahami: data yang baik harus lengkap, konsisten, dan bermakna. Path completion adalah upaya aktif untuk melengkapi data yang tidak utuh secara alami.

# Pemodelan Data

Server Web dapat menyimpan banyak informasi dalam log dari interaksi pengguna di halaman-halaman Web. Data geografis, perjalanan mereka di sekitar halaman situs web, dan banyak hal lainnya termasuk di dalamnya. Empat jenis teknik penambangan data yang berbeda biasanya digunakan untuk memanen data yang dihasilkan pengguna dari Web. Mari kita bahas masing-masing metode ini secara lebih rinci:

## **Penambangan Aturan Asosiasi**

Salah satu teknik Penambangan Data dasar yang biasanya digunakan pengembang untuk penambangan penggunaan Web adalah aturan asosiasi. Dengan menggunakan teknik ini, situs web dapat memantau informasi pengguna dan memberikan rekomendasi berdasarkan kebiasaan penjelajahan dan riwayat pencarian mereka. Prinsip dasar Aturan Asosiasi dibagi menjadi dua bagian: Antecedent (jika kondisi) dan Consequent (maka kondisi). Item yang ditemukan dalam data disebut antecedent, sedangkan item yang ditemukan bersama dengan antecedent disebut consequent. Misakan seorang pelanggan yang mencari bubuk protein di toko online (Antecedent). Berbagai bubuk protein, penambah massa, shaker protein, dan produk lainnya bisa menjadi Consequent untuk produk Antecedent ini. Dalam penambangan penggunaan Web, aturan asosiasi digunakan untuk menemukan koneksi antara halaman-halaman yang umumnya saling mengikuti dalam sesi pengguna.

## **Pola Sekuensial**

Dalam sejumlah besar data sekuensial, urutan ditemukan menggunakan pola sekuensial. Dalam penambangan penggunaan Web, pola sekuensial digunakan untuk mengidentifikasi pola navigasi pengguna. Karena pola sekuensial berkembang secara bertahap seiring waktu, mereka berfungsi sebagai definisi untuk urutan kejadian. Untuk pembuatan pola sekuensial, terdapat dua kategori algoritma.

Berdasarkan penambangan aturan asosiasi, algoritma pertama untuk mengenali pola sekuensial dikembangkan. Misalnya, dua algoritma Apriori yang terkenal untuk mengekstrak aturan asosiasi adalah GSP dan AprioriAll.

Pendekatan kedua untuk menemukan pola sekuensial merepresentasikannya menggunakan rantai Markov dan struktur pohon. Sebagai contoh, salah satu algoritma ini, WAP-mine, menggunakan struktur pohon WAP-tree untuk menyelidiki tren akses Web.

## **Pengelompokan**

Pengelompokan adalah teknik penambangan data yang mengelompokkan sejumlah item yang memiliki karakteristik serupa. Dalam domain penggunaan, terdapat dua jenis kelompok menarik yang dapat ditemukan: 
* Pengelompokan pengguna dan 
* Pengelompokab halaman.

### **Pengelompokan Pengguna (User Clustering)**

Mengelompokkan **pengguna** berdasarkan **kemiripan dalam pola navigasi mereka** di situs web. Setiap pengguna direpresentasikan sebagai **vektor fitur**, misalnya:
- Halaman yang dikunjungi (binary: 1/0 atau frekuensi),
- Urutan navigasi,
- Durasi kunjungan,
- Frekuensi akses, dll.

Tujuannya pengelompokan adalah: 
- Mengidentifikasi **segmen pengguna** dengan perilaku serupa (misalnya: pembeli aktif, pengunjung sekilas, pencari informasi).
- Memahami **preferensi kelompok pengguna** untuk personalisasi, rekomendasi, atau desain UX yang lebih baik. 
Pengelompokan pengguna (sesi atau transaksi) merupakan salah satu tugas analisis yang paling umum digunakan dalam penambangan penggunaan Web dan analitik Web. Pengelompokan pengguna cenderung membentuk kelompok-kelompok pengguna yang menunjukkan pola penjelajahan serupa. Pengetahuan semacam ini sangat berguna untuk menyimpulkan demografi pengguna demi melakukan segmentasi pasar dalam aplikasi e-commerce atau menyediakan konten Web yang dipersonalisasi kepada pengguna dengan minat serupa. Analisis lebih lanjut terhadap kelompok pengguna berdasarkan atribut demografis mereka (misalnya, usia, jenis kelamin, tingkat pendapatan, dll.) dapat mengarah pada penemuan intelijen bisnis yang berharga. Pengelompokan berbasis penggunaan juga telah digunakan untuk menciptakan “komunitas pengguna” berbasis Web yang mencerminkan minat serupa dari kelompok pengguna, serta untuk mempelajari model pengguna yang dapat digunakan untuk memberikan rekomendasi dinamis dalam aplikasi personalisasi Web .

Dengan memetakan transaksi pengguna ke ruang multi-dimensi sebagai vektor pageview, algoritma pengelompokan standar, seperti k-means, dapat mempartisi ruang ini menjadi kelompok-kelompok transaksi yang saling dekat berdasarkan ukuran jarak atau kemiripan di antara vektor-vektor tersebut. Kelompok transaksi yang diperoleh dengan cara ini dapat mewakili segmen pengguna atau pengunjung berdasarkan perilaku navigasi atau atribut lain yang telah ditangkap dalam file transaksi. Namun, kelompok transaksi itu sendiri bukanlah cara yang efektif untuk menangkap pandangan agregat dari pola pengguna umum. Setiap kelompok transaksi berpotensi berisi ribuan transaksi pengguna yang melibatkan ratusan referensi pageview. Tujuan utama dalam pengelompokan transaksi pengguna adalah menyediakan kemampuan untuk menganalisis setiap kelompok untuk memperoleh intelijen bisnis, atau menggunakan kelompok-kelompok tersebut untuk tugas-tugas seperti personalisasi.

Salah satu pendekatan langsung dalam menciptakan pandangan agregat untuk setiap kelompok adalah menghitung centroid (atau vektor rata-rata) dari setiap kelompok. Nilai dimensi untuk setiap pageview dalam vektor rata-rata dihitung dengan menemukan rasio jumlah bobot pageview di seluruh transaksi terhadap jumlah total transaksi dalam kelompok tersebut. 

Jika bobot pageview dalam transaksi asli adalah biner, maka nilai dimensi dari pageview *p* dalam centroid kelompok mewakili persentase transaksi dalam kelompok tersebut di mana *p* muncul. Dengan demikian, nilai dimensi centroid dari *p* memberikan ukuran signifikansinya dalam kelompok tersebut. Pageview dalam centroid dapat diurutkan berdasarkan bobot-bobot ini, dan pageview dengan bobot lebih rendah dapat disaring keluar. Himpunan hasil pasangan pageview-bobot dapat dipandang sebagai **profil penggunaan gabungan** yang mewakili minat atau perilaku sekelompok pengguna

Secara formal, diberikan sebuah klaster transaksi $cl$, kita dapat membentuk profil gabungan $pr_{cl}$  sebagai himpunan pasangan tampilan halaman–bobot dengan menghitung centroid dari $cl$.

\begin{equation}
pr_{cl} = \{ (p, \text{weight}(p, pr_{cl})) \mid \text{weight}(p, pr_{cl}) \geq \mu \},
\end{equation}

dimana:
- bobot signifikansi, $weight(p,pr_{cl})$, dari halaman $p$ dalam profil gabungan $pr_{cl}$ diberikan oleh

$$
weight(p,pr_{cl})=\frac{1}{|cl|}\sum_{s\in cl}w(p,s);
$$


- $|cl|$ adalah jumlah transaksi dalam klaster $cl$;
- $w(p,s)$ adalah bobot halaman $p$ dalam vektor transaksi $s$ dari klaster $cl$; dan
- ambang batas $\mu$ digunakan untuk fokus hanya pada halaman-halaman dalam klaster yang muncul dalam jumlah vektor yang cukup banyak di dalam klaster tersebut.



Setiap profil semacam itu, pada gilirannya, dapat direpresentasikan sebagai vektor dalam ruang *n*-dimensi asli dari pageview. Representasi agregat ini dapat digunakan secara langsung untuk pemodelan prediktif dan dalam aplikasi seperti sistem rekomendasi: diberikan pengguna baru, *u*, yang telah mengakses serangkaian halaman, *P<sub>u</sub>*, sejauh ini, kita dapat mengukur kemiripan *P<sub>u</sub>* terhadap profil-profil yang telah ditemukan, dan merekomendasikan kepada pengguna halaman-halaman dalam profil yang cocok yang belum diakses oleh pengguna tersebut.

Sebagai contoh, perhatika data transaksi yang digambarkan pada Gambar 3 (kiri). Untuk mempermudah, kita berasumsi bahwa bobot fitur (pageview) dalam setiap vektor transaksi bersifat biner (berlawanan dengan bobot berdasarkan fungsi durasi pageview). Kita berasumsi bahwa data telah dikelompokkan menggunakan algoritma pengelompokan standar seperti k-means, menghasilkan tiga kelompok transaksi pengguna. Tabel di sebelah kanan Gambar 3 menunjukkan profil gabungan yang sesuai dengan kelompok 1. Seperti yang ditunjukkan oleh bobot pageview, pageview B dan F adalah halaman paling signifikan yang mencirikan minat umum pengguna dalam segmen ini. Pageview C, bagaimanapun, hanya muncul dalam satu transaksi dan mungkin akan dihapus jika diberikan ambang penyaringan yang lebih besar dari 0,25. Pola-pola semacam ini berguna untuk menggambarkan segmen pengguna atau pelanggan.

Contoh ini, misalnya, menunjukkan bahwa kelompok pengguna yang dihasilkan jelas tertarik pada item B dan F serta, dalam tingkat yang lebih rendah, pada item A. Diberikan pengguna baru yang menunjukkan minat pada item A dan B, pola ini dapat digunakan untuk menyimpulkan bahwa pengguna tersebut mungkin termasuk dalam segmen ini dan, oleh karena itu, kita mungkin merekomendasikan item F kepada pengguna tersebut. Pendekatan pengelompokan lainnya menemukan profil pengguna dengan mengoptimalkan fungsi objektif yang menghindari keterbatasan yang diketahui dari algoritma k-means. 

![image](https://hackmd.io/_uploads/Hk3uA8tkWl.png)
**Gambar 3**. Profil gabungan dari klaster transaksi Web





###  **Pengelompokan Halaman (Page Clustering / Content Clustering)**

Pengelompokan halaman (atau item) dapat dilakukan berdasarkan data penggunaan (yaitu, dimulai dari sesi atau data transaksi pengguna), atau berdasarkan fitur konten yang terkait dengan halaman atau item (kata kunci atau atribut produk). Dalam kasus pengelompokan berbasis konten, hasilnya mungkin berupa kumpulan halaman atau produk yang terkait dengan topik atau kategori yang sama. Dalam pengelompokan berbasis penggunaan, item-item yang sering diakses atau dibeli bersama secara otomatis dapat dikelompokkan. Pengelompokan ini juga dapat digunakan untuk menyediakan halaman HTML permanen atau dinamis yang menyarankan hyperlink terkait kepada pengguna sesuai riwayat navigasi atau aktivitas pembelian mereka sebelumnya.

Mengelompokkan  pola akses pengguna terhadap halaman dilakukan dengan menyatakan halaman  sebagai:
- **Vektor konten** (dari teks halaman, menggunakan TF-IDF, word embeddings, dll.), **atau**
- **Vektor akses** (frekuensi atau pola kunjungan pengguna ke halaman tersebut).

Lalu, fungsi kemiripan digunakan untuk mengelompokkan halaman yang:
- Memiliki **konten serupa**, **atau**
- Sering **dikunjungi oleh pengguna yang sama** (misalnya: halaman A dan B sering muncul dalam sesi yang sama).

Tujuan analisis  ini adalah 
- Menemukan **topik atau tema umum** dalam situs (misalnya: halaman "produk elektronik", "layanan pelanggan", "promo").
- Mendukung navigasi yang lebih baik, rekomendasi konten, atau optimasi arsitektur informasi.
- Mengidentifikasi halaman yang **sering dikunjungi bersamaan** (co-accessed), yang menunjukkan hubungan fungsional atau topikal.

## Contoh dataset untuk webusage mining
https://github.com/SoftManiaTech/sample_log_files/tree/master


