Mengelompokkan data 1D


16

Saya memiliki dataset, saya ingin membuat kelompok data berdasarkan hanya satu variabel (tidak ada nilai yang hilang). Saya ingin membuat 3 cluster berdasarkan satu variabel itu.

Algoritma pengelompokan mana yang digunakan, k-means, EM, DBSCAN dll.?

Pertanyaan utama saya adalah, dalam keadaan apa saya harus menggunakan k-means di atas EM atau EM di atas k-means?


1
Algoritma EM adalah alat tujuan umum untuk melakukan estimasi kemungkinan maksimum dengan data yang hilang - dapatkah Anda lebih spesifik tentang bagaimana itu adalah "algoritma pengelompokan"?
Makro

Saya menggunakan weka sebagai alat, dan di bawah algoritma pengelompokan, EM terdaftar sebagai suatu algoritma. Saya minta maaf atas pertanyaan lemah, saya baru dalam penambangan data.
Ali

Saya tahu algoritma EM digunakan untuk melakukan estimasi kemungkinan maksimum untuk model variabel laten (yang dapat dianggap sebagai "data yang hilang") dan variabel laten sering digunakan untuk model clustering. Mungkin inilah yang dimaksud.
Makro

@ Macro: Anda mungkin ingin melihat di sini: stat.washington.edu/mclust untuk memulai.
user603

3
Apa tujuan dari pengelompokan? Seperti kebanyakan pertanyaan statistik, ada beberapa jawaban dan mengetahui tujuannya adalah panduan penting untuk memilih yang tepat atau yang baik.
whuber

Jawaban:


11

Algoritma K-means dan algoritma EM akan sangat mirip untuk pengelompokan 1D.

Dalam K-means Anda mulai dengan menebak di mana mean berada dan menetapkan setiap titik ke kluster dengan rata-rata terdekat, lalu Anda menghitung ulang rata-rata (dan varians) berdasarkan penugasan poin saat ini, kemudian memperbarui penugasan poin, kemudian memperbarui artinya ...

Di EM Anda juga akan mulai dengan menebak di mana rata-rata berada, kemudian Anda menghitung nilai tugas yang diharapkan (pada dasarnya probabilitas setiap titik berada di setiap kluster), kemudian Anda memperbarui estimasi rata-rata (dan varian) menggunakan nilai yang diharapkan sebagai bobot, lalu hitung nilai yang diharapkan baru, lalu hitung cara baru, ...

Perbedaan utama adalah bahwa penugasan poin ke cluster dalam K-means adalah semua atau tidak sama sekali, di mana EM memberikan proporsi / probabilitas keanggotaan kelompok (satu poin dapat dilihat memiliki 80% kemungkinan berada di grup A, probabilitas 18% berada di kelompok B, dan 2% kemungkinan berada di kelompok C). Jika ada banyak pemisahan antara kelompok maka 2 metode akan memberikan hasil yang sangat mirip. Tetapi jika ada jumlah yang cukup dari tumpang tindih maka EM mungkin akan memberikan hasil yang lebih bermakna (bahkan lebih jika varian / standar deviasi menarik). Tetapi jika semua yang Anda pedulikan adalah menetapkan keanggotaan grup tanpa memperhatikan parameternya, maka K-means mungkin lebih sederhana.

Mengapa tidak melakukan keduanya dan lihat betapa berbedanya jawabannya? jika mereka serupa maka pergi dengan yang lebih sederhana, jika mereka berbeda maka putuskan membandingkan pengelompokan dengan data dan pengetahuan luar.


Terima kasih greg posting Anda membantu, saya menerapkan keduanya dan tampaknya EM menghasilkan cluster yang lebih baik daripada k-mean. (Saya pikir ini terutama karena data yang saya miliki adalah terus menerus dan tidak ada kesenjangan). Saya agak bingung, karena saya hanya punya data 1D, maka saya mungkin harus melakukan binning untuk mengkategorikan data. Bagaimana menurut anda? Apa sebenarnya yang Anda maksudkan dengan parameter? Apakah itu merujuk pada atribut dari sebuah instance? Terima kasih Ali
Ali

Hm EM saja tampaknya tidak cukup. Anda memerlukan asumsi distribusi distribusi yang mendasari campuran.
Tomka

2

EM lebih baik daripada k-means dalam hal hasil.

K-means, bagaimanapun, memiliki waktu berjalan yang lebih cepat.

Mereka akan menghasilkan hasil yang sama jika standar deviasi / kovarian matriks hampir sama. Jika Anda curiga ini benar, gunakan k-means.

DBSCAN digunakan ketika data non-gaussian. Jika Anda menggunakan data 1 dimensi, ini umumnya tidak berlaku, karena perkiraan gaussian biasanya valid dalam 1 dimensi.


0

Cara sederhana lain pada dasarnya adalah menggunakan pengurutan array 1D: yaitu iterate pada setiap titik dan dapatkan nilai-nilai yang berada pada jarak minimum dari itu baik dalam arah positif dan negatif. Sebagai contoh:

data = [1,2,3,4,5,6,7,8,9,10,12]
k = 5
for a in data:
   print {'group': sorted(k, key=lambda n: abs(n-a))[0:k], 'point': a}

akan membagikan:

{'group': [1, 2, 3, 4, 5], 'point': 1}
{'group': [2, 1, 3, 4, 5], 'point': 2}
{'group': [3, 2, 4, 1, 5], 'point': 3}
{'group': [4, 3, 5, 2, 6], 'point': 4}
{'group': [5, 4, 6, 3, 7], 'point': 5}
{'group': [6, 5, 7, 4, 8], 'point': 6}
{'group': [7, 6, 8, 5, 9], 'point': 7}
{'group': [8, 7, 9, 6, 10], 'point': 8}
{'group': [9, 8, 10, 7, 6], 'point': 9}
{'group': [10, 9, 8, 12, 7], 'point': 10}
{'group': [12, 10, 9, 8, 7], 'point': 12}

Poin mana, bahwa item yang dekat dengan titik tertentu pada dasarnya berada di bawah grupnya. Satu-satunya hal untuk direnungkan dalam teknik ini adalah variabel k, yang merupakan ukuran tetap dari klaster :-).


-2

Jika hanya ada satu variabel, tidak perlu untuk clustering. Anda dapat dengan mudah mengelompokkan pengamatan Anda berdasarkan distribusi variabel.

Atau saya kehilangan beberapa poin di sini?


5
Bisakah Anda memberikan contoh spesifik tentang cara mengelompokkan pengamatan berdasarkan distribusi variabel?
Ali

@ composer314: dengan histogram?
nico

1
Maaf, tapi saya masih belum mengikuti. Bagaimana saya bisa menggunakan histogram untuk mengelompokkan pengamatan terkait? (Saya kira pertanyaan yang mungkin saya tanyakan adalah bagaimana seseorang menemukan gumpalan di dalam histogram? Apakah ini mirip dengan pengambilan puncak spektral?)
Ali

5
@composer Menggunakan histogram atau bahkan kernel data yang halus biasanya bukan cara yang "mudah" untuk mengelompok. Jika Anda ingin pergi dengan cara ini, Anda harus menyesuaikan model campuran yang terbatas . Jika Anda hanya ingin apa yang disarankan oleh pandangan biasa tentang histogram, gunakan K-means (juga dikenal sebagai metode Jenks , populer di kalangan kartografer).
whuber
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.