Lewati ke konten utama

Estimasi Kepadatan Kernel: Dari Teori ke Praktik

Estimasi kepadatan kernel adalah metode nonparametrik untuk memperkirakan bentuk distribusi data tanpa mengasumsikan model tetap. Pelajari rumusnya, pemilihan bandwidth, dan implementasi praktis di Python dan R.
Diperbarui 16 Jun 2026  · 11 mnt baca

Pernah mencoba memvisualisasikan sebuah distribusi, tetapi histogramnya berubah bentuk setiap kali Anda mengubah ukuran bin?

Biasanya begini alurnya. Anda memilih 10 bin dan melihat kurva yang mulus. Lalu, Anda ganti ke 30 dan muncul banyak puncak. Datanya tetap sama, tetapi jumlah bin yang berbeda memberi interpretasi yang berbeda. Itulah masalah terbesar histogram: histogram tidak menunjukkan distribusi Anda, melainkan satu versinya saja. Dan versi itu dipengaruhi oleh parameter yang Anda tentukan secara sewenang-wenang.

KDE mengambil pendekatan berbeda. Alih-alih memotong data ke dalam bin, KDE menempatkan kurva halus kecil pada setiap titik data dan menjumlahkannya. Hasilnya adalah satu estimasi kontinu atas distribusi yang mendasarinya.

Dalam artikel ini, Anda akan mendapatkan intuisi di balik KDE, penjelasan rumusnya, bagaimana bandwidth mengontrol kehalusan, serta contoh praktis di Python dan R.

Baru mengenal histogram? Berikut panduan komprehensif tentang Histogram Frekuensi untuk memulai.

Apa Itu Estimasi Kepadatan Kernel?

Estimasi kepadatan kernel adalah metode nonparametrik untuk memperkirakan fungsi kepadatan probabilitas dari suatu dataset.

Bagian nonparametrik inilah yang membuatnya berbeda.

Dengan metode parametrik, Anda mengasumsikan data mengikuti distribusi tertentu—normal, eksponensial—lalu menyesuaikan parameternya. Jika asumsi itu keliru, model Anda keliru. KDE tidak membuat asumsi seperti itu. KDE membiarkan data berbicara sendiri dan membangun estimasi distribusi yang mendasarinya langsung dari observasi.

Keluaran yang dihasilkan adalah kurva halus yang menunjukkan di mana nilai kemungkinan muncul—dan seberapa besar kemungkinannya. Titik tinggi pada kurva berarti wilayah padat. Titik rendah berarti wilayah jarang.

Mengapa Menggunakan Estimasi Kepadatan Kernel?

Histogram adalah alat bawaan untuk memvisualisasikan distribusi, tetapi ada masalah: bentuk yang Anda lihat bergantung pada jumlah bin yang dipilih. Dan parameter jumlah bin itu Anda yang menentukan. Dua orang bisa melihat dataset yang sama dan menarik kesimpulan yang sama sekali berbeda hanya karena memilih jumlah bin yang berbeda.

Dengan KDE, alih-alih memaksa data ke dalam bin, KDE menghasilkan kurva halus dan kontinu yang tidak berubah berdasarkan parameter sewenang-wenang yang Anda tetapkan di awal.

Itu membuatnya berguna untuk beberapa hal:

  • Memvisualisasikan bentuk keseluruhan distribusi tanpa bias ukuran bin
  • Mendeteksi pola seperti banyak puncak, kecondongan (skew), atau ekor berat
  • Membandingkan distribusi antar kelompok pada plot yang sama
  • Mendapatkan gambaran data yang lebih bersih sebelum pemodelan

Intuisi di Balik KDE

Anda mengambil setiap titik data dan menempatkan kurva halus kecil di atasnya. Kurva itu disebut kernel. Lalu, jumlahkan semua kurva individual tersebut menjadi satu.

Hasil akhirnya adalah satu kurva halus yang menunjukkan kepadatan data Anda. Di tempat titik-titik berkumpul, banyak kernel saling tumpang tindih dan menumpuk, sehingga kurva naik. Di wilayah yang jarang, kernel nyaris tidak bertumpuk dan kurva tetap rendah. Setiap titik berkontribusi sama terhadap estimasi akhir.

Bayangkan Anda mencatat nilai ujian akhir untuk satu kelas. Alih-alih memasukkannya ke histogram, KDE menempatkan kurva halus kecil pada setiap nilai. Di mana nilai-nilai berkumpul—misalnya di kisaran 70–75—kurva- kurva itu menumpuk dan estimasi naik. Seorang siswa yang mendapat 95 hanya menambah sedikit tonjolan di ekor.

