Apa Itu Leiden Algorithm? Pengertian, Cara Kerja, Kelebihan, dan Contohnya
Artikel

Apa Itu Leiden Algorithm? Pengertian, Cara Kerja, Kelebihan, dan Contohnya

Ketika kita melihat sebuah jaringan yang sangat besar, kita sering kesulitan memahami hubungan di dalamnya. Bayangkan sebuah media sosial dengan jutaan pengguna, sebuah jaringan sitasi yang berisi jutaan artikel ilmiah, atau jaringan transaksi yang menghubungkan banyak pelanggan dan produk.

Di dalam jaringan sebesar itu biasanya terdapat kelompok-kelompok yang secara alami memiliki hubungan lebih kuat satu sama lain. Tantangannya adalah bagaimana menemukan kelompok tersebut secara otomatis.

Di sinilah Leiden Algorithm digunakan.

Leiden Algorithm adalah algoritma untuk community detection, yaitu proses menemukan kelompok atau komunitas yang terbentuk secara alami di dalam sebuah jaringan atau graph. Algoritma ini diperkenalkan oleh Vincent Traag, Ludo Waltman, dan Nees Jan van Eck dalam penelitian yang diterbitkan di Scientific Reports pada 2019. Nama "Leiden" diambil dari kota Leiden di Belanda, yang berkaitan dengan lokasi para penulis penelitian tersebut.

Secara sederhana, Leiden Algorithm mencoba menjawab pertanyaan:

"Dari sekian banyak titik dan hubungan dalam sebuah jaringan, kelompok mana yang sebenarnya memiliki keterikatan paling kuat?"

Algoritma ini sangat dekat hubungannya dengan Louvain Algorithm, tetapi dibuat untuk mengatasi kelemahan penting pada Louvain, terutama kemungkinan terbentuknya komunitas yang tidak benar-benar terhubung dengan baik.

Memahami Leiden Algorithm dari Dasar

Sebelum membahas algoritmanya, kita perlu memahami terlebih dahulu apa yang dimaksud dengan graph dan community.

Dalam network science, sebuah graph biasanya terdiri dari:

  • Node (vertex) → objek atau entitas.

  • Edge → hubungan antara dua node.

  • Weight → seberapa kuat hubungan tersebut, jika jaringan memiliki bobot.

  • Community → kelompok node yang memiliki hubungan relatif lebih kuat satu sama lain dibandingkan dengan hubungan mereka terhadap kelompok lain.

Misalnya kita membuat jaringan pertemanan.

Anggap ada 100 orang dalam sebuah komunitas. Setiap orang menjadi satu node, sedangkan hubungan pertemanan menjadi edge.

Setelah dianalisis, ternyata terdapat beberapa kelompok:

  • Kelompok A banyak berinteraksi satu sama lain.

  • Kelompok B juga memiliki interaksi yang sangat kuat.

  • Kelompok C lebih banyak berhubungan dengan anggota kelompoknya sendiri.

Kita mungkin tidak mengetahui kelompok tersebut sebelumnya. Leiden Algorithm dapat mencoba menemukannya berdasarkan struktur hubungan yang ada.

Jadi, algoritma ini bukan sekadar "mengelompokkan data" seperti clustering pada dataset tabular. Leiden bekerja berdasarkan struktur hubungan dalam graph.

Apa Tujuan Utama Leiden Algorithm?

Tujuan utamanya adalah menemukan partition atau pembagian jaringan menjadi beberapa komunitas dengan kualitas tertentu.

Kualitas tersebut ditentukan menggunakan fungsi objektif, misalnya:

  • Modularity

  • Constant Potts Model (CPM)

Keduanya digunakan untuk menilai seberapa baik suatu pembagian jaringan menjadi komunitas. Implementasi leidenalg, misalnya, menyediakan berbagai jenis VertexPartition, termasuk Modularity dan CPM.

Secara intuitif, algoritma berusaha menghasilkan kondisi seperti ini:

text Salin
text
Komunitas A
●──●──●
│ ╲ │
●──●──●

         hubungan antar-komunitas relatif lebih sedikit

Komunitas B
●──●──●
│ ╲ │
●──●──●

Node yang berada dalam komunitas yang sama idealnya memiliki hubungan yang cukup kuat dan struktur internal yang baik.

Mengapa Leiden Algorithm Dibuat?

Untuk memahami alasan munculnya Leiden, kita perlu melihat algoritma yang lebih lama dan sangat populer, yaitu Louvain Algorithm.

Louvain juga digunakan untuk community detection. Secara umum, Louvain melakukan dua tahap utama:

  1. Memindahkan node dari satu komunitas ke komunitas lain untuk meningkatkan nilai fungsi kualitas.

  2. Menggabungkan komunitas menjadi node baru dan menjalankan proses tersebut kembali.

Proses itu diulang sampai tidak ada peningkatan kualitas yang berarti.

