K-means pada persamaan cosinus vs. Euclidean distance (LSA)

10

Saya menggunakan analisis semantik laten untuk mewakili kumpulan dokumen di ruang dimensi yang lebih rendah. Saya ingin mengelompokkan dokumen-dokumen ini menjadi dua kelompok menggunakan k-means.

Beberapa tahun yang lalu, saya melakukan ini menggunakan gensim Python dan menulis algoritma k-means saya sendiri. Saya menentukan cluster centroid menggunakan jarak Euclidean, tetapi kemudian mengelompokkan setiap dokumen berdasarkan kesamaan cosinus dengan centroid. Tampaknya bekerja dengan cukup baik.

Sekarang saya mencoba melakukan ini pada kumpulan dokumen yang jauh lebih besar. K-means tidak konvergen, dan saya bertanya-tanya apakah itu bug dalam kode saya. Saya membaca baru-baru ini bahwa Anda seharusnya tidak mengelompokkan menggunakan cosinus similarity, karena k-means hanya berfungsi pada jarak Euclidean. Meskipun, seperti yang saya sebutkan, tampaknya berfungsi dengan baik dalam test case saya yang lebih kecil.

Sekarang saya menemukan ini di halaman LSA Wikipedia :

Dokumen dan representasi vektor istilah dapat dikelompokkan menggunakan algoritma pengelompokan tradisional seperti k-means menggunakan langkah-langkah kesamaan seperti cosinus.

Jadi yang mana? Bisakah saya menggunakan persamaan cosinus atau tidak?

Jeff
sumber
Topik itu memang berlama-lama di situs ini. Hanya pertanyaan terbaru: stats.stackexchange.com/q/120085/3277 (lihat tautan lebih lanjut di sana). Yang sangat menarik adalah bagaimana Anda menerapkan k-means yang memproses cosinus. Jika Anda menggambarkan algoritme Anda dalam pertanyaan Anda, itu akan membantu orang menjawabnya.
ttnphns
@ttnphns Saya sebenarnya menghasilkan cluster centroid menggunakan jarak Euclidean (rata-rata setiap dimensi). Namun saya kemudian menetapkan setiap dokumen ke sebuah cluster berdasarkan kesamaan cosinus, bukan jarak Euclidean.
Jeff
I then assigned each document to a cluster based on cosine similarity- Kosongkan antara doc dan centroid? Dan setelah semua dokumen ditetapkan, Anda memperbarui centroid dengan cara biasa (Euclidean), karena koordinat dokumen dalam ruang diketahui. Apakah begitu?
ttnphns
1
Hanya jika jumlah nilai kuadrat untuk setiap dokumen dalam dataset Anda sama , pendekatan Anda akan bekerja dan akan selalu bertemu. Karena dalam kasus itu (yaitu, semua dengan panjang yang sama) cosinus antara centroid dan dokumen akan sangat monoton dengan jarak Euclidean antara centroid dan dokumen. Tetapi itu berarti bahwa menggunakan cosinus untuk penugasan tidak perlu dan Anda kemudian dapat menggunakan penugasan algoritma k-means standar berdasarkan jarak Euclidean. h
ttnphns
1
Apa yang saya mulai pikirkan adalah bahwa Anda mungkin mencari k-means yang dilakukan di atas bola, bukan di luar angkasa. K-berarti sudut, jadi untuk berbicara. Saya kira itu mungkin, tetapi saya tidak pernah membaca atau menggunakannya.
ttnphns

Jawaban:

4

Ya, Anda bisa menggunakannya. Masalahnya adalah, bahwa kemiripan cosinus bukanlah jarak, itulah mengapa disebut kemiripan. Namun demikian, dapat dikonversi ke jarak seperti dijelaskan di sini .

Bahkan, Anda bisa menggunakan jarak apa saja. Sebuah studi yang sangat bagus tentang sifat-sifat fungsi jarak dalam ruang dimensi tinggi (seperti itu biasanya terjadi dalam pengambilan informasi) adalah Pada Perilaku Mengejutkan Metrik Jarak dalam Ruang Dimensi Tinggi . Itu tidak membandingkan Euclidean vs cosinus.

Saya menemukan penelitian ini di mana mereka mengklaim bahwa dalam ruang dimensi tinggi, kedua jarak cenderung berperilaku sama.

jpmuc
sumber
1
Jawaban ini mungkin bagus jika menjelaskan caranya Yes, you can use it . (Apakah ide untuk mengubah jarak cosinus ke Euclidean sama dengan jawaban saya ?)
ttnphns
Pemahaman saya tentang k-means berbeda. Ini tidak selalu terbatas pada jarak Euclidean ( stat.uni-muenchen.de/~leisch/papers/Leisch-2006.pdf ). Juga Lihat referensi kedua saya atau paket R ini ( cran.r-project.org/web/packages/cclust/cclust.pdf ). Maksud saya sangat suka di situs wikipedia. Satu hanya perlu fungsi jarak. Mereka menyebutnya "kesamaan sudut".
jpmuc
1
Mungkin (dan terima kasih sudah berbagi makalah!). Tetapi kemudian semua "modifikasi" k-sarana yang berbeda dari k-sarana dalam arti mereka mendefinisikan centroid bukan sebagai rata-rata aritmatika dalam ruang Euclidean, tidak boleh disebut k-sarana.
ttnphns
1

Jarak Euclidean tidak cocok untuk membandingkan dokumen atau kumpulan dokumen. Saat membandingkan dokumen, satu masalah utama adalah normalisasi menurut panjang dokumen. Kesamaan cosine mencapai normalisasi seperti ini, tetapi jarak euclidean tidak. Terlebih lagi, dokumen sering dimodelkan sebagai distribusi probabilitas multinomial (disebut kantong kata-kata). Kesamaan cosine adalah perkiraan untuk divergensi JS yang merupakan metode yang dibenarkan secara statistik untuk kesamaan. Salah satu masalah utama dengan dokumen dan kosinus adalah bahwa seseorang harus menerapkan normalisasi tf-idf yang tepat untuk penghitungan. Jika Anda menggunakan gensim untuk mendapatkan representasi LSA, gensim sudah melakukannya.

Pengamatan lain yang bermanfaat untuk use case 2 cluster adalah bahwa Anda bisa mendapatkan inisialisasi non-acak yang baik karena LSA hanya SVD. Anda melakukannya dengan cara berikut:

  • Ambil saja komponen pertama dari setiap dokumen (dengan asumsi komponen pertama adalah vektor singular teratas).
  • Urutkan nilai-nilai itu dengan melacak id dokumen untuk setiap nilai.
  • klaster 1 = id dokumen yang sesuai dengan puncak misalnya 1000 (atau lebih) nilai
  • klaster 2 = id dokumen yang terkait dengan nilai terbawah misal 1000 (atau lebih)
  • rata-rata vektor untuk setiap cluster dan normalkan dengan panjang vektor.
  • Sekarang terapkan k-means untuk inisialisasi ini. Ini berarti hanya iterate (1) menugaskan dokumen ke centroid terdekat saat ini dan (2) rata-rata dan menormalkan centroid baru setelah penugasan kembali
Stefan Savev
sumber
1

Ya, pembaruan centroid yang sama dengan karya rata-rata vektor.

Lihat kasus m = 1 dalam Bagian 2.2 makalah ini . w's adalah bobot dan bobot semua adalah 1 untuk algoritma k-mean dasar.

Makalah ini menggunakan properti dari ketidaksetaraan Cauchy-Schwartz untuk menetapkan kondisi yang meminimalkan fungsi biaya untuk k-mean.

Juga ingat bahwa kesamaan cosinus bukan jarak vektor. Ketidaksamaan cosine adalah. (Ini seharusnya istilah pencarian yang bagus.) Karena itu ketika Anda memperbarui partisi, Anda mencari yang arg maxbertentangan arg min.

Argyll
sumber