Mengapa algoritme k-means hanya menggunakan metrik jarak Euclidean?


62

Apakah ada tujuan khusus dalam hal efisiensi atau fungsionalitas mengapa algoritma k-means tidak menggunakan misalnya cosine (dis) kesamaan sebagai metrik jarak, tetapi hanya dapat menggunakan norma Euclidean? Secara umum, akankah metode K-means patuh dan benar ketika jarak selain Euclidean dipertimbangkan atau digunakan?

[Tambahan oleh @ttnphns. Pertanyaannya adalah dua kali lipat. "(Non) Jarak Euclidean" mungkin menyangkut jarak antara dua titik data atau jarak antara titik data dan pusat cluster. Kedua cara telah dicoba untuk mengatasi dalam jawaban sejauh ini.]


Pertanyaan ini telah ditanyakan sekitar 10 kali pada stackoverflow dan situs ini. Silakan gunakan fungsi pencarian.
Anony-Mousse

3
@ Anony-Mousse: Sementara saya sepenuhnya setuju dengan Anda dan mengibarkan banyak bendera baru-baru ini di SO, saya menemukan kurangnya penutupan duplikat pada sebagian besar pertanyaan ini mengganggu.
Nikana Reklawyks

4
Ini adalah halaman yang didahulukan saat mencari informasi tentang topik ini.
haripkannan

Jawaban:


62

Prosedur K-Means - yang merupakan metode kuantisasi vektor yang sering digunakan sebagai metode pengelompokan - tidak secara eksplisit menggunakan jarak berpasangan b / w titik data sama sekali (berbeda dengan hierarki dan beberapa pengelompokan lain yang memungkinkan pengukuran kedekatan yang berubah-ubah). Ini berarti berulang kali menetapkan titik ke centroid terdekat sehingga menggunakan jarak Euclidean dari titik data ke centroid . Namun, K-Means secara implisit didasarkan pada jarak Euclidean berpasangan b / w titik data, karena jumlah deviasi kuadrat dari centroid sama dengan jumlah jarak Euclidean kuadrat berpasangan dibagi dengan jumlah titik. Istilah "centroid" sendiri berasal dari geometri Euclidean. Ini adalah multivariat rata-rata di ruang euclidean. Ruang Euclidean adalah tentang jarak euclidean. Jarak non-Euclidean umumnya tidak akan menjangkau ruang Euclidean. Itu sebabnya K-Means hanya untuk jarak Euclidean.

Tetapi jarak Euclidean dengan dua titik data dapat direpresentasikan dalam sejumlah cara alternatif . Misalnya, itu terkait erat dengan produk kosinus atau skalar b / w poin. Jika Anda memiliki kosinus, atau kovarians, atau korelasi, Anda selalu dapat (1) mengubahnya menjadi (kuadrat) jarak Euclidean, dan kemudian (2) membuat data untuk matriks jarak Euclidean itu (melalui Koordinator Utama atau bentuk metrik lainnya) Penskalaan Multidimensi) ke (3) memasukkan data tersebut ke pengelompokan K-Means. Oleh karena itu, dimungkinkan untuk membuat K-Means "bekerja dengan" cosinus berpasangan atau semacamnya; sebenarnya, implementasi pengelompokan K-Means seperti itu ada. Lihat juga tentang implementasi "K-means for distance matrix".

Hal ini dimungkinkan untuk program K-means dengan cara yang langsung menghitung pada matriks persegi jarak Euclidean berpasangan, tentu saja. Tapi itu akan bekerja lambat, dan cara yang lebih efisien adalah membuat data untuk matriks jarak itu (mengubah jarak menjadi produk skalar dan seterusnya - lintasan yang diuraikan dalam paragraf sebelumnya) - dan kemudian menerapkan prosedur standar K-means ke dataset itu.