Visual di bawah ini menunjukkan hal tersebut. Sebagian besar siswa mendapat nilai sekitar rata-rata, dan satu siswa mendapat nilai jauh lebih tinggi:

KDE divisualisasikan

KDE divisualisasikan

Rumus Estimasi Kepadatan Kernel

Rumus KDE terlihat lebih menakutkan daripada aslinya.

Rumus KDE

Berikut arti tiap bagiannya:

  • n adalah jumlah titik data

  • x_i adalah titik-titik data individual dalam dataset Anda

  • K adalah fungsi kernel—kurva halus yang ditempatkan pada setiap titik

  • h adalah bandwidth—mengontrol seberapa lebar tiap kernel

  • x adalah titik tempat Anda mengevaluasi kepadatan

Secara sederhana, rumusnya mengatakan: untuk setiap titik x, lihat seberapa dekat setiap titik data x_i dengannya, beri bobot kedekatan itu menggunakan fungsi kernel K, dan rata-ratakan hasilnya di seluruh n titik. Lakukan ini untuk setiap x di sepanjang rentang, dan Anda mendapatkan kurva kepadatan penuh.

Bandwidth h berada di penyebut pecahan di dalam K. h yang lebih kecil membuat kernel lebih sempit, sehingga hanya titik yang sangat dekat yang memengaruhi estimasi. h yang lebih besar menyebarkan pengaruh lebih luas. Lebih lanjut tentang ini dibahas nanti di artikel.

Apa Itu Fungsi Kernel?

Kernel adalah kurva halus yang Anda tempatkan pada setiap titik data. Kernel mendefinisikan bagaimana pengaruh titik tersebut menyebar ke tetangganya.

Setiap kernel berpusat pada suatu titik data dan memberikan bobot berdasarkan jarak. Titik dekat pusat mendapat bobot tinggi. Titik yang jauh mendapat bobot rendah atau tidak sama sekali. Bentuk pembobotan yang tepat bergantung pada kernel yang Anda pilih.

Ada tiga pilihan umum:

  • Gaussian: Kurva lonceng. Memberi bobot pada setiap titik dalam dataset, dan pengaruhnya menurun seiring jarak. Ini adalah default di sebagian besar pustaka dan bekerja baik dalam praktik
  • Uniform: Persegi panjang datar. Setiap titik dalam jarak tetap mendapat bobot yang sama, dan apa pun di luar itu tidak mendapat bobot. Sederhana, tetapi menghasilkan estimasi yang kurang halus
  • Epanechnikov: Bentuk parabola yang optimal secara matematis dalam hal galat kuadrat rata-rata. Lebih efisien daripada Gaussian tetapi jarang membuat perbedaan yang terlihat dalam praktik.

Dalam banyak kasus, pilihan kernel tidak terlalu berpengaruh. Dua kernel berbeda yang diterapkan pada data yang sama dengan bandwidth yang sama akan menghasilkan kurva yang hampir identik. Yang jauh lebih penting adalah bandwidth—dan itu yang akan kita bahas selanjutnya.

Peran Bandwidth dalam KDE

Bandwidth adalah satu-satunya parameter yang paling berdampak pada keluaran KDE Anda, bahkan lebih daripada kernel yang Anda pilih.

Bandwidth mengontrol seberapa lebar setiap kernel. Kernel yang sempit hanya menarik pengaruh dari titik-titik terdekat. Kernel yang lebar menyebarkan pengaruh ke rentang yang jauh lebih besar. Hasilnya bisa berupa kurva yang mengikuti data dengan ketat atau yang menghaluskannya.

Bandwidth kecil

Bandwidth kecil membuat setiap kernel rapat dan sempit. Estimasi bereaksi tajam terhadap setiap titik data, yang berarti ia menangkap struktur nyata data, tetapi juga derau.

Dalam praktiknya, ini tampak seperti kurva bergerigi dengan banyak puncak kecil. Sebagian puncak menunjukkan kluster nyata dalam data. Sisanya hanyalah artefak karena pelandaian terlalu sedikit. Sulit membedakan mana yang mana—itulah masalahnya.

KDE dengan bandwidth kecil

KDE dengan bandwidth kecil

Bandwidth besar

Bandwidth besar membuat setiap kernel melebar. Kernel yang berdekatan saling tumpang tindih, dan kurva akhirnya menjadi halus.

