Mencocokkan Barang Serupa dari Set

10

Saya mencoba mencocokkan item. Diberikan satu set item saya dapat peringkat pada skala dari 0 hingga 100 seberapa mirip mereka satu sama lain. Misalnya, jika item adalah susu dan item n_2 juga adalah susu, maka kesamaan antara n_1 dan n_2 akan menjadi 100%. Jika n_3 adalah soda, maka kesamaan antara n_1 dan n_3 adalah, mungkin, 80%, dan seterusnya.nn1n2n1n2n3n1n3

Saya mencoba mencari cara mengelompokkan item menjadi grup item serupa, tapi ini masalah yang menantang. Saya mengalami masalah berikut: Seekor kuda mirip dengan sapi, yang mirip dengan kambing, yang sebagian mirip dengan keju kambing, yang mirip dengan keju, yang berkorelasi dengan kerupuk. Namun, saya tidak akan mengharapkan kuda berada di kelompok yang sama dengan kerupuk. Setiap item mungkin berkorelasi berpasangan, tetapi awal dan akhir mungkin tidak.n

Ada ide?

Jason
sumber
Dalam biologi evolusi, hasil pengelompokan berpasangan seperti itu disebut pohon filogenetik , jadi Anda dapat menambahkannya ke rangkaian istilah pencarian yang bermanfaat.
hardmath

Jawaban:

7

Apa yang ingin Anda lakukan di sini adalah pengamatan partisi N ke dalam cluster K yang memperlihatkan properti serupa. Ini disebut pengelompokan dan Anda dapat menemukan info lebih lanjut di sini .

Karena Anda sudah memiliki ukuran kesamaan numerik, ini membuat saya berpikir tentang menggunakan algoritma K-Means , di mana Anda beroperasi dalam beberapa langkah:

  • Inisialisasi cluster centroid secara acak
  • Tetapkan setiap observasi ke cluster yang sesuai dengan centroid terdekat.
  • Perbarui centroid sebagai rata-rata baru dari elemen dalam kluster.

Anda dapat memeriksa konvergensi ketika centroid telah berhenti bergerak atau dalam batas tertentu.

Ini akan memastikan bahwa item di masing-masing cluster agak berkorelasi, dan Anda dapat memiliki lebih banyak cluster dengan meningkatkan jumlah cluster dalam algoritma ("K"). Menemukan jumlah cluster tergantung pada setiap masalah, dan saya menyarankan Anda mencoba banyak nilai untuk masalah Anda, lihat apa yang keluar dikelompokkan bersama, dan lihat apa yang masuk akal.

Semoga itu bisa membantu.

Charles Menguy
sumber
5

Saya pikir apa yang Anda cari disebut "analisis cluster" atau "clustering". Ada banyak algoritma berbeda. Dalam kasus Anda, Anda ingin beberapa "pengelompokan konektivitas", yaitu elemen grup bersama-sama berdasarkan properti yang menghubungkan masing-masing.

Lihatlah algoritma pengelompokan di scikits.learn (kode Python) dan referensi yang disebutkan di sana.

GertVdE
sumber