Lewati ke konten utama

Clustering Hierarkis: Ikhtisar Konsep dengan Contoh

Pahami konsep dasar clustering hierarkis, cara kerjanya, dan cara mengimplementasikannya di Python.
Diperbarui 28 Sep 2026  · 9 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Jadi Anda baru saja diminta menganalisis dataset besar, dan Anda harus menyajikan analisis klaster yang mendalam. Anda menemukan istilah “clustering hierarkis”, tetapi apa sebenarnya itu, dan bagaimana cara kerjanya? 

Dalam artikel ini, kita akan mengeksplorasi konsep clustering hierarkis dan menyajikan contoh dunia nyata untuk membantu Anda memahami penerapannya dengan lebih baik.

Apa itu Clustering Hierarkis?

Clustering hierarkis adalah algoritma pembelajaran tanpa pengawasan yang digunakan untuk mengelompokkan titik data serupa ke dalam klaster. Algoritma ini membangun hierarki multilevel dari klaster dengan menggabungkan klaster kecil menjadi lebih besar (agglomerative) atau membagi klaster besar menjadi yang lebih kecil (divisive). Hasilnya adalah struktur seperti pohon yang dikenal sebagai dendrogram.

Dendrogram adalah representasi visual yang menggambarkan susunan klaster dan hubungan di antara mereka. Ketinggian cabang pada dendrogram merepresentasikan jarak atau ketidakmiripan saat klaster bergabung. Ketinggian yang lebih rendah menunjukkan klaster yang bergabung pada jarak lebih kecil, sehingga merepresentasikan kemiripan yang lebih tinggi.

Mengapa clustering hierarkis penting dalam machine learning

Clustering hierarkis sangat berguna ketika jumlah klaster belum diketahui sebelumnya. Teknik ini memungkinkan analis data dan ilmuwan data untuk menelusuri struktur data secara visual melalui dendrogram. 

Teknik ini juga mampu mengungkap klaster bertingkat (nested) dan banyak digunakan di bidang seperti genomik, segmentasi pelanggan, dan pengorganisasian dokumen.

Sebagai contoh, misalkan kita memiliki dataset catatan pembelian pelanggan. Dengan clustering hierarkis, kita dapat mengelompokkan pelanggan dengan pola pembelian serupa ke dalam klaster dan mengidentifikasi segmen pasar potensial untuk strategi pemasaran yang terarah.

Clustering Hierarkis vs K-Means

Saat mengerjakan tugas pengelompokan, kebanyakan orang bimbang pada dua metode utama: Clustering hierarkis atau K-means.

Namun apa yang membedakan keduanya? Mari kita lihat perbedaannya di bawah ini untuk gambaran yang lebih jelas.

  • K-Means:
    • Memerlukan jumlah klaster ditentukan sebelum dijalankan.
    • Efisien dan dapat diskalakan untuk dataset besar.
    • Mengasumsikan klaster berbentuk sferis dan berukuran sama.
  • Clustering Hierarkis:
    • Tidak memerlukan jumlah klaster yang telah ditentukan.
    • Lebih mudah ditafsirkan berkat dendrogram.
    • Lebih lambat pada dataset besar namun lebih baik untuk menjelajahi struktur.

Saat membandingkan keduanya, ada beberapa hal yang membuat clustering hierarkis menonjol.

Berikut beberapa area di mana clustering hierarkis unggul:

  • Fleksibel dalam pemilihan klaster menggunakan dendrogram.
  • Bagus untuk dataset kecil atau saat hierarki visual diperlukan.
  • Menangani bentuk klaster yang kompleks.

Namun, ada juga beberapa kelemahan, seperti:

  • Mahal secara komputasi
  • Sensitif terhadap data bising dan pencilan.

Anda mungkin bertanya: Kapan saya harus menggunakan clustering hierarkis?

Clustering hierarkis merupakan pilihan yang sangat baik dalam penerapan berikut:

Jenis-Jenis Clustering Hierarkis

Di dalam teknik clustering hierarkis, ada beberapa jenis, masing-masing memberikan wawasan dan hasil yang berbeda. Dua jenis utama clustering hierarkis adalah agglomerative (bottom-up) dan divisive (top-down).

agglomerative vs divisive

Sumber: Himanshu Sharma di Medium

1. Agglomerative (Bottom-Up)