Jika terlalu halus, Anda mulai kehilangan struktur nyata. Dua kluster yang berbeda bisa kabur menjadi satu kurva. Distribusi dengan ekor berat bisa tampak simetris. Representasi visualnya mungkin menyembunyikan sesuatu dari Anda.

KDE dengan bandwidth besar

KDE dengan bandwidth besar

Menemukan bandwidth yang tepat

Tidak ada bandwidth yang benar secara universal. Tujuannya adalah menemukan nilai yang cukup halus untuk menyaring derau tetapi tidak terlalu halus hingga menghapus pola nyata.

Sebagian besar pustaka melakukannya dengan metode pemilihan bandwidth otomatis. Aturan praktis Silverman adalah yang paling umum. Metode ini memilih bandwidth berdasarkan ukuran sampel dan simpangan baku data Anda. Bekerja baik untuk distribusi yang kira-kira normal tetapi dapat terlalu menghaluskan distribusi multimodal.

Jika ragu, coba beberapa nilai bandwidth dan bandingkan kurvanya. Perbedaannya akan banyak memberi tahu Anda tentang data.

KDE vs. Histogram

Baik histogram maupun KDE menunjukkan distribusi data Anda—tetapi dengan cara yang sangat berbeda.

Histogram

Histogram membagi data Anda ke dalam bin diskret dan menghitung berapa banyak titik yang masuk ke tiap bin. Cepat, intuitif, dan mudah dijelaskan kepada audiens non-teknis.

Masalahnya adalah sensitivitas terhadap bin. Jika Anda mengubah jumlah bin, bentuknya berubah. Tidak ada jumlah bin yang benar secara obyektif, yang berarti dua orang bisa melihat data yang sama dan menarik kesimpulan berbeda hanya dari pilihan itu.

Histogram juga menghasilkan bentuk bertingkat yang tidak kontinu. Itu tidak masalah untuk tinjauan cepat, tetapi bisa menyamarkan distribusi yang sebenarnya.

KDE

KDE memberi Anda kurva halus dan kontinu tanpa melibatkan bin. KDE lebih baik dalam mengungkap bentuk sebenarnya dari suatu distribusi—hal-hal seperti skew, banyak puncak, atau ekor berat yang mungkin terlewat atau disalahtafsirkan oleh histogram bergantung pada pilihan bin.

Kompensasinya adalah KDE memperkenalkan parameternya sendiri—bandwidth—dan memerlukan komputasi lebih besar. KDE juga kurang intuitif untuk dijelaskan, karena sumbu y menunjukkan kepadatan probabilitas, bukan hitungan, yang dapat membingungkan pembaca yang belum familiar dengan konsep ini.

Kapan menggunakan masing-masing

Gunakan histogram saat Anda membutuhkan ringkasan cepat yang mudah diinterpretasikan atau ketika audiens Anda tidak familiar dengan estimasi kepadatan. Gunakan KDE saat bentuk distribusi penting—misalnya, ketika Anda membandingkan kelompok atau mencoba mendeteksi banyak modus dalam data Anda.

Histogram dibandingkan dengan KDE

Histogram dibandingkan dengan KDE

Dalam praktiknya, keduanya sering digunakan bersama: histogram untuk hitungan, kurva KDE di atasnya untuk bentuk.

Estimasi Kepadatan Kernel di Python

Python memberi Anda beberapa cara untuk menghitung dan memplot KDE, tergantung apakah Anda butuh grafik cepat atau kontrol lebih atas estimasinya.

Memvisualisasikan KDE dengan seaborn

Cara tercepat untuk membuat plot KDE adalah seaborn.kdeplot(). Hanya ini yang diperlukan:

import seaborn as sns
import numpy as np

np.random.seed(42)
scores = np.concatenate([
    np.random.normal(65, 4, 60),
    np.random.normal(80, 3, 40)
])

sns.kdeplot(scores, bw_adjust=1)

KDE dengan seaborn

KDE dengan seaborn

Parameter bw_adjust menskalakan bandwidth yang dipilih secara otomatis. Nilai di bawah 1 memperketat kurva, nilai di atas 1 memperhalusnya. Ini adalah pengali di atas bandwidth apa pun yang dipilih seaborn secara internal, jadi Anda tidak perlu menetapkan nilai bandwidth mentah sendiri.

Sumbu y menunjukkan kepadatan probabilitas, bukan hitungan. Kurva memberi tahu Anda seberapa mungkin suatu nilai relatif terhadap distribusi lainnya. Semakin tinggi berarti semakin banyak data terkonsentrasi di sana.

Menghitung KDE dengan scipy

