**Pengklasteran *k* rata-rata** (bahasa Inggris: ***k-means clustering***) adalah algoritme untuk membagi *n* pengamatan menjadi *k* kelompok sedemikian hingga tiap pengamatan termasuk ke dalam kelompok dengan rata-rata terdekat (titik tengah kelompok). Hasilnya adalah pembagian pengamatan ke dalam sel-sel Voronoi. Pengklasteran *k* rata-rata meminimalkan ragam dalam klaster (kuadrat jarak Euklides, bukan jarak Euklides biasa).

Permasalahan ini sulit secara komputasi (NP sulit). Namun, algoritme heuristik yang efisien dapat mencapai optimum lokal dengan cepat.

Algoritme ini memiliki hubungan yang renggang dengan algoritme *k* tetangga terdekat, algoritme pemelajaran mesin yang cukup terkenal dan sering disalahartikan dengan *k* rata-rata karena kemiripan namanya. Penerapan pengklasifikasi 1 tetangga terdekat ke titik tengah kelompok yang didapatkan oleh *k* rata-rata dapat mengelompokkan data baru ke dalam kelompok yang sudah ada. Cara ini disebut sebagai pengklasifikasi sentroid terdekat atau algoritme Rocchio.

Penjelasan
----------

Diberikan himpunan pengamatan (*x*1, *x*2, ... *xn*) dengan tiap pengamatan berupa vektor riil berdimensi *d*. Pengklasteran *k* rata-rata bertujuan untuk membagi *n* pengamatan ke dalam *k* (≤ *n*) kelompok **S** = {*S*1, *S*2, ... *S*k} sedemikian hingga ragam dalam kelompok minimum. Secara matematis, tujuan algoritme ini adalah

{\displaystyle {\underset {\mathbf {S} }{\operatorname {arg\,min} }}\sum \_{i=1}^{k}\sum \_{\mathbf {x} \in S\_{i}}\left\|\mathbf {x} -{\boldsymbol {\mu }}\_{i}\right\|^{2}={\underset {\mathbf {S} }{\operatorname {arg\,min} }}\sum \_{i=1}^{k}|S\_{i}|\operatorname {Var} S\_{i}}
dengan ***μ**i* adalah titik tengah (rata-rata) dalam himpunan *Si*.

Sejarah
-------

Algoritme *K* rata-rata ditemukan oleh beberapa orang: Lloyd (1957, 1982), Forgey (1965), Friedman dan Rubin (1967), serta McQueen (1967). Ide pengklasteran pertama kali ditemukan oleh Lloyd pada tahun 1957. Namun, hal tersebut baru dipublikasikan pada tahun 1982. Pada tahun 1965, Forgey juga memublikasikan teknik yang sama sehingga terkadang dikenal sebagai Lloyd–Forgy pada beberapa sumber.

Algoritme
---------

Konvergensi *k* rata-rata
Algoritme pengklasteran *k* rata-rata adalah sebagai berikut.

1. Pilih *k* buah titik tengah secara acak.
2. Kelompokkan data sehingga terbentuk *k* buah kelompok dengan titik tengah tiap kelompok merupakan titik tengah yang telah dipilih sebelumnya.
3. Perbarui nilai titik tengah tiap kelompok.
4. Ulangi langkah 2 dan 3 sampai titik tengah semua kelompok tidak lagi berubah.

Proses pengklasteran data ke dalam suatu kelompok dapat dilakukan dengan cara menghitung jarak terdekat dari suatu data ke sebuah titik tengah. Perhitungan jarak Minkowski dapat digunakan untuk menghitung jarak antara 2 buah data.

Pembaruan titik tengah dapat dilakukan dengan rumus berikut:

{\displaystyle \mu \_{k}={\frac {1}{N\_{k}}}\sum \_{j=1}^{N\_{k}}x\_{j}}
dengan *µk* adalah titik tengah kelompok ke-*k*, *Nk* adalah banyak data dalam kelompok ke-*k*, dan *xj* adalah data ke-*j* dalam kelompok ke-*k*.

* Peragaan algoritme *k* rata-rata biasa (naif)
* 1. k "rata-rata" awal (dalam kasus ini, k = 3) ditaruh secara acak dalam domain data (ditunjukkan berwarna).1. *k* "rata-rata" awal (dalam kasus ini, *k* = 3) ditaruh secara acak dalam domain data (ditunjukkan berwarna).
* 2. k kelompok dibuat dengan memasukkan tiap pengamatan ke dalam kelompok dengan rata-rata terdekat. Pembagian ini menunjukkan diagram Voronoi dari rata-rata tersebut.2. *k* kelompok dibuat dengan memasukkan tiap pengamatan ke dalam kelompok dengan rata-rata terdekat. Pembagian ini menunjukkan diagram Voronoi dari rata-rata tersebut.
* 3. Titik tengah tiap kelompok menjadi rata-rata baru.3. Titik tengah tiap kelompok menjadi rata-rata baru.
* 4. Langkah 2 dan 3 diulangi sampai konvergensi tercapai.4. Langkah 2 dan 3 diulangi sampai konvergensi tercapai.

Kelebihan dan kekurangan
------------------------

Algoritme *k* rata-rata memiliki kelebihan berikut:

* Mudah untuk diimplementasikan dan dijalankan;
* Membutuhkan waktu relatif singkat;
* Mudah diadaptasi; serta
* Mmum digunakan.

Pengklasteran *k* rata-rata vs pengklasteran EM pada set data buatan ("tikus"). Kecenderungan *k* rata-rata untuk membuat kelompok yang sama besar menyebabkan hasil yang buruk untuk set data ini. Namun, EM menggunakan distribusi Gauss untuk menangani perbedaan jari-jari kelompok dalam set data.
Algoritme *k* rata-rata memiliki kekurangan berikut:

* Sebelum algoritme dijalankan, *k* buah titik diinisialisasi secara acak sehingga pengklasteran data yang dihasilkan dapat berbeda-beda. Jika nilai acak untuk inisialisasi kurang baik, hasil pengklasteran pun menjadi kurang optimal.
* Algoritme ini dapat terjebak dalam masalah yang disebut *curse of dimensionality* (kutukan dimensi). Hal ini dapat terjadi jika data pelatihan memiliki dimensi yang sangat tinggi (jumlah dimensi adalah jumlah atribut sederhananya).
* Jika hanya terdapat beberapa titik sampel data, cukup mudah untuk menghitung dan mencari titik terdekat dengan *k* titik yang diinisialisasi secara acak. Namun, jika terdapat banyak sekali titik data (misal satu miliar buah data), perhitungan dan pencarian titik terdekat akan membutuhkan waktu yang lama. Proses tersebut dapat dipercepat dengan struktur data yang lebih rumit seperti pohon *kD* atau *hashing*.

Batasan *k* rata-rata adalah model pengklasterannya. Model ini menanggap bahwa tiap kelompok berbentuk bola yang terpisah sehingga rata-ratanya bergerak menuju titik tengah bola (kelompok). Tiap kelompok dianggap memiliki ukuran yang mirip agar pengklasteran bisa benar (berhasil). Seperti algoritme pengklasteran lainnya, hasil *k* rata-rata menggunakan anggapan tertentu. Algoritme ini bekerja baik untuk set data tertentu, tetapi bisa bekerja buruk untuk set data lain.

Penerapan
---------

Sebagai algoritme pengklasteran, algoritme *k* rata-rata memiliki banyak penerapan. Menurut tujuannya, penerapan algoritme *k* rata-rata dibagi menjadi dua sebagai berikut.

### Pengklasteran untuk memahami

Pengklasteran untuk pemahaman bertujuan menghasilkan kelompok-kelompok yang terdiri dari objek-objek dengan ciri-ciri yang serupa, seperti halnya manusia mengelompokkan objek-objek.

* Penerapan dalam biologi

Algoritme *k* rata-rata dapat digunakan untuk mengelompokkan gen berdasarkan polanya.[*Verifikasi gagal*] Hal ini diperlukan untuk menemukan gen yang memiliki fungsi serupa.
* Penerapan dalam bisnis

Algoritme *k* rata-rata dapat digunakan untuk melakukan segmentasi pasar. Segmentasi pasar adalah pengelompokan pelanggan sesuai ciri-ciri mereka (misalnya gaya hidup dan kebutuhan). Algoritme ini juga dapat digunakan dalam sistem pemberi rekomendasi untuk mengelompokkan objek-objek yang saling terkait.
* Penerapan dalam temu balik informasi

Algoritme *k* rata-rata dapat digunakan untuk mengelompokkan dokumen sehingga memudahkan temu balik dokumen berdasarkan topiknya.
### Pengklasteran sebagai alat

Kuantisasi vektor warna yang ada dalam citra di bawah ke dalam sel Voronoi dengan *k* rata-rata
Citra berwarna dua saluran: merah dan hijau (untuk ilustrasi)
Pengklasteran bertujuan untuk mengelompokkan himpunan data yang besar untuk memudahkan analisis data atau pengolahan data lebih lanjut. Untuk tujuan ini, titik tengah kelompok memegang peran lebih berarti.

* Kompresi data multimedia

Algoritme *k* rata-rata dapat digunakan untuk kompresi data multimedia (citra, audio, dan video). Setiap objek dalam data (misalnya piksel dari citra) direpresentasikan dengan titik tengah kelompok yang memuat objek tersebut. Teknik kompresi ini disebut juga kuantisasi vektor.
* Rangkuman data

Algoritme *k* rata-rata dapat digunakan untuk mengelompokkan data sebelum menerapkan teknik analisis data lainnya seperti regresi, tetangga terdekat, atau PCA. Algoritme ini dapat digunakan terlebih dahulu untuk mengelompokkan data ke dalam kelompok-kelompok. Kemudian, teknik analisis data hanya perlu diterapkan pada titik tengah tiap kelompok sehingga lebih efisien dalam penggunaan waktu dan ruang.

Variasi
-------

Terdapat beberapa algoritme yang merupakan pengembangan/variasi dari algoritme *k* rata-rata.

* *k* rata-rata++

Algoritme untuk memilih nilai awal algoritme *k* rata-rata. Algoritme ini digunakan untuk mengurangi dampak buruk algoritme *k* rata-rata yang sangat tergantung dari nilai awalnya.
* *k* medoid

Algoritme pengklasteran yang menggunakan medoid (titik dengan ketidakmiripan yang merata untuk semua titik dalam kelompok) alih-alih rata-rata seperti yang dipakai *k* rata-rata.
* Pengirisan biner *k* rata-rata

Ide dasarnya adalah menggunakan *k* rata-rata dengan membagi dua suatu kelompok. Awalnya, setiap hasil pengamatan tergabung dalam satu kelompok. Pada tiap iterasi, pilih satu kelompok untuk dibagi dua menggunakan *k* rata-rata. Hal ini dilakukan hingga terbentuk *k* kelompok. Algoritme ini bekerja lebih cepat daripada *k* rata-rata karena mengurangi jumlah objek yang dibandingkan pada setiap iterasi.

Referensi
---------

1. 1 2 3  X. Wu dan V. Kumar, ed. (2009). *The Top Ten Algorithms in Data Mining*. Chapman and Hall. Pemeliharaan CS1: Menggunakan parameter penyunting (link)
2. ↑  
P. N. Tan, M. Steinbach, dan V. Kumar (2005). *Introduction to Data Mining* (edisi ke-1). Boston, MA: Addison-Wesley Longman Publishing Co. Inc. Pemeliharaan CS1: Menggunakan parameter penulis (link)
3. ↑  O. Maimon dan L. Rokach (2005). *Data Mining and Knowledge Discovery Handbook*. Secaucus, NJ: Springer-Verlag New York, Inc. Pemeliharaan CS1: Menggunakan parameter penulis (link)
4. ↑  S. Russell dan P. Norvig (2010). *Artificial Intelligence A Modern Approach* (edisi ke-3). Upper Saddle River, NJ: Pearson Education, Inc. Pemeliharaan CS1: Menggunakan parameter penulis (link)
5. ↑  "Division of Biostatistics Home". Diarsipkan dari versi asli tanggal 13 Juli 2015.

Bacaan lanjutan
---------------

* Dasarathy, Belur V. ed. (1991). *Nearest Neighbor (NN) Norms: NN Pattern Classification Techniques*. ISBN 978-0-8186-8930-7.
* Shakhnarovich, Gregory; Darrell, Trevor; Indyk, Piotr, ed. (2005). *Nearest-Neighbor Methods in Learning and Vision*. MIT Press. ISBN 978-0-262-19547-8.