All Products
Search
Document Center

PolarDB:Algoritma Pengelompokan K-means (K-Means)

Last Updated:Mar 29, 2026

K-means adalah algoritma pengelompokan iteratif yang terintegrasi dalam PolarDB for MySQL. Gunakan algoritma ini untuk mengelompokkan baris dalam tabel ke dalam K kluster berbeda berdasarkan kolom fitur numerik—langsung di database Anda, tanpa perlu mengekspor data ke platform ML eksternal.

Cara kerja

K-means mempartisi data melalui langkah-langkah berikut:

  1. Bagi set data menjadi K kelompok dan pilih secara acak K baris sebagai pusat awal (centroid).

  2. Hitung jarak dari setiap baris ke setiap centroid.

  3. Tetapkan setiap baris ke centroid terdekatnya.

  4. Hitung ulang setiap centroid sebagai rata-rata dari semua baris yang ditetapkan kepadanya.

  5. Ulangi langkah 2–4 hingga centroid stabil (penetapan tidak berubah lagi) atau algoritma mencapai batas iterasi.

Algoritma ini menggunakan kolom yang Anda tentukan dalam x_cols sebagai fitur dan menghasilkan label kluster untuk setiap baris.

Kasus penggunaan

K-means bekerja dengan baik ketika Anda perlu menemukan pengelompokan alami dalam data numerik. Beberapa aplikasi umum meliputi:

  • Klasifikasi dokumen: Representasikan dokumen sebagai vektor menggunakan frekuensi kata kunci, lalu kelompokkan vektor tersebut untuk mengidentifikasi kelompok dokumen serupa berdasarkan topik atau konten.

  • Segmentasi pelanggan: Kelompokkan pelanggan berdasarkan riwayat pembelian, minat, atau data aktivitas guna mengidentifikasi segmen untuk kampanye yang ditargetkan. Misalnya, segmentasi subscriber telekomunikasi berdasarkan perilaku pembayaran—isi ulang, pengiriman pesan uji coba, dan penjelajahan website.

  • Deteksi penipuan: Kelompokkan catatan transaksi historis untuk mengidentifikasi pola yang terkait dengan klaim penipuan. Terapkan model tersebut untuk menandai catatan baru yang sesuai dengan kluster penipuan yang telah diketahui. Pendekatan ini digunakan dalam deteksi penipuan asuransi kendaraan bermotor, asuransi kesehatan, dan asuransi lainnya.

  • Pengelompokan alert IT: Kelompokkan alert yang dihasilkan oleh infrastruktur jaringan, penyimpanan, atau database untuk mengidentifikasi kategori alert dan mean time to repair, serta memprediksi kegagalan berantai sebelum terjadi.

  • Analisis catatan panggilan: Gabungkan Call Detail Records (CDR) dengan profil pelanggan untuk mengelompokkan subscriber berdasarkan perilaku penggunaan, membantu memprediksi kebutuhan layanan dan mengurangi churn.

  • Analisis pola kejahatan: Kelompokkan event kejahatan berdasarkan jenis dan lokasi untuk mengidentifikasi hotspot dan membantu prioritisasi investigasi.

Parameter

Tetapkan parameter berikut dalam opsi model_parameter pada pernyataan CREATE MODEL Anda.

ParameterDeskripsiBawaan
n_clustersJumlah kluster (K).4

Contoh

Contoh berikut menggunakan tabel db4ai.testdata1, yang berisi kolom numerik dx1 dan dx2.

Buat model K-means

/*polar4ai*/CREATE MODEL test_kmeans WITH
(model_class = 'kmeans', x_cols = 'dx1,dx2',
 y_cols='', model_parameter=(n_clusters=2))
 AS (SELECT * FROM db4ai.testdata1);

Pernyataan ini melatih model K-means bernama test_kmeans yang mengelompokkan baris ke dalam 2 kelompok berdasarkan kolom dx1 dan dx2.

Jalankan prediksi

Setelah model dilatih, gunakan PREDICT untuk mendapatkan penetapan kluster untuk setiap baris:

/*polar4ai*/SELECT dx1, dx2 FROM
PREDICT(MODEL test_kmeans,
SELECT * FROM db4ai.testdata1 LIMIT 10)
WITH (x_cols = 'dx1,dx2',
      y_cols='');

Setiap baris dalam hasil mencakup nilai fitur aslinya (dx1, dx2) dan label kluster yang menunjukkan kelompok tempat baris tersebut ditetapkan.

Catatan penggunaan

  • Kolom dalam x_cols harus berupa data floating-point atau integer.