Jika Anda membutuhkan nilai kepadatan sebenarnya—bukan hanya plot—gunakan scipy.stats.gaussian_kde. Ini memberi Anda objek callable yang bisa dievaluasi di titik mana pun.

from scipy.stats import gaussian_kde
import numpy as np
import matplotlib.pyplot as plt

kde = gaussian_kde(scores, bw_method="scott")
x = np.linspace(45, 100, 500)
density = kde(x)

plt.plot(x, density)

bw_method="scott" menggunakan aturan Scott untuk memilih bandwidth secara otomatis. Ini adalah default yang baik untuk sebagian besar kasus. Anda juga dapat memberikan skalar untuk mengatur bandwidth secara manual.

KDE dengan scipy dan matplotlib

KDE dengan scipy dan matplotlib

Estimasi Kepadatan Kernel di R

Di R, KDE sudah tersedia di bahasa dasarnya. Anda tidak memerlukan paket tambahan.

Menghitung KDE dengan density()

Fungsi density() menerima vektor numerik dan mengembalikan objek KDE.

set.seed(42)
scores <- c(rnorm(60, mean = 65, sd = 4),
            rnorm(40, mean = 80, sd = 3))

kde <- density(scores, bw = "SJ")

Argumen bw mengontrol pemilihan bandwidth. "SJ" menggunakan metode Sheather-Jones, yang menangani distribusi multimodal lebih baik daripada default. Anda juga dapat memberikan nilai numerik untuk mengatur bandwidth secara manual.

Hasilnya adalah objek list dengan dua komponen kunci:

  • kde$x: deret titik tempat kepadatan dievaluasi
  • kde$y: nilai kepadatan yang bersesuaian

Memplot kurva

Cukup teruskan hasilnya langsung ke plot().

plot(kde,
     main = "Exam Score Distribution",
     xlab = "Score",
     ylab = "Density")

KDE diplot di R

Untuk menumpangkan KDE pada histogram, gunakan hist() dengan freq = FALSE terlebih dahulu, lalu tambahkan kurva dengan lines().

hist(scores, freq = FALSE, main = "Histogram + KDE", xlab = "Score")
lines(kde, col = "blue", lwd = 2)

Histogram dengan KDE di R

freq = FALSE menskalakan histogram ke kepadatan sehingga batang dan kurva berbagi sumbu y yang sama.

Kelebihan dan Keterbatasan KDE

KDE memang visual yang berguna, tetapi seperti halnya alat lain, ada kompromi yang perlu diketahui sebelum Anda menggunakannya untuk menggantikan histogram.

Kelebihan

Nilai jual terbesar adalah KDE tidak membuat asumsi tentang distribusi data Anda. Anda tidak perlu memutuskan di awal apakah data Anda normal, eksponensial, atau lainnya. Bentuknya berasal dari data itu sendiri, yang membuat KDE cukup fleksibel untuk menangani distribusi multimodal dan apa pun yang tidak sesuai bentuk parametrik standar.

Keluaran yang dihasilkan juga berupa kurva yang halus dan kontinu, bukan pendekatan bertingkat. Itu memudahkan untuk melihat pola—seperti banyak puncak atau ekor panjang—yang mungkin disembunyikan histogram bergantung pada pilihan bin.

Dan karena KDE bekerja pada data mentah tanpa mengharuskan Anda memasang model terlebih dahulu, KDE adalah langkah awal yang baik dalam analisis eksploratori apa pun.

Keterbatasan

Pemilihan bandwidth adalah kelemahan utama. Jika salah memilih, estimasi akan mengejar derau atau terlalu menghaluskan pola nyata dalam data. Metode otomatis seperti aturan Silverman bekerja baik untuk data yang kira-kira normal, tetapi bisa menyesatkan untuk distribusi kompleks. Sering kali Anda perlu memeriksa beberapa nilai bandwidth secara manual sebelum memercayai hasilnya.

Kinerja bisa menjadi masalah pada skala besar. KDE mengevaluasi fungsi kernel untuk setiap titik data di setiap lokasi evaluasi, yang berarti komputasi meningkat pesat seiring membesarnya dataset. Untuk sebagian besar pekerjaan eksploratori ini bukan masalah, tetapi bisa lambat pada dataset dengan ratusan ribu titik.

Efek batas adalah masalah yang lebih halus. KDE standar mengasumsikan data dapat meluas tak terbatas ke kedua arah. Saat data Anda memiliki batas keras—seperti nilai yang tidak bisa kurang dari nol—estimasi akan “bocor” massa probabilitas melewati batas tersebut, yang menghasilkan kurva yang secara artifisial rendah di dekat tepi. Ada versi KDE dengan koreksi batas, tetapi lebih jarang diimplementasikan di pustaka standar.