Harap dicatat saya sedang mendiskusikan topik apakah perbedaan euclidean atau noneuclidean antara titik data kompatibel dengan K-means. Hal ini terkait dengan tetapi tidak dengan pertanyaan yang sama seperti apakah penyimpangan noneuclidean dari centroid (dalam arti luas, pusat atau quasicentroid) dapat dimasukkan dalam K-means atau modifikasi "K-means".

Lihat pertanyaan terkait K-means: Mengapa meminimalkan WCSS adalah memaksimalkan Jarak antar cluster? .


Bisakah Anda mengutip beberapa contoh-dokumen dari pendekatan yang Anda sebutkan?
penasaran

4
@Douglas, tolong. Saya mengatakan bahwa k-means tidak menggunakan jarak berpasangan. Dinyatakan dengan jelas. Ini menggunakan jarak ke centroid. Tapi itu secara otomatis berarti secara implisit terikat dengan tugas untuk mengoptimalkan jarak berpasangan dalam kelompok.
ttnphns

1
@ttnphns: Dalam jumlah karakter yang Anda tulis But a Euclidean distance b/w two data points can be represented in a number of alternative ways. For example, it is closely tied with cosine or scalar product b/w the points. If you have cosine, or covariance, or correlation, you can always (1) transform it to (squared) Euclidean distance, Anda dapat dengan mudah menulis: distance(x,y) = 1 - cosine_sim(x,y)atau sesuatu yang serupa bernas dan informatif.
stackoverflowuser2010

1
Ini terlihat seperti kritik yang valid dan konstruktif: lebih baik memasukkan informasi secara langsung ke dalam posting Anda daripada mengandalkan tautan; dan biasanya lebih baik eksplisit daripada tidak jelas. (cc @stackoverflowuser)
whuber

3
Apa yang kamu lawan? Lebih baik dalam hal ini mengandalkan tautan, atau lebih baik kabur, atau keduanya? Dan mengapa?
whuber

46

Lihat juga jawaban @ttnphns untuk interpretasi k-means yang benar-benar melibatkan jarak Euclidean searah.

Cara k-means dibangun tidak didasarkan pada jarak .

K-means meminimalkan varians dalam-cluster. Sekarang jika Anda melihat definisi varians, itu identik dengan jumlah jarak Euclidean kuadrat dari pusat. (Jawaban @ttnphns mengacu pada jarak Euclidean berpasangan!)

Ide dasar dari k-means adalah untuk meminimalkan kesalahan kuadrat . Tidak ada "jarak" yang terlibat di sini.

Mengapa tidak tepat untuk menggunakan jarak arbiter: karena k-means dapat berhenti menyatu dengan fungsi jarak lainnya . Bukti umum konvergensi adalah seperti ini: langkah penugasan dan langkah pembaruan rata-rata mengoptimalkan kriteria yang sama . Ada sejumlah tugas yang terbatas mungkin. Oleh karena itu, ia harus konvergen setelah sejumlah perbaikan terbatas. Untuk menggunakan bukti ini untuk fungsi jarak lainnya, Anda harus menunjukkan bahwa rerata (catatan: k- berarti ) meminimalkan jarak Anda juga.

Jika Anda mencari varian jarak-k Manhattan, ada k-median. Karena median adalah penaksir L1 terbaik yang dikenal.

Jika Anda ingin fungsi jarak sewenang-wenang, lihat k-medoid (alias: PAM, partisi di sekitar medoid). Medoid meminimalkan jarak sewenang-wenang (karena itu didefinisikan sebagai minimum), dan hanya ada sejumlah terbatas kemungkinan medoid juga. Ini jauh lebih mahal daripada rata-rata.


Tetapi pada langkah pertama k-berarti setiap titik dimasukkan ke dalam cluster dengan jarak euclidean terdekat dengan centroid dari cluster ... Jadi ada metrik jarak
penasaran

@AnonyMousse @ttnphns answer refers to pairwise Euclidean distances!Dalam jawaban saya, paragraf 1, saya dengan jelas merujuk kedua "interpretasi SS" (langsung) dan "berpasangan d ^ 2" (implisit).
ttnphns

