Apakah kita perlu mengatur set pelatihan dan set pengujian untuk pengelompokan?

10

Ketika kami melakukan klasifikasi dan regresi, kami biasanya menetapkan set pengujian dan pelatihan untuk membantu kami membangun dan meningkatkan model.

Namun, ketika kita melakukan pengelompokan, apakah kita juga perlu mengatur pengujian dan pelatihan? Mengapa?

rz. Dia
sumber
Ya - untuk alasan yang sama seperti klasifikasi / regresi. Anda ingin memastikan bahwa model apa pun yang Anda buat (katakan plot siku Anda menunjukkan bahwa k = 3 dalam pengelompokan k-means) masih sesuai untuk data yang tidak terlihat.
ilanman
Terima kasih ilanman;) Juga, apakah Anda memiliki rekomendasi tentang cara menentukan jumlah sebenarnya cluster ketika kami melakukan pengelompokan seperti kman?
rz. Dia

Jawaban:

6

Ya, karena pengelompokan juga dapat mengalami masalah pemasangan berlebihan. Misalnya, peningkatan jumlah cluster akan selalu "meningkatkan kinerja".

Berikut ini satu demo menggunakan pengelompokan K-Means:

Fungsi objektif K-means adalah (detail notasi dapat ditemukan di sini )

J=saya=1kj=1nxsaya(j)-cj2

Dengan tujuan seperti itu, lebih rendah berarti model "lebih baik".J

Misalkan kita memiliki data berikut (data iris), memilih jumlah cluster sebagai akan selalu "lebih baik" daripada memilih jumlah cluster sebagai . Maka memilih klaster akan lebih baik dari klaster. Kita dapat melanjutkan di jalur ini dan berakhir dengan biaya : cukup buat jumlah cluster sama dengan jumlah titik data dan tempatkan semua pusat cluster pada titik yang sesuai.4354J=0

d=iris[,c(3,4)]

res4=kmeans(d, 4,nstart=20)
res3=kmeans(d, 3,nstart=20)


par(mfrow=c(1,2))
plot(d,col=factor(res4$cluster),
		 main=paste("4 clusters J=",round(res4$tot.withinss,4)))
plot(d,col=factor(res3$cluster),
		 main=paste("3 clusters J=",round(res3$tot.withinss,4)))

masukkan deskripsi gambar di sini

Jika kami telah menunda data untuk pengujian, itu akan mencegah kami terlalu fit. Contoh yang sama, misalkan kita memilih cluster dalam jumlah besar dan menempatkan setiap pusat cluster ke poin data pelatihan. Kesalahan pengujian akan besar, karena titik data pengujian tidak akan tumpang tindih dengan data pelatihan.

Haitao Du
sumber
Hai hxd1011, terima kasih atas balasan cepat Anda. Pertanyaan lain, apakah Anda memiliki rekomendasi tentang bagaimana menentukan jumlah sebenarnya cluster ketika kami melakukan pengelompokan seperti kman?
rz. Dia
@ rz. Dia ya, periksa stats.stackexchange.com/questions/261537/…
Haitao Du
2
Memberi +1 karena ini adalah jawaban yang konstruktif tetapi untuk berperan sebagai advokat iblis, Anda tahu mereka adalah 3 kelompok. Jika seseorang menunjukkan data ini tanpa konteks apa pun solusi 2-cluster akan bekerja dengan baik juga. Mungkin Anda bahkan memiliki beberapa poin paling kanan atas sebagai outlier untuk memainkan "real-data-have-outlier" juga. Akan jauh lebih konstruktif (dan ketat) untuk melihat koherensi antara run clustering bootstrap / jittered / subsetted menggunakan beberapa statistik (mis. Korelasi cophenetic, Adjusted Rand-Index, dll.).
usεr11852
Dan jika Anda tidak menggunakan k-means? Katakanlah, pengelompokan tautan rata-rata? Saya khawatir jawaban Anda terlalu cocok untuk k-means .
Memiliki QUIT - Anony-Mousse
@ Anony-Mousse: Jawabannya khusus untuk k-means sebagai contoh tetapi secara kualitatif akan sama jika DBSCAN atau pengelompokan spektral atau apa pun yang digunakan. Itu hanya menunjukkan bahwa metrik tertentu dapat dipasang terlalu tinggi.
usεr11852
5