Masalahnya, penelitian Traag, Waltman, dan van Eck menunjukkan bahwa Louvain dapat menghasilkan komunitas yang terhubung dengan buruk, bahkan dalam kasus tertentu dapat menghasilkan komunitas yang secara internal terputus. Dalam eksperimen mereka, hingga 25% komunitas ditemukan memiliki konektivitas yang buruk dan hingga 16% dapat terputus, tergantung jaringan dan kondisi eksperimennya.

Bayangkan seperti ini.

Sebuah komunitas seharusnya:

text Salin
text
A ─ B ─ C ─ D

Namun hasil tertentu dari Louvain bisa menyerupai:

text Salin
text
A ─ B          C ─ D

tetapi A, B, C, dan D tetap dianggap sebagai satu komunitas.

Secara matematis, pembagian tersebut mungkin menghasilkan nilai fungsi kualitas yang baik. Namun secara struktural, hasilnya kurang masuk akal karena komunitas tersebut sebenarnya terpecah menjadi dua bagian.

Leiden dirancang untuk mengatasi masalah tersebut.

Bagaimana Cara Kerja Leiden Algorithm?

Salah satu hal paling penting untuk dipahami adalah bahwa Leiden bukan sekadar "Louvain yang lebih baru".

Leiden menggunakan tiga fase utama:

  1. Local Moving of Nodes

  2. Refinement

  3. Aggregation

Ketiga fase tersebut dilakukan secara iteratif sampai hasilnya stabil atau tidak ada peningkatan yang berarti.

Mari kita sederhanakan.

Fase 1: Local Moving

Pada awalnya setiap node dapat dianggap sebagai komunitasnya sendiri.

Misalnya:

text Salin
text
A   B   C   D   E   F

Kemudian algoritma melihat hubungan masing-masing node.

Misalnya A jauh lebih terhubung dengan B daripada node lainnya. Algoritma dapat memindahkan A ke komunitas B jika perpindahan tersebut meningkatkan fungsi kualitas.

Hasilnya mungkin berubah menjadi:

text Salin
text
{A,B}   {C}   {D,E}   {F}

Algoritma terus melakukan perpindahan node selama perpindahan tersebut meningkatkan kualitas partition.

Leiden menggunakan fast local move procedure. Berbeda dari Louvain yang terus memeriksa semua node, Leiden lebih fokus mengunjungi node yang lingkungan atau koneksinya telah berubah. Hal ini membuat proses local moving lebih efisien.

Fase 2: Refinement

Inilah salah satu bagian yang paling penting dari Leiden.

Setelah mendapatkan komunitas awal, Leiden tidak langsung menganggap komunitas tersebut sudah benar.

Algoritma melakukan refinement, yaitu mencoba melihat apakah sebuah komunitas sebenarnya dapat dibagi menjadi subkomunitas yang lebih baik dan lebih terhubung.

Misalnya hasil fase pertama adalah:

text Salin
text
Community A
A B C D E F

Setelah diperiksa lebih lanjut, ternyata strukturnya sebenarnya:

text Salin
text
A ─ B ─ C

D ─ E ─ F

Leiden dapat memperhalus komunitas tersebut menjadi:

text Salin
text
Community A1
A B C

Community A2
D E F

Proses refinement ini dilakukan dengan memulai substruktur dari singleton partition dan melakukan penggabungan secara lokal di dalam komunitas sebelumnya. Penggabungan tersebut hanya dilakukan ketika kondisi kualitas dan konektivitasnya memenuhi kriteria algoritma.

Inilah salah satu pembeda terbesar antara Leiden dan Louvain.

Fase 3: Aggregation

Setelah refinement, komunitas yang telah diperbaiki digunakan untuk membentuk aggregate network.

Bayangkan sebelumnya terdapat 1.000 node.

Setelah Leiden menemukan 20 komunitas, jaringan tersebut bisa direpresentasikan dalam bentuk jaringan baru dengan komunitas atau subkomunitas sebagai node tingkat lebih tinggi.

Misalnya:

text Salin
text
Network asli
1.000 node
↓
Community detection
↓
20 communities
↓
Aggregate network
20 super-nodes

Kemudian Leiden menjalankan proses optimisasi lagi pada jaringan tersebut.

Jadi algoritma bekerja secara hierarkis dan iteratif.

Secara sederhana:

text Salin
text
Graph awal
   ↓
Local Moving
   ↓
Refinement
   ↓
Aggregation
   ↓
Graph yang lebih sederhana
   ↓
Local Moving lagi
   ↓
Refinement lagi
   ↓
Aggregation lagi
   ↓
Berhenti ketika stabil

Struktur tiga fase tersebut dijelaskan secara eksplisit dalam paper asli Leiden Algorithm.

Apa yang Dimaksud dengan Community Detection?

Karena istilah ini sangat penting dalam memahami Leiden, kita perlu membahasnya secara khusus.

Community detection adalah proses menemukan struktur komunitas yang tidak ditentukan sebelumnya.