Clustering agglomerative dimulai dengan setiap titik data sebagai klaster individu dan secara iteratif menggabungkan pasangan klaster terdekat hingga hanya tersisa satu klaster atau hingga memenuhi kondisi penghentian (misalnya jumlah klaster yang diinginkan).

Metode ini juga disebut bottom-up karena dimulai dari bawah (titik data individual) dan membangun ke atas (klaster akhir).

Panduan langkah demi langkah:

  1. Perlakukan setiap titik data sebagai klaster tunggal.
  2. Hitung jarak berpasangan antar semua klaster.
  3. Gabungkan dua klaster dengan jarak terkecil.
  4. Perbarui matriks jarak untuk mencerminkan kumpulan klaster yang baru.
  5. Ulangi langkah 2–4 hingga semua titik berada dalam satu klaster.

Metode ini banyak digunakan karena kesederhanaan dan kemudahan implementasinya.

Berikut contoh bagaimana ini dapat diimplementasikan di Python:

import numpy as np
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
import matplotlib.pyplot as plt

# Samples data
data = np.array([[1, 2], [2, 3], [5, 8], [8, 8], [1, 0], [0, 1]])

# Applies agglomerative clustering using Ward's method
Z = linkage(data, method='ward')

# Plots dendrogram
plt.figure(figsize=(8, 4))
dendrogram(Z)
plt.title('Agglomerative Clustering Dendrogram')
plt.xlabel('Data Points')
plt.ylabel('Distance')
plt.show()

# Extracts clusters (e.g., form 2 clusters)
clusters = fcluster(Z, t=2, criterion='maxclust')
print("Cluster assignments:", clusters)

2. Divisive (Top-Down)

Clustering divisive dimulai dengan semua titik data dalam satu klaster dan secara rekursif membaginya menjadi klaster yang lebih kecil. Proses berlanjut hingga setiap titik data berada di klaster individualnya sendiri.

Pendekatan ini juga dikenal sebagai top-down, karena dimulai dari atas (satu klaster) dan dipecah menjadi klaster yang lebih kecil.

Panduan langkah demi langkah:

  1. Mulai dengan satu klaster besar yang berisi semua titik data.
  2. Bagi klaster menjadi dua yang sebisa mungkin berbeda.
  3. Terapkan kembali proses pembagian secara rekursif pada tiap klaster hasil pembagian.

Metode divisive umumnya lebih mahal secara komputasi karena sifatnya yang rekursif, dan akurasinya sangat bergantung pada strategi pembagian. Metode agglomerative lebih umum digunakan karena kemudahan implementasi dan dukungan luas pada perangkat lunak.

Catatan: Clustering hierarkis divisive tidak didukung secara langsung di pustaka Python standar seperti clustering agglomerative. Salah satu pendekatan adalah menggunakan algoritma clustering seperti k-means secara rekursif.

Berikut konsep kode dari pembagian k-means rekursif yang disimulasikan:

from sklearn.cluster import KMeans

def divisive_clustering(data, depth=2):
    if depth == 0 or len(data) <= 1:
        return [data]

    kmeans = KMeans(n_clusters=2, random_state=42).fit(data)
    labels = kmeans.labels_
    cluster1 = data[labels == 0]
    cluster2 = data[labels == 1]

    return divisive_clustering(cluster1, depth - 1) + divisive_clustering(cluster2, depth - 1)

# Run recursive splitting to simulate divisive clustering
split_clusters = divisive_clustering(data, depth=2)
for i, cluster in enumerate(split_clusters):
    print(f"Cluster {i+1} size: {len(cluster)}")

Kode yang disederhanakan ini mengilustrasikan pendekatan konseptual untuk clustering divisive menggunakan k-means rekursif. Perlu dicatat, metode divisive standar seperti DIANA menggunakan kriteria pembagian yang berbeda.

Konsep dan Terminologi Kunci

Clustering hierarkis melibatkan sejumlah konsep dan istilah kunci yang penting untuk dipahami. Untuk memahami prosesnya sepenuhnya, kita akan membahas konsep-konsep ini lebih rinci di bawah.

1. Dendrogram

dendogram example

Dendrogram adalah struktur seperti pohon yang memvisualisasikan proses clustering hierarkis. Setiap tingkat pada pohon merepresentasikan operasi penggabungan atau pembagian, dan ketinggian cabang merepresentasikan jarak (atau ketidakmiripan) saat klaster digabung.

Berikut alasan mengapa ini penting:

  • Memungkinkan inspeksi visual klaster pada level yang berbeda.
  • Dengan “memotong” dendrogram pada ketinggian tertentu, Anda dapat memilih jumlah klaster yang paling sesuai dengan data.

2. Kriteria linkage

Kriteria linkage menentukan bagaimana jarak antar klaster dihitung selama proses penggabungan.

Berikut beberapa jenis kriteria linkage:

Single linkage (minimum)

Kriteria ini melihat jarak antara titik terdekat dari dua klaster. Ini dapat menghasilkan klaster yang memanjang seperti rantai.

from scipy.spatial.distance import pdist, squareform
data = np.array([[1, 2], [2, 3], [5, 8]])
distance_matrix = squareform(pdist(data, metric='euclidean')) 
single_linkage_min = np.min(distance_matrix[0, 1:])
print("Single Linkage Distance between Cluster A (point 1) and Cluster B (point 2, 3):", single_linkage_min)

Complete linkage (maximum)

Kriteria ini melihat jarak antara titik terjauh dari dua klaster. Ini cenderung menghasilkan klaster yang kompak dan berukuran seragam.

single_linkage_max = np.max(distance_matrix[0, 1:])
print("Complete Linkage Distance between Cluster A and B:", single_linkage_max)

Average linkage (mean)

Kriteria ini melihat jarak rata-rata antara semua titik di satu klaster dengan semua titik di klaster lain. Ini memberikan keseimbangan antara single dan complete linkage.

average_linkage = np.mean(distance_matrix[0, 1:])
print("Average Linkage Distance between Cluster A and B:", average_linkage)

Contoh yang disederhanakan ini mengilustrasikan bagaimana jarak dihitung pada awalnya. Namun, selama proses clustering, kriteria ini (single, complete, average linkage) menerapkan jarak secara iteratif antar seluruh klaster, bukan hanya titik individual.

Metode Ward

Metode Ward adalah variasi dari pendekatan average linkage yang meminimalkan jumlah kuadrat selisih dalam semua klaster. Metode ini cenderung menghasilkan klaster yang lebih seragam ukurannya dibanding metode lain. Sering kali juga menghasilkan klaster yang terpisah baik dan berbentuk sferis.

from scipy.cluster.hierarchy import linkage
linkage_ward = linkage(data, method='ward')
print("Ward's Linkage Matrix:\n", linkage_ward)

Setiap metode memiliki kelebihan masing-masing dan harus dipilih berdasarkan data serta kasus penggunaan.

3. Metrik jarak

Metrik jarak yang digunakan sangat memengaruhi hasil clustering.

Jarak Euclidean

Jarak Euclidean adalah jarak garis lurus antara dua titik dalam ruang multidimensi. Ini adalah metrik jarak yang paling umum digunakan, terutama untuk data yang terdistribusi secara geometris.

Jarak Manhattan

Jarak Manhattan, juga dikenal sebagai jarak taksi atau L1, adalah jumlah selisih absolut di seluruh dimensi. Berguna untuk data seperti kisi, misalnya blok kota atau transaksi keuangan.

Kemiripan kosinus

Kemiripan kosinus mengukur kosinus sudut antara dua vektor non-nol. Metrik ini ideal untuk data teks atau ketika besarannya tidak penting (misalnya vektor frekuensi kata).

Mengimplementasikan Clustering Hierarkis di Python

Pada bagian ini, kita akan menelusuri implementasi praktis clustering hierarkis agglomerative menggunakan Python. Kita akan membahas mulai dari prapemrosesan data hingga memvisualisasikan hasil menggunakan dendrogram.

Pustaka

Kita mulai dengan mengimpor pustaka yang diperlukan:

import numpy as np
import pandas as pd
from scipy.cluster.hierarchy import dendrogram, linkage, fcluster
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

Berikut yang kita impor pada kode di atas:

  • numpy dan pandas untuk manipulasi data
  • scipy.cluster.hierarchy untuk clustering dan pembuatan dendrogram
  • sklearn.preprocessing.StandardScaler untuk penskalaan fitur
  • matplotlib untuk visualisasi

Data contoh

Sebelum memulai analisis, mari kita buat dataset mainan berupa titik 2D dan melakukan penskalaan. Penskalaan sangat penting untuk algoritma berbasis jarak.

Berikut tampilan dataset contoh kita.

example data array

data = np.array([[1, 2], [2, 3], [5, 8], [8, 8], [1, 0], [0, 1]])
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)

Berikut seperti apa array data setelah diskalakan.

scaled example data array

Membuat matriks linkage & dendrogram

Kita menerapkan metode Ward untuk menghasilkan matriks linkage, yang berisi informasi clustering hierarkis. Lalu, kita plot dendrogram.

linkage_matrix = linkage(data_scaled, method='ward')
plt.figure(figsize=(8, 4))
dendrogram(linkage_matrix)
plt.title('Dendrogram')
plt.xlabel('Data Points')
plt.ylabel('Distance')
plt.show()

Pada kode di atas, linkage membangun hierarki klaster, dan dendrogram membantu memvisualisasikan bagaimana klaster terbentuk.

dendogram example

Dengan memeriksa di mana garis vertikal paling panjang sebelum penggabungan, kita dapat memutuskan di mana harus “memotong” untuk membentuk klaster. Carilah garis vertikal tertinggi yang tidak berpotongan dengan klaster lain mana pun. Di situlah Anda harus melakukan pemotongan.

Dalam kasus ini, Anda perlu memotong pada 2 klaster.

Membuat klaster

Selanjutnya, kita memotong dendrogram untuk mendapatkan jumlah klaster tertentu menggunakan fcluster:

clusters = fcluster(linkage_matrix, t=2, criterion='maxclust')
print(clusters)

plt.scatter(data_scaled[:, 0], data_scaled[:, 1], c=clusters, cmap='rainbow')
plt.title('Clusters')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

Ini menetapkan setiap titik data ke salah satu dari dua klaster.

Beberapa informasi tambahan tentang kode:

  • t=2: Menentukan jumlah klaster yang diinginkan.
  • criterion='maxclust': Memastikan kita mendapatkan tepat t klaster.

Anda dapat mengubah t untuk bereksperimen dengan jumlah klaster yang berbeda.

Contoh Praktis: Segmentasi Pelanggan

Clustering hierarkis umumnya digunakan dalam segmentasi pelanggan. Mari kita lihat seperti apa implementasi praktisnya.

1. Gambaran dataset

Mari kita simulasikan dataset yang merepresentasikan pelanggan dengan dua fitur: usia dan pendapatan. Kita akan menggunakan make_blobs untuk menghasilkan data sintetis ini.

from sklearn.datasets import make_blobs
X, _ = make_blobs(n_samples=100, centers=3, n_features=2, random_state=42)

2. Prapemrosesan

Selanjutnya, kita perlu menstandarkan fitur untuk menormalkan skala dan meningkatkan akurasi clustering.

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

Berikut tampilan data yang telah diskalakan:

scaled customer data

3. Menerapkan clustering hierarkis

Setelah data diproses, kita akan memplot dendrogram untuk memvisualisasikan bagaimana klaster terbentuk.

linkage_matrix = linkage(X_scaled, method='ward')
plt.figure(figsize=(10, 5))
dendrogram(linkage_matrix)
plt.title('Customer Dendrogram')
plt.xlabel('Sample Index')
plt.ylabel('Distance')
plt.show()

customer clustering dendogram

4. Menafsirkan hasil

Dari dendrogram, kita memilih ketinggian untuk “memotong” dan membuat tiga klaster:

labels = fcluster(linkage_matrix, t=3, criterion='maxclust')
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=labels, cmap='rainbow')
plt.title('Customer Segments')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

Customer Segment Clusters

Implikasi bisnis:

  • Klaster dapat merepresentasikan kelompok pelanggan seperti hemat anggaran, kelas menengah, dan premium.
  • Memungkinkan pemasaran yang dipersonalisasi dan strategi hubungan pelanggan yang lebih baik.

Kelebihan dan Keterbatasan Clustering Hierarkis

Memilih clustering hierarkis untuk analisis Anda memiliki sejumlah kelebihan dan keterbatasan. 

Lihat di bawah untuk beberapa yang umum:

Kelebihan

  • Tidak perlu menentukan jumlah klaster: Anda dapat memilihnya setelah inspeksi visual terhadap dendrogram.
  • Visualisasi yang intuitif: Dendrogram membantu memahami bagaimana klaster terbentuk.
  • Fleksibel: Dapat menangani berbagai bentuk klaster tergantung pada linkage dan metrik jarak.

Kekurangan

  • Intensif secara komputasi: Tidak ideal untuk dataset besar.
  • Sensitif terhadap noise dan pencilan: Beberapa pencilan dapat secara signifikan mendistorsi dendrogram.
  • Tidak ada penugasan ulang: Setelah penggabungan dilakukan, tidak dapat dibatalkan, yang dapat menyebabkan clustering yang kurang optimal.

Kesimpulan

Clustering hierarkis adalah teknik clustering yang serbaguna dan mudah ditafsirkan, terutama berguna dalam analisis data eksploratori serta domain seperti genomik dan segmentasi pelanggan. Terlepas dari biayanya secara komputasi, kekuatannya terletak pada kemampuannya mengungkap pengelompokan bertingkat dan fleksibilitas dalam memilih jumlah klaster secara pasca-analisis melalui visualisasi dendrogram.

Untuk dataset kecil hingga menengah di mana interpretabilitas menjadi kunci, clustering hierarkis tetap menjadi metode andalan bagi ilmuwan data dan analis.

Ingin mempelajari lebih lanjut detail machine learning? Machine Learning Fundamentals in Python track dan tutorial Introduction to Hierarchical Clustering in Python kami adalah tempat yang tepat untuk memulai.

Hierarchical Clustering FAQs

Apakah clustering hierarkis lebih baik daripada k-means?

Tergantung pada data dan tujuan Anda. Clustering hierarkis lebih baik untuk dataset kecil dan ketika hubungan antar titik data tidak terdefinisi dengan baik. K-means lebih cocok untuk dataset yang lebih besar dan ketika klaster yang jelas dapat diidentifikasi.

Bisakah saya menggunakan clustering hierarkis dengan variabel kategorikal?

Ya, Anda dapat mengonversi variabel kategorikal menjadi nilai numerik lalu menerapkan clustering hierarkis. Namun, ini tidak selalu tepat, tergantung pada dataset spesifiknya.

Bagaimana cara memilih jumlah klaster pada clustering hierarkis?

Ada berbagai metode seperti interpretasi dendrogram, koefisien siluet, atau metode siku yang dapat membantu menentukan jumlah klaster optimal untuk dataset Anda.

Apa perbedaan antara clustering hierarkis dan k-means?

Clustering hierarkis membuat hierarki klaster dengan mengelompokkan titik data serupa, sedangkan k-means membagi data ke dalam jumlah klaster yang telah ditentukan sebelumnya dengan meminimalkan varians intra-klaster. Selain itu, k-means mengharuskan pengguna menentukan jumlah klaster di awal, sementara clustering hierarkis tidak memiliki persyaratan ini.

Bagaimana clustering hierarkis menangani pencilan?

Clustering hierarkis kurang terpengaruh oleh pencilan dibandingkan metode clustering lain, karena mempertimbangkan struktur keseluruhan data alih-alih titik individual. Namun, dalam beberapa kasus, pencilan tetap dapat mendistorsi hasil dan harus ditangani dengan hati-hati. Beberapa teknik untuk menangani pencilan dalam clustering hierarkis termasuk menghapusnya dari dataset atau menggunakan ukuran jarak yang kurang sensitif terhadap pencilan.


Austin Chia's photo
Author
Austin Chia
LinkedIn

Saya Austin, seorang blogger dan penulis teknologi dengan pengalaman bertahun-tahun sebagai data scientist dan analis data di bidang kesehatan. Memulai perjalanan teknologi dengan latar belakang biologi, kini saya membantu orang lain melakukan transisi yang sama melalui blog teknologi saya. Ketertarikan saya pada teknologi mendorong kontribusi tulisan saya untuk puluhan perusahaan SaaS, menginspirasi orang lain dan membagikan pengalaman saya.

Topik
Analisis Data
Python

Kursus Teratas di DataCamp

Kursus

Analisis Klaster di Python

4 jam
65.9K
Dalam kursus ini, Anda akan diperkenalkan pada pembelajaran tak terawasi melalui teknik seperti hierarchical dan k-means clustering menggunakan pustaka SciPy.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya