Saya memiliki urutan besar vektor dengan panjang N. Saya perlu beberapa algoritma pembelajaran tanpa pengawasan untuk membagi vektor ini menjadi segmen M.
Sebagai contoh:
K-means tidak cocok, karena menempatkan elemen serupa dari lokasi yang berbeda ke dalam satu cluster.
Memperbarui:
Data nyata terlihat seperti ini:
Di sini, saya melihat 3 kelompok: [0..50], [50..200], [200..250]
Pembaruan 2:
Saya menggunakan k-means yang dimodifikasi dan mendapatkan hasil yang dapat diterima ini:
Batas-batas kelompok: [0, 38, 195, 246]
machine-learning
clustering
sequence
secara umum
sumber
sumber
Jawaban:
Silakan lihat komentar saya di atas dan ini adalah jawaban saya sesuai dengan apa yang saya mengerti dari pertanyaan Anda:
Seperti yang Anda katakan dengan benar, Anda tidak perlu Clustering tetapi Segmentasi . Memang Anda mencari Poin Perubahan dalam seri waktu Anda. Jawabannya sangat tergantung pada kompleksitas data Anda. Jika data sesederhana contoh di atas, Anda dapat menggunakan perbedaan vektor yang melampaui overshoot di titik-titik perubahan dan menetapkan ambang batas mendeteksi titik-titik seperti di bawah ini: Seperti yang Anda lihat misalnya ambang 20 (yaitudx < - 20 dan dx > 20 ) akan mendeteksi poin. Tentu saja untuk data nyata Anda perlu menyelidiki lebih banyak untuk menemukan ambangnya.
Pra-pemrosesan
Harap dicatat bahwa ada trade-off antara lokasi akurat dari titik perubahan dan jumlah segmen yang akurat yaitu jika Anda menggunakan data asli Anda akan menemukan titik perubahan yang tepat tetapi seluruh metode adalah untuk sensitif terhadap kebisingan tetapi jika Anda memperlancar sinyal Anda terlebih dahulu Anda mungkin tidak menemukan perubahan yang tepat tetapi efek kebisingan akan jauh lebih sedikit seperti yang ditunjukkan pada gambar di bawah:
Kesimpulan
Saran saya adalah untuk memperlancar sinyal Anda terlebih dahulu dan pergi untuk mthod pengelompokan sederhana (misalnya menggunakan GMM ) untuk menemukan estimasi akurat dari jumlah segmen dalam sinyal. Dengan informasi ini, Anda dapat mulai menemukan titik perubahan yang dibatasi oleh jumlah segmen yang Anda temukan dari bagian sebelumnya.
Saya harap semuanya membantu :)
Semoga berhasil!
MEMPERBARUI
Untungnya data Anda cukup mudah dan bersih. Saya sangat merekomendasikan algoritma pengurangan dimensionalitas (misalnya PCA sederhana ). Saya kira itu mengungkapkan struktur internal cluster Anda. Setelah Anda menerapkan PCA ke data, Anda dapat menggunakan k-means jauh lebih mudah dan lebih akurat.
Solusi Serius (!)
Menurut data Anda, saya melihat distribusi generatif dari berbagai segmen berbeda yang merupakan peluang besar bagi Anda untuk mensegmentasi deret waktu Anda. Lihat ini (asli , arsip , sumber lain ) yang mungkin merupakan solusi terbaik dan paling canggih untuk masalah Anda. Gagasan utama di balik makalah ini adalah bahwa jika segmen yang berbeda dari rangkaian waktu dihasilkan oleh distribusi dasar yang berbeda, Anda dapat menemukan distribusi itu, menetapkan tham sebagai kebenaran dasar untuk pendekatan pengelompokan Anda dan menemukan cluster.
Sebagai contoh, asumsikan sebuah video panjang di mana 10 menit pertama seseorang bersepeda, dalam 10 menit kedua ia berjalan dan pada ketiga ia duduk. Anda dapat mengelompokkan tiga segmen (aktivitas) yang berbeda ini menggunakan pendekatan ini.
sumber
K-means clustering diketahui memberikan minimum lokal, tergantung pada inisialisasi awal Anda dari pusat-pusat cluster.
Namun, segmentasi k-means dapat, saya pikir, diselesaikan secara global, karena kami tidak mengizinkan apa pun dalam menemukan solusi.
Saya dapat melihat dari komentar Anda bahwa Anda akhirnya berhasil mencapai segmentasi. Apakah Anda dapat memberikan umpan balik? Apakah solusi Anda solusi terbaik? Atau apakah Anda puas dengan solusi yang cukup baik?
sumber
Sama seperti saran: Anda dapat mencoba menggunakan algoritma DBSCAN, karena sering bekerja jauh lebih baik daripada K-means untuk pengelompokan
Kalau tidak, jika Anda ingin mencoba sesuatu yang baru untuk pengelompokan dan mempelajari beberapa hal menarik, saya sarankan Anda mencoba beberapa Analisis Data Topologis melalui diagram persisten. Saya meninggalkan Anda di sini intro mudah :)
https://towardsdatascience.com/persistent-homology-with-examples-1974d4b9c3d0
sumber