Berbeda dengan supervised classification.

Dalam classification, kita biasanya sudah memiliki label:

text Salin
text
Data 1 → Kategori A
Data 2 → Kategori B
Data 3 → Kategori A

Pada community detection, kita belum mengetahui kelompoknya.

Kita hanya memiliki jaringan:

text Salin
text
A──B──C
│  │
D──E

F──G──H
│     │
I─────J

Kemudian algoritma mencari struktur kelompok secara otomatis.

Hasilnya mungkin:

text Salin
text
Community 1
A B C D E

Community 2
F G H I J

Jadi Leiden bersifat unsupervised community detection.

Apa Itu Modularity?

Salah satu fungsi kualitas paling populer yang dapat dioptimalkan Leiden adalah modularity.

Gagasan sederhananya adalah membandingkan:

berapa banyak koneksi yang benar-benar terjadi di dalam komunitas

dengan

berapa banyak koneksi yang seharusnya terjadi berdasarkan model acak tertentu.

Semakin besar perbedaan positifnya, semakin baik struktur komunitas menurut modularity. Penelitian asli menjelaskan modularity sebagai ukuran yang membandingkan jumlah edge aktual dalam komunitas dengan jumlah edge yang diharapkan.

Secara matematis, bentuk yang umum digunakan adalah:

[ Q = \frac{1}{2m} \sum_{ij} \left( A_{ij} - \frac{k_i k_j}{2m} \right) \delta(\sigma_i,\sigma_j) ]

Tidak perlu takut dengan rumus tersebut.

Intinya:

  • Jika dua node berada dalam komunitas yang sama, kontribusinya diperhitungkan.

  • Hubungan aktual dibandingkan dengan hubungan yang diharapkan.

  • Partition yang membuat hubungan internal komunitas relatif kuat akan mendapatkan nilai kualitas yang lebih baik.

Dalam dokumentasi leidenalg, modularity tersedia sebagai ModularityVertexPartition.

Apa Itu Resolution Parameter?

Ini merupakan salah satu konsep paling penting ketika menggunakan Leiden.

Resolution parameter mengontrol seberapa besar atau kecil komunitas yang ingin ditemukan.

Secara umum:

Resolution lebih tinggi → lebih banyak komunitas yang lebih kecil.

Resolution lebih rendah → lebih sedikit komunitas yang lebih besar.

Hubungan tersebut dijelaskan baik dalam paper Leiden maupun dokumentasi implementasi igraph.

Contohnya:

text Salin
text
Resolution rendah
        ↓
[ Komunitas Besar ]

Sedangkan:

text Salin
text
Resolution tinggi
        ↓
[A] [B] [C] [D] [E]

Namun, hal ini tidak berarti kita bisa sembarang menaikkan resolution sampai mendapatkan jumlah komunitas yang kita inginkan. Nilainya harus disesuaikan dengan tujuan analisis dan karakteristik jaringan.

CPM Sebagai Alternatif Modularity

Leiden juga dapat menggunakan Constant Potts Model atau CPM.

CPM memiliki interpretasi resolution parameter yang lebih langsung: parameter tersebut dapat dipandang sebagai ambang kepadatan komunitas. Secara umum, semakin tinggi resolution, semakin besar kecenderungan terbentuknya komunitas yang lebih kecil.

Salah satu kelebihan CPM adalah kemampuannya menghindari resolution-limit problem yang dikenal pada modularity. Dalam konteks tertentu, modularity dapat menyebabkan komunitas-komunitas kecil "tersembunyi" di dalam komunitas yang lebih besar.

Karena itu, memilih antara modularity dan CPM bukan sekadar masalah teknis. Pilihan tersebut berhubungan dengan pertanyaan analisis yang ingin kita jawab.

Perbedaan Leiden dan Louvain

Perbandingan sederhananya:

Aspek

Louvain

Leiden

Tujuan

Community detection

Community detection

Local moving

Ya

Ya

Refinement

Tidak sebagai fase khusus

Ya

Aggregation

Ya

Ya

Menjamin komunitas terhubung

Tidak secara umum

Ya, dengan jaminan terkait objective dan iterasi

Kecepatan

Cepat

Sering kali lebih cepat

Kualitas partition

Baik

Sering kali lebih baik pada benchmark penelitian

Dukungan objective

Modularity dan lainnya

Modularity, CPM, dan beberapa objective lain melalui implementasi

Cocok untuk jaringan besar

Ya

Ya

Penelitian asli menyimpulkan bahwa Leiden lebih cepat daripada Louvain dalam eksperimen yang mereka lakukan, menghasilkan partition dengan kualitas lebih baik dalam benchmark mereka, sekaligus memberikan jaminan konektivitas komunitas. Namun ini sebaiknya dipahami sebagai hasil algoritmik dan benchmark, bukan berarti Leiden selalu mengungguli setiap metode dan setiap dataset.

Mengapa Refinement Sangat Penting?

Bayangkan sebuah organisasi yang terdiri dari tiga departemen:

text Salin
text
Marketing
Sales
Finance

Misalnya seseorang bekerja sama dengan Marketing dan Finance. Ia bisa menjadi "jembatan" antara dua kelompok.

Algoritma yang hanya melakukan perpindahan node bisa saja memindahkan orang tersebut ke kelompok lain.

Akibatnya:

text Salin
text
Kelompok lama
A B C [jembatan] D E F

menjadi:

text Salin
text
A B C        D E F

tetapi keduanya masih dianggap satu komunitas.

Refinement membantu mendeteksi struktur internal seperti ini sebelum jaringan diagregasi ke tingkat berikutnya.

Karena setelah sebuah komunitas diubah menjadi satu node pada aggregate network, struktur internalnya tidak lagi mudah dipecah. Paper Leiden secara khusus menjelaskan bahwa refinement memberikan ruang tambahan untuk menemukan partition berkualitas lebih tinggi.

Apa Arti "Connected Community" dalam Leiden?

Sebuah komunitas yang terhubung berarti node-node di dalam komunitas tersebut dapat saling mencapai melalui jalur yang seluruhnya berada dalam komunitas tersebut.

Misalnya:

text Salin
text
A ─ B ─ C ─ D

Semua node tersebut terhubung.

Tetapi:

text Salin
text
A ─ B       C ─ D

merupakan dua komponen terpisah.

Jika keduanya diberi label komunitas yang sama, maka community tersebut tidak connected.

Leiden secara khusus dirancang agar komunitas yang dihasilkan memiliki konektivitas yang lebih baik, dan paper asli memberikan jaminan matematis bahwa komunitas yang dihasilkan memenuhi kondisi konektivitas tertentu.

Apa Saja yang Bisa Dianalisis Menggunakan Leiden?

Leiden dapat digunakan pada banyak jenis network.

Social Network

Misalnya:

  • Facebook

  • LinkedIn

  • Twitter/X

  • jaringan pertemanan

  • jaringan komunikasi

Node bisa mewakili pengguna, sedangkan edge mewakili interaksi.

Leiden kemudian dapat digunakan untuk menemukan kelompok pengguna yang memiliki pola hubungan yang mirip.

Citation Network

Node adalah artikel ilmiah.

Edge adalah hubungan sitasi.

Leiden dapat membantu menemukan cluster penelitian, misalnya:

text Salin
text
AI
├── Machine Learning
├── Deep Learning
└── Computer Vision

Collaboration Network

Node adalah individu.

Edge menunjukkan kolaborasi.

Misalnya pada jaringan ilmiah:

text Salin
text
Peneliti A
   ↓
Peneliti B
   ↓
Peneliti C

Leiden dapat membantu menemukan kelompok peneliti yang sering bekerja sama.

Product Network

Dalam e-commerce, node dapat berupa produk.

Edge dapat menunjukkan:

  • sering dibeli bersama,

  • sering dilihat bersama,

  • sering direkomendasikan bersama.

Leiden kemudian dapat menemukan cluster produk.

Customer Network

Node dapat berupa customer.

Edge dapat merepresentasikan:

  • hubungan,

  • kesamaan perilaku,

  • interaksi,

  • transaksi tertentu.

Community detection kemudian dapat membantu menemukan kelompok pelanggan dengan pola hubungan yang serupa.

Biological Network

Leiden juga digunakan dalam analisis jaringan biologis dan berbagai data omik.

Dalam analisis single-cell, metode Leiden dapat digunakan untuk melakukan clustering terhadap sel berdasarkan struktur graf tetangga. Karena itu, istilah Leiden cukup sering muncul dalam workflow bioinformatika modern.

Contoh Sederhana

Bayangkan kita memiliki 12 node:

text Salin
text
A B C D E F G H I J K L

Setelah melihat koneksinya, ternyata terbentuk pola:

text Salin
text
A ─ B ─ C ─ D
│   │
E ─ F

G ─ H ─ I ─ J
│   │
K ─ L

Leiden mungkin menemukan:

text Salin
text
Community 1
A B C D E F

Community 2
G H I J K L

Tetapi hasil sebenarnya tidak ditentukan hanya oleh bentuk visual.

Algoritma menghitung kualitas berdasarkan edge, bobot, objective function, resolution, dan proses optimisasi.

Karena itu, dua jaringan yang tampak mirip secara visual belum tentu menghasilkan community structure yang sama.

Bagaimana dengan Edge Weight?

Leiden juga dapat bekerja dengan graph berbobot.

Misalnya:

text Salin
text
A ── B
 10

berarti hubungan A-B memiliki kekuatan 10.

Sementara:

text Salin
text
A ─ C
 2

berarti hubungan A-C memiliki kekuatan 2.

Dalam implementasi leidenalg, bobot edge dapat diberikan sebagai input, dan bobot yang lebih besar diperlakukan sebagai koneksi yang lebih kuat. Untuk ModularityVertexPartition, dokumentasi juga mencatat bahwa objective tersebut ditujukan untuk edge weight positif.

Ini sangat berguna pada dunia nyata karena hubungan biasanya tidak sekadar "ada" atau "tidak ada".

Contoh:

  • 1 kali transaksi = weight 1.

  • 100 kali transaksi = weight 100.

Dengan demikian, struktur komunitas dapat mempertimbangkan intensitas hubungan.

Apakah Leiden Harus Digunakan pada Graph Tidak Berbobot?

Tidak selalu.

Graph dapat memiliki:

  • edge tanpa bobot,

  • edge berbobot,

  • node dengan ukuran atau bobot tertentu,

  • bahkan struktur yang lebih kompleks dalam implementasi tertentu.

Dokumentasi leidenalg juga menyediakan dukungan untuk jaringan multiplex dan temporal, sehingga Leiden dapat digunakan pada skenario di mana jaringan memiliki beberapa layer atau berubah berdasarkan waktu.

Leiden pada Temporal Network

Dalam jaringan temporal, hubungan dapat berubah dari waktu ke waktu.

Misalnya:

text Salin
text
Januari
A ─ B ─ C

Februari
A ─ B ─ C ─ D

Maret
A ─ D ─ E

Community pada Januari belum tentu sama dengan community pada Maret.

Implementasi leidenalg menyediakan fungsi untuk community detection pada temporal graphs dengan coupling antar time slice.

Ini membuka peluang untuk menganalisis bukan hanya:

"Siapa berada di komunitas mana?"

tetapi juga:

"Bagaimana komunitas berubah dari waktu ke waktu?"

Leiden Bersifat Random atau Deterministik?

Leiden melibatkan komponen randomisasi dalam proses tertentu.

Dalam fase refinement, pemilihan komunitas yang akan digabung tidak selalu dilakukan secara greedy dengan memilih peningkatan terbesar. Pemilihan dilakukan secara acak dengan probabilitas yang dipengaruhi oleh peningkatan quality function dan parameter tertentu.

Karena itu, dua kali menjalankan algoritma pada data yang sama dapat menghasilkan partition yang sedikit berbeda, terutama jika random seed berbeda.

Untuk eksperimen yang membutuhkan reproducibility, implementasi seperti leidenalg menyediakan parameter seed.

Praktiknya, jangan hanya menjalankan Leiden sekali lalu menganggap hasilnya pasti "jawaban tunggal".

Untuk analisis serius, lebih baik mengevaluasi stabilitas hasil terhadap beberapa seed atau pengaturan yang relevan.

Apa Itu Number of Iterations?

Leiden dijalankan secara iteratif.

Secara sederhana:

text Salin
text
Iteration 1
↓
Partition A

Iteration 2
↓
Partition B

Iteration 3
↓
Partition C

Pada setiap iterasi, partition dapat menjadi lebih baik menurut objective function yang digunakan.

Implementasi leidenalg memiliki parameter n_iterations. Dokumentasinya menyatakan bahwa default pada fungsi find_partition adalah dua iterasi, sedangkan nilai negatif dapat digunakan untuk menjalankan algoritma sampai tidak ada peningkatan lagi.

Namun, angka default implementasi tidak boleh dianggap sebagai aturan universal. Jumlah iterasi sebaiknya dipilih berdasarkan kebutuhan analisis dan stabilitas hasil.

Contoh Implementasi Python

Salah satu library yang umum digunakan adalah leidenalg bersama igraph.

Instalasi sederhananya:

bash Salin
bash
pip install igraph leidenalg

Contoh paling sederhana untuk community detection berbasis modularity:

python Salin
python
import igraph as ig
import leidenalg as la

# Membuat graph
graph = ig.Graph.Famous("Zachary")

# Menjalankan Leiden dengan modularity
partition = la.find_partition(
    graph,
    la.ModularityVertexPartition,
    seed=42
)

print("Jumlah komunitas:", len(partition))
print("Membership:", partition.membership)

Pola penggunaan tersebut sesuai dengan dokumentasi resmi leidenalg, yang menggunakan igraph sebagai representasi graph dan find_partition() untuk menjalankan community detection.

Menggunakan CPM

Contoh lainnya:

python Salin
python
import igraph as ig
import leidenalg as la

graph = ig.Graph.Famous("Zachary")

partition = la.find_partition(
    graph,
    la.CPMVertexPartition,
    resolution_parameter=0.1,
    seed=42
)

print("Jumlah komunitas:", len(partition))
print("Membership:", partition.membership)

CPM memungkinkan kita menggunakan resolution parameter dengan interpretasi yang berbeda dibandingkan modularity.

Bagaimana Cara Memilih Resolution yang Tepat?

Tidak ada satu angka resolution yang otomatis benar untuk semua jaringan.

Misalnya Anda mendapatkan:

text Salin
text
Resolution = 0.1
→ 4 communities

Resolution = 0.5
→ 12 communities

