Pengelompokan data pelanggan disimpan dalam ElasticSearch

10

Saya memiliki banyak profil pelanggan yang disimpan dalam sebuah cluster . Profil ini sekarang digunakan untuk membuat grup target untuk langganan email kami.

Grup target sekarang dibentuk secara manual menggunakan kemampuan pencarian faceted elasticsearch (seperti dapatkan semua pelanggan pria berusia 23 tahun dengan satu mobil dan 3 anak).

Bagaimana saya bisa mencari grup yang menarik secara otomatis - menggunakan ilmu data, pembelajaran mesin, pengelompokan atau sesuatu yang lain?

Bahasa pemrograman tampaknya menjadi alat yang baik untuk tugas ini, tetapi saya tidak dapat membentuk metodologi pencarian grup seperti itu. Salah satu solusinya adalah entah bagaimana menemukan kelompok pelanggan terbesar dan menggunakannya sebagai kelompok sasaran, jadi pertanyaannya adalah:

Bagaimana saya bisa secara otomatis memilih cluster terbesar dari pelanggan yang serupa (mirip dengan parameter yang saya tidak tahu saat ini)?

Sebagai contoh: program saya akan terhubung ke elasticsearch, membongkar data pelanggan ke CSV dan menggunakan skrip bahasa R akan menemukan bahwa sebagian besar pelanggan adalah laki-laki tanpa anak dan sebagian besar pelanggan memiliki mobil dan warna mata mereka coklat.

Konstantin V. Salikhov
sumber
1
Apa yang Anda maksud dengan "grup menarik"? Apakah Anda memiliki daftar fitur penting yang telah ditentukan sebelumnya?
yatul
Kelompok yang menarik adalah kelompok dengan ukuran lebih dari beberapa ambang batas dan jauh lebih besar dari kelompok lain yang mungkin.
Konstantin V. Salikhov
1
Tidak jelas bagaimana Anda akan melakukan langkah persiapan data Anda. Tetapi Anda harus melihat algoritma yang dijelaskan di en.wikipedia.org/wiki/Anomaly_detection . Jika saya jadi Anda, saya sudah memeriksa metode SVM pertama
yatul
Saya sudah membaca tentang SVM dan saya pikir ini lebih tentang klasifikasi data yang baru dibuat setelah pelatihan manual pada dataset yang sudah ada - bukan tentang pengelompokan data yang ada dan menemukan kluster besar yang tidak normal. Apakah saya benar? Jika saya maka metode ini bukan yang saya inginkan.
Konstantin V. Salikhov

Jawaban:

6

Salah satu algoritma yang dapat digunakan untuk ini adalah algoritma clustering k-means .

Pada dasarnya:

  1. Pilih secara acak k titik data dari set Anda, m_1, ..., m_k.
  2. "Sampai konvergensi":

    1. Tetapkan poin data Anda ke k cluster, di mana cluster i adalah himpunan poin yang m_i adalah yang terdekat dari rata-rata Anda saat ini
    2. Ganti setiap m_i dengan rata-rata semua titik yang ditetapkan untuk klaster i.

Merupakan praktik yang baik untuk mengulangi algoritma ini beberapa kali, lalu pilih hasil yang meminimalkan jarak antara titik-titik dari setiap kluster i dan pusat m_i.

Tentu saja, Anda harus tahu k untuk memulai di sini; Anda dapat menggunakan validasi silang untuk memilih parameter ini.

Nick Peterson
sumber