Algoritma apa yang dapat saya gunakan untuk menemukan korelasi antara peristiwa?

12

Saya baru mengenal pembelajaran mesin, jadi saya mencoba mencari beberapa literatur tetapi saya bahkan tidak yakin apa gunanya Google. Data saya adalah dari formulir berikut:

User A performs Action P
User B performs Action Q
User C performs Action R
...
User C performs Action X
User A performs Action Y
User B performs Action Z
...

Di mana setiap Aksi memiliki karakteristik tertentu (tanggal, waktu, klien, dll). Ada sekitar 300 pengguna dan kami memiliki sekitar 20.000 tindakan.

Pertanyaan :

Saya ingin mengetahui apakah ada hubungan sebab akibat / korelasi antara tindakan pengguna. Misalnya, "setiap kali Pengguna E melakukan Tindakan T, 2 hari kemudian Pengguna G melakukan Tindakan V". Namun di antaranya, mungkin ada banyak pengguna lain yang melakukan banyak tindakan lain, dan mungkin saja tidak ada korelasi yang ditemukan. Ada juga kemungkinan bahwa beberapa pengguna berkorelasi, tetapi yang lain sepenuhnya independen. Apakah ini sesuatu yang bisa dipelajari mesin untuk saya? Apakah ada algoritma atau rangkaian algoritma tertentu yang dapat membantu saya?

Saya telah membaca tentang Analisis Asosiasi dan algoritma Apriori tetapi saya tidak berpikir ini akan memberi saya apa yang saya butuhkan, karena tampaknya memerlukan diketahui, dataset yang baik dibatasi sebagai input, sedangkan saya hanya memiliki aliran panjang pengguna yang tampaknya acak tindakan. Setiap saran tentang apa yang harus dilihat akan sangat dihargai!

Mat
sumber
1
Apakah Anda mencoba meletakkan acara pada grafik berarah , sebuah vertex mewakili tipe tindakan misalnya . Ada edge iff beberapa pengguna melakukan aksi sebelum . itu dapat dengan mudah tertimbang dengan jumlah pengguna yang telah melakukan urutan seperti itu. Anda juga dapat melakukan grafik per pengguna. G=(V,E)P(i,j)ij
0x90

Jawaban:

1

Saya pikir Anda harus melakukan beberapa persiapan data sebelum menggunakan algoritma apa pun untuk menemukan item yang sering ditetapkan dan aturan asosiasi.

Lihat tabel transaksi dalam artikel ini: analisis keranjang pasar

Dalam kasus Anda, Anda perlu mengatur (dan menyempurnakan) rentang waktu maksimal antara interaksi yang diharapkan akan dikorelasikan, maka Anda dapat memilih pengguna yang sering, dan untuk setiap transaksi yang dilakukan (atau sampel), Anda akan melampirkan di catatan tunggal 2 hari dari transaksi pengguna lain. Atribut harus berupa boolean seperti

UserA,transactionP |UserB,transaction Z| UserB, transaction F | [...]
Cesko80
sumber
Itu sangat membantu, terima kasih! Jadi apakah saya akan menjalankan algoritme satu kali untuk setiap pengguna, menanyakannya apakah ada pengguna lain yang berkorelasi dengan pengguna itu, atau apakah mungkin menjalankannya sekali saja, dan bertanya "tunjukkan set pengguna yang berkorelasi"?
Matt
Dengan mengikuti pendekatan saya, Anda hanya bisa menguji "pola" yang dimulai oleh pasangan pengguna + tra. Pengguna dan tindakan mana yang harus dipilih tergantung pada pengetahuan Anda tentang kemungkinan korelasi.
cesko80
Tiga saran. 1. Persempit pertanyaan Anda. Bukan untuk tidak sopan, tetapi tidak ada satu pun prosedur statistik yang luar biasa komprehensif yang dapat memberi tahu Anda semua asosiasi yang berarti dari banyak, banyak kemungkinan yang melekat dalam data Anda. 2. Baca analisis deret waktu. 3. Bacalah metode membedakan sebab akibat dari sekadar korelasi. Sayangnya, saya tidak memiliki perbaikan cepat untuk ditawarkan!
rolando2
1

Salah satu cara untuk mengeksplorasi data Anda adalah dengan membuat tabel tindakan sebelumnya x tindakan selanjutnya. Jadi untuk setiap acara, cari tindakan selanjutnya oleh pengguna yang sama. Anda juga dapat melakukan tabulasi terhadap penundaan tindakan X sebelumnya hingga tindakan selanjutnya.

Kemudian Anda dapat menjelajahi apakah tindakan sebelumnya mempengaruhi yang berikutnya. Jika tidak, maka pengguna Anda "stateless".

Penyederhanaan lain yang mungkin adalah mengabaikan userids, dan bertanya apakah frekuensi setiap tindakan sama dari waktu ke waktu atau berbeda-beda; dan jika bervariasi apakah itu siklik atau menunjukkan tren.

Jawaban atas pertanyaan-pertanyaan ini mungkin menunjukkan bahwa data Anda memiliki struktur kecil. Atau, mereka mungkin mengajukan beberapa hipotesis baru untuk diuji.

Hugh Morris
sumber
1

Ini pertanyaan yang menarik. Pendekatan terbaik adalah melihat keseluruhan dataset dan membuat tabel frekuensi. Misalnya: Pengguna A melakukan Tindakan P dan Y Pengguna B melakukan Tindakan Q dan Z, Pengguna C melakukan Tindakan R dan X Jadi, ada lebih banyak pengguna yang melakukan lebih banyak tindakan. Jadi, ada beberapa pendekatan untuk menangani dataset ini 1) Algoritma Cluster untuk mengelompokkan item yang serupa dalam ember yang berbeda 2) Analisis keranjang pasar untuk mengidentifikasi pengguna versus pemetaan tindakan dan frekuensi

Tanpa melalui seluruh kumpulan data, tidak disarankan untuk meresepkan algoritma tertentu untuk jenis pertanyaan ini.

Vishwa Dharma
sumber