Resolution = 1.0
→ 30 communities

Pertanyaannya bukan:

"Mana yang paling banyak?"

Tetapi:

"Skala komunitas mana yang paling masuk akal untuk pertanyaan penelitian saya?"

Contohnya, untuk menganalisis struktur organisasi perusahaan, Anda mungkin tertarik pada departemen besar.

Tetapi untuk menganalisis pola kolaborasi, Anda mungkin ingin melihat subkelompok yang lebih kecil.

Karena itu, resolution sebaiknya dipilih berdasarkan tujuan analisis, bukan hanya berdasarkan jumlah cluster yang dihasilkan.

Jangan Terjebak pada Angka Modularity

Salah satu kesalahan umum adalah menganggap:

"Semakin tinggi modularity, semakin benar komunitasnya."

Belum tentu.

Modularity adalah fungsi kualitas tertentu. Ia mengukur seberapa baik partition menurut definisi matematis tersebut, bukan memberikan kebenaran absolut tentang dunia nyata.

Dua partition dapat memiliki nilai kualitas yang berdekatan tetapi memiliki interpretasi yang berbeda.

Selain itu, modularity memiliki resolution limit, sehingga komunitas kecil dapat tidak terdeteksi secara terpisah. Paper Leiden membahas masalah ini dan menjelaskan bahwa CPM dirancang untuk menghindari masalah resolution-limit tersebut.

Jadi hasil Leiden tetap membutuhkan interpretasi domain.

Kelebihan Leiden Algorithm

1. Komunitas Lebih Terhubung

Ini merupakan keunggulan utama yang melatarbelakangi pembuatannya.

Leiden memberikan jaminan terkait konektivitas komunitas yang tidak diberikan oleh Louvain secara umum.

2. Biasanya Cepat

Leiden menggunakan fast local move procedure yang menghindari pemeriksaan ulang terhadap node yang tidak mengalami perubahan lingkungan.

Dalam penelitian aslinya, Leiden ditemukan lebih cepat daripada Louvain pada jaringan yang diuji.

3. Partition Berkualitas Tinggi

Dalam benchmark penelitian asli, Leiden menemukan partition yang memiliki kualitas lebih baik dibandingkan Louvain pada pengujian mereka.

Namun, kualitas tetap bergantung pada objective function, parameter, dan dataset.

4. Fleksibel

Leiden dapat digunakan dengan berbagai objective function melalui implementasinya.

leidenalg, misalnya, mendukung Modularity, CPM, RBConfiguration, Significance, Surprise, dan lainnya.

5. Cocok untuk Network Besar

Leiden dirancang sebagai metode community detection yang efisien sehingga cocok untuk network yang besar dan kompleks.

6. Mendukung Analisis Lanjutan

Implementasi tertentu memungkinkan penggunaan graph berbobot, multiplex network, dan temporal network.

Kekurangan Leiden Algorithm

Leiden bukan berarti sempurna.

1. Tidak Memberikan "Label Bisnis" Secara Otomatis

Leiden mungkin menghasilkan:

text Salin
text
Community 1
Community 2
Community 3

Tetapi algoritma tidak otomatis mengetahui bahwa Community 1 adalah:

"Pelanggan retail premium"

atau:

"Departemen Marketing"

Interpretasi tersebut tetap menjadi tanggung jawab analis.

2. Hasil Dipengaruhi Parameter

Resolution, objective function, weights, seed, dan jumlah iterasi dapat memengaruhi hasil.

3. Tidak Selalu Menemukan Satu Jawaban Unik

Network dapat memiliki lebih dari satu struktur komunitas yang masuk akal.

4. Tidak Sama dengan Clustering Biasa

Orang yang terbiasa dengan K-Means terkadang menganggap semua clustering sama.

Padahal Leiden memanfaatkan topologi network, bukan sekadar jarak antar-record dalam feature space.

5. Hasil Harus Divalidasi

Community structure yang ditemukan secara matematis tetap harus dibandingkan dengan pengetahuan domain, data eksternal, atau analisis lanjutan.

Leiden vs K-Means

Perbedaan ini penting.

K-Means biasanya bekerja pada data numerik yang memiliki fitur.

Misalnya:

text Salin
text
Customer
- umur
- pendapatan
- frekuensi pembelian
- total transaksi

K-Means mencari kelompok berdasarkan kemiripan fitur.

Leiden berbeda.

Misalnya:

text Salin
text
Customer A ─ Customer B
Customer B ─ Customer C
Customer C ─ Customer D

Leiden melihat hubungan antar-node.

Jadi:

K-Means → "data mana yang mirip?"

Leiden → "node mana yang membentuk komunitas berdasarkan hubungan jaringan?"

Keduanya bisa digunakan dalam satu project, tetapi untuk tujuan yang berbeda.

Leiden vs DBSCAN

DBSCAN juga merupakan metode clustering, tetapi pendekatannya berbeda.