Tidak, ini biasanya tidak mungkin dilakukan.

Ada sangat sedikit pengelompokan yang bisa Anda gunakan seperti classifier. Hanya dengan k-means, PAM dll. Anda dapat mengevaluasi "generalisasi", tetapi pengelompokan menjadi jauh lebih beragam (dan menarik) sejak itu. Dan pada kenyataannya, bahkan pengelompokan hierarkis lama tidak akan menggeneralisasi dengan baik untuk data 'baru'. Clustering bukan klasifikasi. Banyak metode dari klasifikasi tidak dapat ditransfer dengan baik ke pengelompokan; termasuk optimasi hiperparameter.

Jika Anda hanya memiliki data berlabel sebagian, Anda dapat menggunakan label ini untuk mengoptimalkan parameter. Tetapi skenario umum pengelompokan adalah bahwa Anda ingin mempelajari lebih lanjut tentang kumpulan data Anda; jadi Anda menjalankan pengelompokan beberapa kali, selidiki cluster yang menarik (karena biasanya, beberapa cluster jelas terlalu kecil atau terlalu besar untuk menarik!) dan catat beberapa wawasan yang Anda dapatkan. Clustering adalah alat untuk membantu manusia mengeksplorasi kumpulan data , bukan hal yang otomatis. Tetapi Anda tidak akan "menggunakan" pengelompokan. Mereka terlalu tidak dapat diandalkan, dan satu pengelompokan tidak akan pernah "menceritakan seluruh kisah".

Memiliki QUIT - Anony-Mousse
sumber
1
Clustering mencerminkan properti global dari data dan umumnya tidak memiliki "kebenaran-tanah". Setelah sedih itu, saya tidak berpikir ada yang menganjurkan menggunakan pengelompokan sebagai pengklasifikasi pada contoh pertama; namun jika kita menemukan pengelompokan yang menarik, bodoh untuk tidak mencoba menggunakan temuan dengan memasukkannya ke dalam proses pengambilan keputusan. (Kalau tidak mengapa kita mengelompokkan data untuk memulai?)
usεr11852
untuk menjalankan clustering, kita masih perlu tujuan untuk mengoptimalkan. jika ini adalah masalah optimisasi, maka itu bisa terlalu pas untuk satu data. Selain kman, banyak metode lain yang masih membutuhkan sejumlah cluster.
Haitao Du
1
Tidak setiap algoritma pengelompokan adalah masalah optimisasi.
Memiliki QUIT - Anony-Mousse
1
Dan sejauh menggunakan hasilnya: Anda ingin menggunakan wawasan, bukan hasil mentah. Menafsirkan kluster, dan bekerja dengan interpretasi , karena akan ada banyak poin yang ditugaskan dengan buruk.
Memiliki QUIT - Anony-Mousse
Saya mendukung jawaban ini, Karena ketika titik data baru datang, Anda mempelajari representasi dan kemudian mengelompokkan, sehingga tidak perlu untuk pengujian. Bahkan jika Anda membaginya maka Anda kehilangan informasi data.
Aaditya Ura
1

Tidak. Anda tidak menggunakan pelatihan dan pengujian dalam pembelajaran tanpa pengawasan. Tidak ada fungsi objektif dalam pembelajaran tanpa pengawasan untuk menguji kinerja algoritma.

S_Dhungel
sumber
3
Tanpa beberapa perincian, ini tidak benar-benar menambah diskusi dan dua jawaban yang ada. Bisakah Anda mengembangkannya?
mdewey