K-means adalah metode yang banyak digunakan dalam analisis cluster. Dalam pemahaman saya, metode ini TIDAK memerlukan asumsi APAPUN, yaitu, beri saya dataset dan jumlah cluster yang ditentukan sebelumnya, k, dan saya hanya menerapkan algoritma ini yang meminimalkan jumlah kesalahan kuadrat (SSE), dalam cluster cluster kuadrat kesalahan.
Jadi k-means pada dasarnya adalah masalah optimasi.
Saya membaca beberapa materi tentang kelemahan k-means. Sebagian besar dari mereka mengatakan bahwa:
- k-means mengasumsikan varians dari distribusi setiap atribut (variabel) adalah bola;
- semua variabel memiliki varians yang sama;
- probabilitas sebelumnya untuk semua cluster k adalah sama, yaitu, setiap cluster memiliki jumlah pengamatan yang kurang lebih sama;
Jika salah satu dari 3 asumsi ini dilanggar, maka k-means akan gagal.
Saya tidak bisa memahami logika di balik pernyataan ini. Saya pikir metode k-means pada dasarnya tidak membuat asumsi, itu hanya meminimalkan SSE, jadi saya tidak bisa melihat hubungan antara meminimalkan SSE dan 3 "asumsi" itu.
sumber
Jawaban:
Sementara saya sangat suka jawaban David Robinson di sini, ada beberapa kritik tambahan tentang k-means.
Mengelompokkan data yang tidak berkerumun
Jalankan k-means pada data yang seragam, dan Anda masih akan mendapatkan kelompok! Itu tidak memberi tahu Anda ketika data tidak mengelompok, dan dapat mengambil jalan buntu dengan cara ini.
Peka terhadap skala
Menyimpan ulang data Anda akan sepenuhnya mengubah hasil. Meskipun ini sendiri tidak buruk, tidak menyadari bahwa Anda harus mengeluarkan perhatian ekstra untuk mengubah data Anda adalah buruk. Faktor penskalaan adalah parameter tersembunyi tambahan dalam k-berarti "default" ke 1 dan dengan demikian mudah diabaikan, namun memiliki dampak besar (tetapi tentu saja ini berlaku untuk banyak algoritma lain juga).d
Ini mungkin yang Anda sebut sebagai "semua variabel memiliki varian yang sama". Kecuali itu idealnya, Anda juga akan mempertimbangkan penskalaan non-linear saat yang tepat.
Perlu diketahui juga bahwa heuristik untuk skala setiap sumbu memiliki varian unit . Ini tidak memastikan bahwa k-means berfungsi. Penskalaan tergantung pada arti dari kumpulan data Anda. Dan jika Anda memiliki lebih dari satu cluster, Anda ingin setiap cluster (secara independen) memiliki varian yang sama di setiap variabel juga.
Berikut adalah contoh tandingan klasik dari kumpulan data yang k-means tidak dapat mengelompok. Kedua sumbu iid di setiap cluster, sehingga cukup untuk melakukan ini dalam 1 dimensi. Tetapi cluster memiliki varians yang bervariasi, dan k-means dengan demikian memisah-misahkan mereka.
Saya tidak berpikir contoh tandingan ini untuk k-means dicakup oleh poin Anda:
Namun, k-means masih gagal parah (dan semakin buruk jika saya meningkatkan varians di luar 0,5 untuk cluster yang lebih besar) Tapi: itu bukan algoritma yang gagal. Asumsinya, yang tidak berlaku . K-means bekerja dengan sempurna, hanya mengoptimalkan kriteria yang salah.
Bahkan pada set data yang sempurna, dapat terjebak dalam minimum lokal
Di bawah ini adalah yang terbaik dari 10 run k-means pada set data A3 klasik. Ini adalah set data sintetis, dirancang untuk k-means . 50 cluster, masing-masing bentuk Gaussian, cukup terpisah. Namun, hanya dengan k-means ++ dan 100 iterations saya mendapatkan hasil yang diharapkan ... (di bawah ini adalah 10 iterations dari k-means reguler, untuk ilustrasi).
Anda akan dengan cepat menemukan banyak cluster di set data ini, di mana k-means gagal menemukan struktur yang benar. Misalnya di kanan bawah, gugus dipecah menjadi tiga bagian. Tetapi tidak ada cara, k-means akan memindahkan salah satu centroid ini ke tempat yang sama sekali berbeda dari kumpulan data - ini terperangkap dalam minimum lokal (dan ini sudah merupakan yang terbaik dari 10 run!)
Dan ada banyak minimum lokal seperti itu dalam kumpulan data ini. Sangat sering ketika Anda mendapatkan dua sampel dari cluster yang sama, itu akan macet di minimum di mana cluster ini tetap terpecah, dan dua cluster lainnya bergabung sebagai gantinya. Tidak selalu, tetapi sangat sering. Jadi Anda perlu banyak iterasi untuk memilih yang beruntung. Dengan 100 iterasi k-means, saya masih menghitung 6 error, dan dengan iterasi 1000 saya turun ke 4 error. K-means ++ dengan cara bobot sampel acak, bekerja jauh lebih baik pada kumpulan data ini.
Berarti kontinu
Meskipun Anda dapat menjalankan k-means pada data biner (atau data kategorik sekali-panas yang disandikan), hasilnya tidak akan menjadi biner lagi. Jadi Anda memang mendapatkan hasilnya, tetapi Anda mungkin tidak dapat menafsirkannya pada akhirnya, karena memiliki tipe data yang berbeda dari data asli Anda.
Asumsi tersembunyi: SSE layak diminimalkan
Ini pada dasarnya sudah hadir dalam jawaban di atas, ditunjukkan dengan baik dengan regresi linier. Ada beberapa kasus penggunaan di mana k-means masuk akal. Ketika Lloyd harus memecahkan kode sinyal PCM, ia tahu jumlah nada yang berbeda, dan kesalahan kuadrat terkecil meminimalkan kemungkinan kesalahan penguraian sandi. Dan dalam kuantisasi warna gambar, Anda meminimalkan kesalahan warna saat mengurangi palet juga. Tetapi pada data Anda, apakah jumlah penyimpangan kuadrat kriteria yang berarti untuk meminimalkan?
Dalam counterexample di atas, varians tidak layak diminimalkan, karena itu tergantung pada cluster. Sebagai gantinya, Model Campuran Gaussian harus sesuai dengan data, seperti pada gambar di bawah ini:
(Tapi ini bukan metode pamungkas. Mudah saja untuk membangun data yang tidak memenuhi asumsi "campuran k distribusi Gaussian", misalnya, dengan menambahkan banyak kebisingan latar belakang)
Terlalu mudah digunakan dengan buruk
Secara keseluruhan, itu terlalu mudah untuk melemparkan k-means pada data Anda, dan meskipun demikian mendapatkan hasilnya (itu cukup acak, tetapi Anda tidak akan menyadarinya). Saya pikir akan lebih baik untuk memiliki metode yang dapat gagal jika Anda belum memahami data Anda ...
K-artinya sebagai kuantisasi
Jika Anda menginginkan model teoritis tentang apa arti k-berarti, anggap itu pendekatan kuantisasi , bukan algoritma pengelompokan.
Tujuan dari k-means - meminimalkan kesalahan kuadrat - adalah pilihan yang masuk akal jika Anda mengganti setiap objek dengan centroid terdekat. (Itu jauh lebih masuk akal jika Anda memeriksa IMHO kelompok data asli.)
Kuantisasi ini mungkin sangat mirip dengan contoh regresi linier. Regresi linier menemukan model linier terbaik . Dan k-means menemukan (kadang-kadang) pengurangan terbaik untuk nilai k dari kumpulan data multidimensi. Di mana "terbaik" adalah kesalahan kuadrat terkecil.
IMHO, k-means adalah algoritma kuantisasi yang baik (lihat gambar pertama di posting ini - jika Anda ingin memperkirakan data yang ditetapkan menjadi dua poin, ini adalah pilihan yang masuk akal!). Jika Anda ingin melakukan analisis kluster seperti dalam menemukan struktur maka k-means adalah IMHO bukan pilihan terbaik. Itu cenderung mengelompok ketika tidak ada cluster, dan tidak dapat mengenali berbagai struktur yang Anda lihat banyak dalam data.
Cetak halus: semua gambar dihasilkan dengan ELKI . Data dihasilkan menggunakan
.xml
format pembuatan data, tetapi sangat mendasar sehingga tidak layak untuk dibagikan.sumber
Sungguh pertanyaan yang luar biasa - ini adalah kesempatan untuk menunjukkan bagaimana seseorang akan memeriksa kelemahan dan asumsi metode statistik apa pun. Yaitu: make up beberapa data dan coba algoritma di atasnya!
Kami akan mempertimbangkan dua asumsi Anda, dan kita akan melihat apa yang terjadi pada algoritma k-means ketika asumsi tersebut rusak. Kami akan menempel pada data 2 dimensi karena mudah divisualisasikan. (Berkat kutukan dimensi , menambahkan dimensi tambahan kemungkinan akan membuat masalah ini lebih parah, bukan lebih sedikit). Kami akan bekerja dengan bahasa pemrograman statistik R: Anda dapat menemukan kode lengkap di sini (dan posting di formulir blog di sini ).
Pengalihan: Kuartet Anscombe
Pertama, analogi. Bayangkan seseorang berdebat sebagai berikut:
Ya, ya, regresi linier bekerja dengan meminimalkan jumlah residu kuadrat. Tapi itu dengan sendirinya bukan tujuan dari regresi: apa yang kami coba lakukan adalah menarik garis yang berfungsi sebagai prediktor y yang andal dan tidak bias dari x berdasarkan x . The Gauss-Markov teorema memberitahu kita bahwa meminimalkan SSE menyelesaikan yang goal- tapi itu teorema bertumpu pada beberapa asumsi yang sangat spesifik. Jika asumsi-asumsi yang rusak, Anda masih dapat meminimalkan SSE, tapi mungkin tidak melakukanapa pun. Bayangkan mengatakan "Anda mengendarai mobil dengan mendorong pedal: mengemudi pada dasarnya adalah 'proses mendorong pedal.' Pedal dapat didorong tidak peduli berapa banyak gas di dalam tangki. Oleh karena itu, bahkan jika tangki itu kosong, Anda masih dapat mendorong pedal dan mengendarai mobil. "
Tapi bicara itu murah. Mari kita lihat data yang dingin dan sulit. Atau sebenarnya, data yang dibuat-buat.
Orang bisa mengatakan "Regresi linear masih bekerja dalam kasus-kasus itu, karena meminimalkan jumlah kuadrat dari residu." Tapi kemenangan yang sangat kecil ! Regresi linier akan selalu menarik garis, tetapi jika itu garis yang tidak berarti, siapa yang peduli?
Jadi sekarang kita melihat bahwa hanya karena optimasi dapat dilakukan tidak berarti kita mencapai tujuan kita. Dan kita melihat bahwa membuat data, dan memvisualisasikannya, adalah cara yang baik untuk memeriksa asumsi model. Tunggu intuisi itu, kita akan membutuhkannya sebentar lagi.
Asumsi Rusak: Data Non-Bulat
Anda berpendapat bahwa algoritma k-means akan berfungsi dengan baik pada cluster non-bola. Cluster non-bola seperti ... ini?
Mungkin ini bukan yang Anda harapkan - tetapi ini adalah cara yang sangat masuk akal untuk membangun cluster. Melihat gambar ini, kita manusia segera mengenali dua kelompok titik-alami - tidak salah lagi. Jadi mari kita lihat bagaimana k-means: penugasan diperlihatkan dalam warna, pusat yang diperhitungkan ditampilkan sebagai X.
Ya itu tidak benar. K-means berusaha memasukkan pasak persegi ke dalam lubang bundar - mencoba menemukan pusat yang bagus dengan bola yang rapi di sekitarnya - dan gagal. Ya, itu masih meminimalkan jumlah dalam-kuadrat-kuadrat- tetapi seperti di Kuartet Anscombe di atas, itu adalah kemenangan Pyrrhic!
Anda mungkin berkata, "Itu bukan contoh yang adil ... tidak ada metode pengelompokan yang dapat dengan benar menemukan kelompok yang aneh." Tidak benar! Coba pengelompokan hierarki tautan tunggal :
Berhasil! Ini karena pengelompokan hierarki hubungan tunggal membuat asumsi yang tepat untuk dataset ini. (Ada seluruh lain kelas situasi di mana gagal).
Anda mungkin berkata, "Itu adalah kasus patologis yang ekstrem." Tapi ternyata tidak! Sebagai contoh, Anda dapat membuat grup luar menjadi setengah lingkaran, bukan lingkaran, dan Anda akan melihat k-means masih sangat buruk (dan pengelompokan hierarkis masih berjalan dengan baik). Saya dapat menemukan situasi bermasalah lainnya dengan mudah, dan itu hanya dalam dua dimensi. Saat Anda mengelompokkan data 16 dimensi, ada semua jenis patologi yang bisa muncul.
Terakhir, saya harus perhatikan bahwa k-means masih dapat diselamatkan! Jika Anda mulai dengan mengubah data Anda menjadi koordinat kutub , pengelompokan sekarang berfungsi:
Itulah mengapa memahami asumsi yang mendasari suatu metode sangat penting: itu tidak hanya memberi tahu Anda ketika suatu metode memiliki kelemahan, ia memberi tahu Anda cara memperbaikinya.
Asumsi Rusak: Cluster Berukuran Tidak Rata
Bagaimana jika cluster memiliki jumlah poin yang tidak rata - apakah itu juga merusak k-means clustering? Nah, pertimbangkan kumpulan cluster ini, dengan ukuran 20, 100, 500. Saya telah menghasilkan masing-masing dari Gaussian multivarian:
Sepertinya k-means mungkin bisa menemukan kluster itu, kan? Segala sesuatu tampaknya dihasilkan dalam kelompok yang rapi dan rapi. Jadi mari kita coba k-means:
Aduh. Apa yang terjadi di sini sedikit lebih halus. Dalam upayanya untuk meminimalkan jumlah dalam-cluster kuadrat, algoritma k-means memberikan lebih banyak "bobot" untuk cluster yang lebih besar. Dalam praktiknya, itu berarti senang membiarkan gugus kecil itu berakhir jauh dari pusat mana pun, sementara itu ia menggunakan pusat-pusat itu untuk "memecah" kelompok yang jauh lebih besar.
Jika Anda sedikit bermain dengan contoh-contoh ini ( kode R di sini! ), Anda akan melihat bahwa Anda dapat membuat lebih banyak skenario di mana k-means salah memahaminya.
Kesimpulan: Tidak Ada Makan Siang Gratis
Ada konstruksi menarik dalam cerita rakyat matematika, yang diformalkan oleh Wolpert dan Macready , yang disebut "Teorema Makan Siang Gratis." Ini mungkin teorema favorit saya dalam filosofi pembelajaran mesin, dan saya menikmati setiap kesempatan untuk mengemukakannya (apakah saya menyebutkan saya suka pertanyaan ini?) Gagasan dasarnya dinyatakan (tidak keras) seperti ini: "Ketika dirata-rata di semua situasi yang mungkin, setiap algoritma berkinerja sama baiknya. "
Kedengarannya berlawanan dengan intuisi? Mempertimbangkan bahwa untuk setiap kasus di mana suatu algoritma bekerja, saya dapat membangun situasi di mana ia sangat gagal. Regresi linier mengasumsikan data Anda berada di sepanjang garis - tetapi bagaimana jika itu mengikuti gelombang sinusoidal? Uji-t mengasumsikan setiap sampel berasal dari distribusi normal: bagaimana jika Anda memasukkan pencilan? Algoritma gradient ascent dapat terperangkap dalam maxima lokal, dan setiap klasifikasi yang diawasi dapat diakali menjadi overfitting.
Apa artinya ini? Itu berarti asumsi di mana kekuatan Anda berasal! Ketika Netflix merekomendasikan film kepada Anda, ia mengasumsikan bahwa jika Anda menyukai satu film, Anda akan menyukai yang serupa (dan sebaliknya). Bayangkan sebuah dunia di mana itu tidak benar, dan selera Anda tersebar acak secara acak di berbagai genre, aktor dan sutradara. Algoritme rekomendasi mereka akan sangat gagal. Apakah masuk akal untuk mengatakan "Yah, itu masih meminimalkan beberapa kesalahan kuadrat yang diharapkan, sehingga algoritma ini masih berfungsi"? Anda tidak dapat membuat algoritme rekomendasi tanpa membuat beberapa asumsi tentang selera pengguna - seperti halnya Anda tidak dapat membuat algoritma pengelompokan tanpa membuat beberapa asumsi tentang sifat dari cluster tersebut.
Jadi jangan hanya menerima kekurangan ini. Kenali mereka, sehingga mereka dapat menginformasikan algoritma pilihan Anda. Pahami mereka, sehingga Anda dapat mengubah algoritma Anda dan mengubah data Anda untuk menyelesaikannya. Dan cintai mereka, karena jika model Anda tidak pernah salah, itu berarti itu tidak akan pernah benar.
sumber
Saya hanya ingin menambahkan jawaban @ DavidRobinson bahwa pengelompokan ke varians kluster total minimal sebenarnya merupakan masalah optimisasi kombinatorial , di mana k-Means hanya satu teknik - dan mengingat sifat "satu tembakan" yang terakhir, "keturunan paling curam" lokal, yang sangat buruk juga. Juga, mencoba untuk secara substansial meningkatkan "tulang-telanjang" k-Berarti dengan entah bagaimana (tapi cepat!) Mencari tahu di mana benih cluster seharusnya, dikutuk sejak awal: karena benih berdampak (secara drastis!) Cluster terakhir, jumlahnya untuk "mengetahui" apa yang optimal adalah ... sebelum benar-benar menghitungnya.
Namun, karena sebagian besar masalah pengoptimalan, namun mungkin dapat menerima beberapa teknik pengoptimalan yang serius . Salah satunya sangat cocok dengan struktur masalah (seperti yang NFL butuhkan!), Dan itu pasti terlihat dalam hasilnya. Saya tidak ingin membuat iklan di sini (itu akan - dan memang demikian - melawan etiket), jadi jika Anda tertarik, baca saja di sini dan buat penilaian Anda sendiri.
Yang sedang berkata, saya setuju dengan @ttnphns bahwa k-Means tentu saja tidak mengidentifikasi Gaussian Mixture - fungsi biaya dari kedua masalah tersebut sangat berbeda. Ternyata menemukan yang paling pas (dalam hal probabilitas model yang diberikan data) Gaussian Mixture juga merupakan masalah optimisasi kombinatorial - dan yang juga ada teknik optimisasi yang serius . Sekali lagi, tidak ada iklan: Anda dapat mencapai kesimpulan Anda sendiri di sini - Saya hanya akan mengatakan bahwa algoritma yang dibahas di sana memang dapat mengidentifikasi cluster dengan benar seperti gambar terakhir di pos @ DavidRobinson . Bahkan dengan benar (yaitu, dalam cara yang didefinisikan secara matematis dengan baik) memecahkan masalah abadi pencilan, yaitu, titik data yang bukan milik salah satu dari cluster karena mereka hanya benar-benar acak (terkenal, mereka benar - benar menggagalkan k-Means misalnya). Ini dilakukan dengan memiliki satu tambahan, distribusi seragam bersaing dengan Gaussians ... dan hasil yang luar biasa adalah bahwa pada data yang terdistribusi secara seragam, memang melaporkan tidak ada apa - apa di sana (saya belum pernah melihat itu di tempat lain).
Sekarang jelas, menurut NFL, dan seperti yang Anda tunjukkan dengan tepat , bahkan Campuran Gaussian yang optimal secara global dengan identifikasi outlier bergantung pada asumsi sebelumnya - yaitu bahwa data memang didistribusikan secara normal. Untungnya meskipun, berkat UU Nomor besar, banyak fenomena alam yang sesuai dengan asumsi tersebut.
DISCLAIMER: dengan permintaan maaf terdalam saya, saya menulis kedua makalah di atas, dan algoritma yang mereka diskusikan.
PS Saya bertemu Macready di sebuah konferensi sekali - seorang pria yang sangat cerdas dan baik!
sumber
Secara logis, kelemahan dari K-means adalah:
Tapi K-means lebih baik dari yang kita pikirkan. Saya menjadi sangat antusias tentang hal itu setelah mengujinya terhadap metode pengelompokan lain (spektral, kepadatan ...) dan LDA dalam klasifikasi teks kehidupan nyata dari satu juta teks: K-means memiliki akurasi yang jauh lebih baik daripada LDA misalnya (88% vs 59%). Beberapa metode pengelompokan lain baik, tetapi K-means dekat dengan yang teratas ... dan lebih terjangkau dalam hal kompleksitas.
Saya tidak pernah membaca tentang metode pengelompokan yang secara universal lebih baik pada berbagai masalah. Tidak mengatakan K-means secara universal lebih baik, hanya saja tidak ada superhero pengelompokan universal sejauh yang saya tahu. Banyak artikel, banyak metode, bukan revolusi sejati (dalam pengalaman pribadi saya yang terbatas menguji beberapa di antaranya).
Alasan utama mengapa kelemahan logis dari K-means sering hanya jelas adalah bahwa titik pengelompokan dalam bidang 2D adalah sesuatu yang jarang Anda lakukan dalam pembelajaran mesin. Banyak hal dari intuisi geometris yang benar dalam 2D, 3D ... tidak relevan dalam dimensi vektor ruang yang agak tinggi atau abstrak (seperti sekumpulan kata, vektor variabel ...)
Keterpisahan linear: Anda jarang harus berurusan dengan cluster melingkar dalam data kehidupan nyata. Bahkan lebih baik untuk berasumsi bahwa mereka tidak ada dalam kasus-kasus ini. Mengizinkan algoritme Anda untuk mencari mereka akan memungkinkannya untuk menemukan kelompok lingkaran yang aneh dalam kebisingan. Asumsi linier dalam K-means membuatnya sering lebih kuat.
Jumlah cluster: Seringkali tidak ada jumlah cluster ideal yang ingin Anda lihat. Untuk klasifikasi teks misalnya, mungkin ada 100 kategori, 105, 110 ... semuanya agak subjektif. Menentukan jumlah cluster menjadi setara dengan menentukan granularity global. Semua metode clustering memerlukan spesifikasi granularity.
Tetapi semua algoritma pengelompokan memiliki keterbatasan seperti itu. Misalnya dalam pengelompokan Spectral: Anda tidak dapat menemukan vektor eigen yang sebenarnya, hanya perkiraan.
Untuk waktu komputasi yang sama, pustaka LDA yang dioptimalkan cukup kurang baik daripada K-means buatan kami (tidak dioptimalkan dengan sempurna). Sejak itu, saya berpikir sedikit berbeda.
sumber
Untuk memahami kelemahan dari K-means, saya suka memikirkan apa model di baliknya.
Jika kita membuat probabilitas berada di masing-masingK σ2saya σ2 K σ2→ 0
Jadi, apa yang dikatakan di sini tentang kekurangan K-means?
K-means sebenarnya adalah algoritma yang sangat membatasi. Keuntungannya adalah dengan asumsi di atas, Anda dapat melakukan algoritma dengan cukup cepat. Tetapi jika kinerja pengelompokan adalah perhatian utama Anda, K-means biasanya terlalu membatasi dalam situasi nyata.
sumber
It can be shown that
. Dengan peregangan yang memadai, apa pun bisa "ditampilkan" sebagai kekerabatan, di luar akal.