DBSCAN mencari kelompok berdasarkan kepadatan titik dalam ruang fitur.

Leiden mencari struktur komunitas dalam graph.

Dengan kata lain:

text Salin
text
DBSCAN
Data points → density

Leiden
Graph → connectivity/community structure

Leiden vs Louvain

Secara praktis, jika Anda menemukan tutorial lama yang menggunakan Louvain, jangan langsung menganggap tutorial tersebut salah.

Louvain tetap merupakan algoritma penting dalam sejarah community detection.

Namun Leiden dikembangkan sebagai perbaikan yang secara khusus menangani kelemahan struktur komunitas Louvain, terutama masalah komunitas yang dapat terhubung secara buruk atau terputus.

Dalam banyak workflow modern, Leiden menjadi pilihan yang sangat menarik ketika kita ingin community detection yang cepat sekaligus memiliki jaminan struktur yang lebih kuat.

Contoh Penggunaan dalam Dunia Nyata

Misalnya sebuah marketplace mempunyai 10 juta pengguna.

Setiap pengguna memiliki hubungan dengan produk berdasarkan:

  • pembelian,

  • klik,

  • wishlist,

  • review,

  • atau interaksi lainnya.

Kita dapat membuat graph:

text Salin
text
User → Product

atau membentuk graph pengguna berdasarkan kemiripan interaksi:

text Salin
text
User A ─ User B
User B ─ User C
User C ─ User D

Setelah itu Leiden dapat digunakan untuk menemukan komunitas.

Misalnya hasilnya:

text Salin
text
Community 1
Laptop
Monitor
Keyboard
Mouse

Community 2
Kulkas
Mesin Cuci
Rice Cooker

Community 3
TV
Soundbar
Speaker

Perusahaan kemudian dapat menggunakan hasil tersebut untuk:

  • rekomendasi produk,

  • segmentasi pengguna,

  • personalisasi,

  • analisis perilaku,

  • merchandising,

  • strategi marketing.

Leiden sendiri tidak otomatis melakukan semua hal tersebut. Algoritma hanya menemukan struktur komunitas. Pemanfaatan bisnis dilakukan pada tahap berikutnya.

Contoh dalam Analisis Media Sosial

Misalnya Anda memiliki jaringan 1 juta akun.

Edge menunjukkan interaksi antar-akun.

Setelah dijalankan:

text Salin
text
Community 1 → 15.000 akun
Community 2 → 8.000 akun
Community 3 → 27.000 akun
...

Anda kemudian dapat menghitung:

  • ukuran komunitas,

  • node paling berpengaruh,

  • density,

  • centrality,

  • topik dominan,

  • hubungan antar-komunitas.

Leiden menjadi langkah awal untuk menemukan struktur jaringan, bukan seluruh analisis.

Leiden dalam Analisis SEO dan Topical Authority

Leiden juga dapat menarik ketika diterapkan pada analisis jaringan konten.

Misalnya kita memiliki:

text Salin
text
URL
Keyword
Internal Link
Entity
Topic

Kita dapat membangun graph berdasarkan hubungan antarhalaman.

Contohnya:

text Salin
text
SEO
├── Technical SEO
├── On-Page SEO
├── Off-Page SEO
├── Local SEO
└── Enterprise SEO

Jika setiap halaman dianggap sebagai node dan hubungan internal link atau semantic similarity dijadikan edge, Leiden dapat membantu menemukan community/topical cluster yang muncul secara alami dari struktur jaringan.

Namun perlu dibedakan:

Leiden tidak secara otomatis menentukan "topical authority" Google.

Leiden hanya menemukan pola komunitas dalam graph yang kita berikan.

Untuk SEO, kualitas hasil sangat bergantung pada bagaimana graph dibangun.

Hal yang Sangat Penting: Garbage In, Garbage Out

Ini prinsip yang berlaku sangat kuat pada Leiden.

Misalnya graph dibangun secara buruk.

Jika edge tidak relevan:

text Salin
text
A ─ B
A ─ X
A ─ Z

algoritma akan tetap melakukan community detection berdasarkan hubungan tersebut.

Artinya:

Algoritma yang bagus tidak dapat memperbaiki graph yang dibangun secara salah.

Dalam project nyata, kualitas:

  • definisi node,

  • definisi edge,

  • edge weight,

  • preprocessing,

  • filtering,

  • resolution,

  • dan objective function

sangat memengaruhi hasil akhir.

Karena itu, tahap membangun graph sering kali sama pentingnya dengan memilih algoritma.

Bagaimana Workflow Leiden yang Baik?

Workflow yang masuk akal biasanya seperti ini:

text Salin
text
Data mentah
   ↓
Definisikan node
   ↓
Definisikan edge
   ↓
Tentukan bobot
   ↓
Bersihkan graph
   ↓
Pilih objective function
   ↓
Pilih resolution
   ↓
Jalankan Leiden
   ↓
Evaluasi hasil
   ↓
Uji stabilitas
   ↓
