Apakah perlu untuk membakukan data Anda sebelum cluster? Dalam contoh dari scikit learn
tentang DBSCAN, di sini mereka melakukan ini di baris:
X = StandardScaler().fit_transform(X)
Tapi saya tidak mengerti mengapa itu perlu. Bagaimanapun, pengelompokan tidak mengasumsikan distribusi data tertentu - itu adalah metode pembelajaran yang tidak diawasi sehingga tujuannya adalah untuk mengeksplorasi data.
Mengapa perlu mengubah data?
python
clustering
clusters
anomaly-detection
Candic3
sumber
sumber
Jawaban:
Normalisasi tidak selalu diperlukan, tetapi jarang menyakitkan.
Beberapa contoh:
K-means :
Contoh di Matlab:
(FYI: Bagaimana saya bisa mendeteksi jika dataset saya berkerumun atau tidak terputus (yaitu membentuk satu cluster tunggal )
Cluster terdistribusi :
Jaringan saraf tiruan (input) :
Jaringan saraf tiruan (input / output)
Menariknya, mengubah unit pengukuran bahkan dapat menyebabkan orang melihat struktur pengelompokan yang sangat berbeda: Kaufman, Leonard, dan Peter J. Rousseeuw .. "Menemukan grup dalam data: Pengantar analisis klaster." (2005).
Kaufman et al. berlanjut dengan beberapa pertimbangan menarik (halaman 11):
sumber
Membakukan data direkomendasikan karena jika tidak, rentang nilai di setiap fitur akan bertindak sebagai bobot ketika menentukan bagaimana mengelompokkan data, yang biasanya tidak diinginkan.
Sebagai contoh, pertimbangkan metrik standar untuk sebagian besar algoritma pengelompokan (termasuk DBSCAN dalam pembelajaran sci-kit) -
euclidean
, atau dikenal sebagai norma L2. Jika salah satu fitur Anda memiliki rentang nilai yang jauh lebih besar daripada yang lain, pengelompokan akan sepenuhnya didominasi oleh satu fitur itu. Untuk menggambarkan tampilan ini pada contoh sederhana di bawah ini:Dari sini Anda akan melihat bahwa jarak euclidean antara versi yang tidak terstandarisasi didominasi oleh kolom ketiga karena rentang nilainya jauh lebih besar daripada dua lainnya. Namun ketika data terstandarisasi ini tidak lagi menjadi masalah dan menimbang setiap fitur sama ketika menghitung jarak antara setiap titik data.
sumber
Tidak perlu untuk melakukan standarisasi, apakah diperlukan atau tidak tergantung pada jarak metrik yang Anda pilih.
Misalnya jika Anda memilih jarak Mahalanobis maka pemisahan akan didasarkan pada jumlah standar deviasi yang memisahkan titik dan bukan jarak absolut di antara mereka, karena itu adalah metrik skala invarian.
Seperti banyak hal dalam pembelajaran mesin tidak ada jawaban yang sulit dan cepat dan satu-satunya cara untuk mengetahui dengan pasti adalah menerapkan berbagai teknik melihat yang memberikan hasil yang paling tepat untuk data Anda.
sumber
Saya menemukan dalam beberapa kasus berguna untuk mendefinisikan fungsi "evaluasi bisnis", mendefinisikan "pentingnya" dimensi yang digunakan untuk pengelompokan. Misalnya untuk pedagang sayur yang mengelompok pelanggan, jika apel dua kali lebih mahal dari jeruk, jumlah apel akan berlipat ganda.
sumber