3
Saya setuju dengan jawaban Anda. Perhatikan bahwa akun operasional Anda k-means may stop converging with other distance functionshomolog dengan teoretis saya Non-euclidean distances will generally not span euclidean space.
ttnphns

penjelasan yang sangat bagus. Saya tidak pernah memberikan euclidean jarak berpikir dua kali dan tidak menyadari bahwa itu sebenarnya meminimalkan jumlah cluster kuadrat withing.
Verena Haunschmid

Saya masih tidak bisa melihat mengapa mean meminimalkan jarak dalam hal jarak euclidean dan dalam hal cosine tidak menjadi bagian dari bukti
penasaran

9

Saya mungkin sedikit bertele-tele di sini, tetapi K-means adalah nama yang diberikan untuk algoritma tertentu yang memberikan label ke titik data sedemikian rupa sehingga dalam varian cluster diminimalkan, dan itu bukan nama untuk "teknik umum".

Algoritma K-means telah diusulkan secara independen dari beberapa bidang, dengan interpretasi yang kuat yang berlaku untuk bidang tersebut. Ternyata, yah, itu juga jarak euclidean ke pusat. Untuk sejarah singkat K-means, silakan baca Data Clustering: 50-tahun di luar K-means

Ada sejumlah besar algoritma pengelompokan lain yang menggunakan metrik selain Euclidean. Kasus paling umum yang saya tahu adalah menggunakan Bregman Divergences untuk pengelompokan, di mana Euclidean adalah kasus khusus.


"metrik selain Euclidean" Saya mungkin sedikit lebih bertele-tele, tetapi perbedaan itu bukan metrik, secara umum :)
mic

benar :); saya mungkin harus mengedit jawabannya.
user1669710

8

Karena ini tampaknya sekarang merupakan pertanyaan kanonik, dan itu belum disebutkan di sini:

Satu ekstensi alami dari k-means untuk menggunakan metrik jarak selain dari jarak Euclidean standar pada adalah dengan menggunakan trik kernel . Ini mengacu pada ide memetakan input secara implisit ke ruang Hilbert dimensi tinggi, atau tak terbatas, di mana jarak sesuai dengan fungsi jarak yang ingin kita gunakan, dan menjalankan algoritme di sana. Yaitu, membiarkan menjadi beberapa fitur peta sehingga metrik diinginkan dapat ditulis , kita menjalankan k-means pada poin . Dalam banyak kasus, kita tidak dapat menghitung peta secara eksplisit, tetapi kita bisaRdφ:RpHdd(x,y)=φ(x)φ(y)H{φ(xi)}φhitung kernel . Tidak semua metrik jarak cocok dengan model ini, tetapi banyak yang melakukannya, dan ada fungsi-fungsi seperti yang didefinisikan pada string, grafik, gambar, distribusi probabilitas, dan banyak lagi ....k(x,y)=φ(x),φ(y)H

Dalam situasi ini, dalam algoritma k-means standar (Lloyd), kita dapat dengan mudah menetapkan poin ke klusternya, tetapi kami mewakili pusat kluster secara implisit (sebagai kombinasi linear dari titik input dalam ruang Hilbert). Menemukan representasi terbaik di ruang input akan membutuhkan menemukan rata-rata Fréchet , yang cukup mahal. Jadi mudah untuk mendapatkan tugas cluster dengan kernel, lebih sulit untuk mendapatkan artinya.

Makalah berikut membahas algoritma ini, dan menghubungkannya dengan pengelompokan spektral:

I. Dhillon, Y. Guan, dan B. Kulis. K-means Kernel, Clustering Spectral, dan Pemotongan Normal. KDD 2005.


Saya tidak mengerti bagaimana trik kernel dapat digunakan dengan algoritma Lloyd. Tampak bagi saya bahwa untuk menghitung centroid (bahkan secara implisit dalam ruang Hilbert), kita akan memerlukan peta eksplisit φ (x_i)? Untuk menetapkan poin ke cluster, kita hanya perlu kernel, tetapi untuk menghitung ulang centroid, kita tidak bisa pergi hanya dengan kernel, karena centroid adalah rata-rata dari {φ (x_i)} yang ditugaskan ke cluster itu. Apakah saya melewatkan sesuatu?
user2428107

Anda benar bahwa kami tidak dapat secara eksplisit menghitung centroid. Tetapi kita dapat mewakili mereka hanya sebagai , dan menghitung jarak ke titik sebagai . 1nijCiφ(xj)xφ(x)1nijCiφ(xj)2=k(x,x)+1ni2j,jk(xj,xj)2nijk(x,xj)
Dougal

5

Saya sudah membaca banyak komentar menarik di sini, tetapi izinkan saya menambahkan bahwa implementasi "k-means" Matlab tentang mendukung k-means mendukung 4 jarak non-Euclidean [antara titik data dan pusat cluster]. Satu-satunya komentar dari dokumentasi yang dapat saya lihat adalah:

Ukuran jarak, dalam ruang p-dimensi, digunakan untuk minimisasi, ditentukan sebagai pasangan yang dipisahkan koma yang terdiri dari 'Jarak' dan string.

kmeans menghitung cluster centroid secara berbeda untuk ukuran jarak yang berbeda dan didukung. Tabel ini merangkum ukuran jarak yang tersedia. Dalam rumus, x adalah pengamatan (yaitu, deretan X) dan c adalah centroid (vektor baris).

Kemudian daftar fungsi cdan xikuti. Jadi, mengingat itu padalah dimensi dari data input, tampaknya tidak ada penyisipan Euclidean yang dilakukan sebelumnya.

BTW di masa lalu saya telah menggunakan k-means Matlab dengan jarak korelasi dan itu (tidak mengejutkan) melakukan apa yang seharusnya dilakukan.


2
Sebagai catatan, jarak non-Euclidean yang didukung adalah cosine(yang hanya jarak Euclidean pada titik input yang dinormalisasi), correlation(Euclidean pada input standar), cityblock( , dalam hal ini median digunakan daripada rata-rata), dan (yang merupakan hanya untuk input biner). L1hammingcityblock
Dougal

@ Dougal, Bagaimana median ditampung ke dalam algoritma? Bukankah itu berubah k- berarti algo yang pada dasarnya berbeda?
ttnphns

1
Perhatikan juga bahwa untuk data biner "jarak hamming" = cityblock = sq. Euclidean distance.
ttnphns

1
@ttnphns Ya, sudah pasti bukan lagi k-means, tetapi ia memiliki struktur yang persis sama kecuali bukannya menghitung centroid sebagai cara Anda menghitung median. Dan ya pada input biner hamming , tetapi Matlab menggunakan median untuk itu alih-alih mean. =L22=L1
Dougal

1
@ Dougal, Perhatikan bahwa prosedur matlab ditautkan dengan mengatakan berbagai jarak antara titik data dan pusat cluster; yang tidak sama dengan jenis jarak berpasangan.
ttnphns

2

Dari sini :

masukkan deskripsi gambar di sini

Mari kita perhatikan dua dokumen A dan B yang diwakili oleh vektor-vektor pada gambar di atas. Kosinus memperlakukan kedua vektor sebagai vektor satuan dengan menormalkannya, memberi Anda ukuran sudut antara dua vektor. Itu memang memberikan ukuran kesamaan yang akurat tetapi tanpa memperhatikan besarnya. Tetapi besarnya adalah faktor penting sambil mempertimbangkan kesamaan.


Ini adalah jawaban umum. Itu tidak menjelaskan mengapa dalam k-berarti tidak ada kesamaan cosinus. Misalnya dalam pengelompokan hierarkis sedang digunakan secara luas
penasaran

3
@DLDahly: Terkadang magnitudo penting, terkadang noise. Itu tergantung pada bidang penelitian dan merupakan masalah standardisasi data.
ttnphns
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.