Interpretasi komunitas
   ↓
Gunakan hasil untuk keputusan

Jadi jangan berhenti di:

"Saya sudah menjalankan Leiden dan mendapatkan 12 cluster."

Pertanyaan berikutnya justru lebih penting:

"Apakah 12 cluster tersebut stabil, masuk akal, dan berguna?"

Bagaimana Mengevaluasi Hasil Leiden?

Beberapa hal dapat diperiksa.

Kualitas Objective

Misalnya modularity atau objective function lain.

Connectivity

Pastikan komunitas memiliki konektivitas yang masuk akal.

Stability

Jalankan beberapa seed dan lihat apakah struktur komunitas relatif konsisten.

Sensitivity terhadap Resolution

Coba beberapa nilai resolution.

Contohnya:

text Salin
text
0.1 → 5 communities
0.2 → 7 communities
0.3 → 10 communities
0.5 → 18 communities

Kemudian lihat pada rentang mana struktur komunitas relatif stabil.

Validasi Domain

Ini yang sering dilupakan.

Jika Anda menganalisis pelanggan dan Leiden menghasilkan:

text Salin
text
Community A
70% pelanggan premium

hasil tersebut perlu dibandingkan dengan data bisnis lain.

Semakin sesuai hasil algoritma dengan bukti independen, semakin kuat interpretasinya.

Apakah Leiden Selalu Lebih Baik daripada Louvain?

Tidak tepat jika mengatakan:

"Leiden selalu lebih baik."

Yang lebih akurat adalah:

Leiden dirancang untuk mengatasi kelemahan penting Louvain dan dalam penelitian aslinya menunjukkan performa yang lebih baik pada benchmark yang mereka evaluasi.

Tetapi kualitas algoritma tetap bergantung pada:

  • dataset,

  • graph construction,

  • objective function,

  • resolution,

  • random seed,

  • dan tujuan analisis.

Karena itu, dalam pekerjaan ilmiah atau enterprise analytics, perbandingan empiris tetap lebih baik daripada sekadar mengikuti tren.

Apakah Leiden Sulit Dipelajari?

Untuk pengguna biasa, tidak terlalu sulit.

Anda tidak harus memahami seluruh matematika Leiden untuk menggunakannya.

Level pemahamannya dapat dibagi menjadi tiga.

Level 1 — Pengguna

Cukup pahami:

  • graph,

  • node,

  • edge,

  • community,

  • resolution,

  • hasil clustering.

Level 2 — Data Analyst

Mulai memahami:

  • modularity,

  • CPM,

  • edge weight,

  • parameter,

  • stability,

  • evaluasi hasil.

Level 3 — Data Scientist / Researcher

Perlu memahami:

  • objective function,

  • optimization,

  • refinement,

  • local moving,

  • aggregation,

  • resolution limit,

  • stochasticity,

  • convergence,

  • graph theory.

Untuk sebagian besar kebutuhan bisnis, Level 1 dan Level 2 sudah sangat memadai.

Ringkasnya, Leiden Algorithm Itu Apa?

Cara paling sederhana untuk mengingatnya adalah:

Leiden Algorithm adalah algoritma community detection yang digunakan untuk menemukan kelompok alami dalam sebuah jaringan berdasarkan pola hubungan antar-node.

Ia bekerja melalui tiga konsep utama:

Local Moving → Refinement → Aggregation

Local moving mencari perpindahan node yang meningkatkan kualitas.

Refinement memeriksa dan memperbaiki struktur internal komunitas.

Aggregation menyederhanakan jaringan agar proses optimisasi dapat dilanjutkan pada level yang lebih tinggi.

Keunggulan utama Leiden dibandingkan Louvain adalah kemampuannya menghasilkan komunitas yang lebih terhubung dengan jaminan teoretis tertentu, sementara fast local move procedure membuatnya efisien pada jaringan besar.

Dalam praktiknya, Leiden dapat digunakan pada social network, citation network, biological network, collaboration network, product network, customer network, hingga jaringan temporal dan multiplex melalui implementasi tertentu.

Hal terpenting yang perlu diingat adalah bahwa Leiden bukan mesin yang secara otomatis mengetahui "kelompok yang benar". Ia mengoptimalkan suatu definisi kualitas pada graph yang kita berikan. Karena itu, kualitas graph, pemilihan objective function, resolution, stabilitas hasil, dan interpretasi domain tetap sangat penting.

Dengan memahami prinsip tersebut, Leiden Algorithm akan jauh lebih mudah dipahami: bukan sebagai algoritma yang rumit dan penuh rumus, tetapi sebagai cara sistematis untuk menemukan struktur tersembunyi di balik jaringan yang sangat kompleks.

Fanha Penulis

Spesialis pembersihan malware dan pemulihan hack untuk bisnis lokal. Semua tulisan ditulis dari pengalaman langsung menangani klien.

Konsultasi Gratis via WhatsApp

Bagikan artikel ini