Kesimpulan

KDE memberi Anda cara yang lebih bersih untuk melihat distribusi data dibandingkan histogram. Tidak ada pilihan bin dan tidak ada asumsi parametrik—hanya kurva halus yang menunjukkan apa yang sebenarnya ada di dataset Anda.

Bandwidth adalah satu parameter yang benar-benar penting. Cobalah beberapa nilai, bandingkan kurva, gunakan opsi otomatis, dan pastikan estimasi sesuai dengan pengetahuan Anda tentang data sebelum menarik kesimpulan darinya.

Cara terbaik membangun intuisi untuk KDE adalah menjalankannya pada data nyata. Pilih dataset yang sudah Anda kenal, terapkan KDE, dan bandingkan dengan histogram untuk melihat apa yang selama ini terlewat.

Tertarik dengan visualisasi data? Lihat kursus kami tentang Visualisasi Data dengan Seaborn jika Anda menggunakan Python, atau Visualisasi Data dengan ggplot2 jika Anda menggunakan R.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist yang berbasis di Kroasia. Penulis Tekno Teratas dengan lebih dari 700 artikel yang telah diterbitkan, menghasilkan lebih dari 10 juta tayangan. Penulis buku Machine Learning Automation with TPOT.

FAQs

Untuk apa kernel density estimation digunakan?

KDE digunakan untuk memperkirakan distribusi probabilitas suatu dataset tanpa mengasumsikan bahwa dataset tersebut mengikuti bentuk tertentu seperti distribusi normal atau eksponensial. KDE umum digunakan dalam analisis data eksploratori, saat Anda ingin memvisualisasikan bagaimana data Anda terdistribusi sebelum memodelkannya. Anda juga akan menemukannya dalam deteksi anomali, perbandingan distribusi antar kelompok, dan sebagai langkah pelandaian dalam pipeline statistik.

Apa bedanya KDE dengan histogram?

Histogram membagi data menjadi bin diskret dan menghitung berapa banyak titik yang masuk ke masing-masing bin. Bentuk yang Anda dapatkan bergantung pada berapa banyak bin yang dipilih, sehingga sensitif terhadap parameter sewenang-wenang. KDE menghindari hal ini dengan menempatkan kurva halus pada setiap titik data dan menjumlahkannya, sehingga menghasilkan estimasi kontinu yang tidak berubah berdasarkan jumlah bin.

Apakah Anda membutuhkan dataset besar untuk menggunakan KDE?

KDE bisa digunakan pada dataset kecil, tetapi estimasinya kurang andal saat Anda memiliki sangat sedikit titik. Dengan data terbatas, observasi individual memiliki pengaruh besar pada kurva akhir, sehingga lebih sulit memisahkan struktur nyata dari derau. Saat dataset Anda membesar, estimasi menjadi stabil dan lebih akurat mencerminkan distribusi sebenarnya.

Apa yang terjadi jika Anda memilih bandwidth yang salah?

Bandwidth yang terlalu kecil menghasilkan kurva bergerigi yang bereaksi pada setiap titik individual, sehingga sulit melihat bentuk keseluruhan data Anda. Bandwidth yang terlalu besar membuat estimasi terlalu halus dan dapat menggabungkan puncak yang berbeda menjadi satu gundukan, menyembunyikan struktur nyata. Sebagian besar pustaka menawarkan metode pemilihan bandwidth otomatis seperti aturan Silverman sebagai titik awal, tetapi praktik yang baik adalah menguji beberapa nilai secara manual sebelum menarik kesimpulan.

Apakah KDE bekerja baik di dekat batas data Anda?

KDE standar mengasumsikan data dapat meluas tak terbatas ke dua arah, yang menimbulkan masalah ketika variabel Anda memiliki batas bawah atau atas yang keras—seperti usia, pendapatan, atau hitungan apa pun yang tidak bisa kurang dari nol. Di dekat batas-batas tersebut, estimasi “membocorkan” massa probabilitas ke luar rentang yang valid, membuat kurva tampak terlalu rendah di tepi. Metode KDE dengan koreksi batas ada untuk menangani ini, tetapi tidak tersedia di semua pustaka dan memerlukan penyiapan tambahan.

Topik

Belajar bersama DataCamp

Kursus

Support Vector Machines di R

4 Hr
11K
Kursus ini akan memperkenalkan mesin vektor pendukung (SVM) dengan pendekatan intuitif dan visual.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow