Menggunakan atribut untuk mengklasifikasikan / mengelompokkan profil pengguna

14

Saya memiliki kumpulan data pengguna yang membeli produk dari situs web.

Atribut yang saya miliki adalah id pengguna, wilayah (negara bagian) pengguna, id kategori produk, id kata kunci produk, id kata kunci situs web, dan jumlah penjualan yang dihabiskan untuk produk tersebut.

Tujuannya adalah untuk menggunakan informasi produk dan situs web untuk mengidentifikasi siapa penggunanya, seperti "pemain muda pria" atau "ibu rumah tangga".

Saya melampirkan contoh gambar seperti di bawah ini:

masukkan deskripsi gambar di sini

Semuanya ada 1940 kategori unik dan 13845 kata kunci unik untuk produk. Untuk situs web, ada 13063 kata kunci unik. Seluruh dataset sangat besar karena itulah data logging harian.

Saya berpikir tentang pengelompokan, karena itu tidak diawasi, tetapi nomor id tersebut tidak memiliki arti numerik. Maka saya tidak tahu bagaimana cara menerapkan algoritma. Saya juga memikirkan klasifikasi. Jika saya menambahkan kolom kelas berdasarkan jumlah penjualan produk yang dibeli. Saya pikir pengelompokan lebih disukai. Saya tidak tahu algoritma apa yang harus saya gunakan untuk kasus ini karena dimensi id kata kunci bisa lebih dari 10.000 (setiap produk dapat memiliki banyak kata kunci, demikian juga situs web). Saya perlu menggunakan Spark untuk proyek ini.

Adakah yang bisa membantu saya dengan beberapa ide atau saran?

Terima kasih banyak!

Sylvia
sumber
1
Bisakah Anda memberikan informasi lebih lanjut? apa itu "id kategori produk A" dan "mencari kata kunci id produk A" dengan panjang yang sama untuk semua entri? "dimensi id kata kunci pencarian bisa lebih dari 10.000" mengapa? Apakah mereka? Berapa banyak sampel yang Anda miliki? semua pertanyaan dapat dijawab jika Anda memposting beberapa sampel data Anda di sini. Maka saya mungkin bisa menyarankan Anda sesuatu.
Kasra Manshaei
Apakah produk A dan produk B adalah dua produk yang dibeli pengguna? Kata-katanya sepertinya menunjukkan bahwa produk A dan B berbeda untuk setiap pengguna, karena kata kunci dapat bervariasi. Benarkah begitu? Dan komentar terakhir, apakah Anda ingin mengklasifikasikan atau mengelompokkan? Itu adalah teknik yang sangat berbeda :)
logc
@Kasramsh terima kasih banyak atas balasan Anda. Saya memperbarui deskripsi dan juga melampirkan data sampel. Berharap untuk mendapatkan beberapa saran dari Anda!
sylvia
@logc ya, produk (saya katakan produk A sebelumnya) dan situs web (saya katakan produk B sebelumnya) berbeda dari setiap pengguna. Setiap produk memiliki beberapa kata kunci dan setiap situs web juga memiliki beberapa kata kunci. Baik pengelompokan atau klasifikasi baik-baik saja, selama saya dapat membuat profil pengguna, seperti "gamer muda pria"; "tinggal di rumah ibu". Saya pikir pengelompokan lebih disukai. Terima kasih!!
sylvia
@ silvia - Saya punya masalah serupa untuk dipecahkan. Saya telah mempostingnya sebagai pertanyaan terpisah. Bisakah Anda memberikan beberapa saran tentang bagaimana Anda menyelesaikannya? datacience.stackexchange.com/questions/12930/... Keraguan saya yang lain adalah untuk K means, apakah Anda mengelompokkan catatan berdasarkan pelanggan? Artinya, setiap baris mewakili transaksi atau mewakili pembelian agregat dari pelanggan tersebut hingga saat ini.
Neil

Jawaban:

11

Saat ini, saya hanya punya waktu untuk jawaban yang sangat singkat, tetapi saya akan mencoba mengembangkannya nanti.

Yang ingin Anda lakukan adalah pengelompokan , karena Anda ingin menemukan beberapa label untuk data Anda. (Berbeda dengan klasifikasi, di mana Anda akan memiliki label untuk setidaknya beberapa data dan Anda ingin memberi label pada sisanya).

Untuk melakukan pengelompokan pada pengguna Anda, Anda harus memilikinya sebagai semacam titik dalam ruang abstrak. Kemudian Anda akan mengukur jarak antara titik, dan mengatakan bahwa titik yang "dekat" adalah "serupa", dan beri label sesuai dengan tempat mereka di ruang itu.

Anda perlu mengubah data Anda menjadi sesuatu yang terlihat seperti profil pengguna, yaitu: ID pengguna, diikuti oleh vektor angka yang mewakili fitur-fitur pengguna ini. Dalam kasus Anda, setiap fitur dapat berupa "kategori situs web" atau "kategori produk", dan jumlahnya dapat berupa jumlah dolar yang dihabiskan untuk fitur itu. Atau fitur dapat berupa kombinasi web dan produk, tentu saja.

Sebagai contoh, mari kita bayangkan profil pengguna hanya dengan tiga fitur:

  • dolar yang dihabiskan di web "techy",
  • dolar yang dihabiskan untuk produk "mode",
  • dan dolar yang dihabiskan untuk permainan video "agresif" di web "berorientasi keluarga" (siapa tahu).

Untuk membangun profil tersebut, Anda perlu memetakan "kategori" dan "kata kunci" yang Anda miliki, yang terlalu banyak, ke dalam fitur yang menurut Anda relevan. Lihatlah pemodelan topik atau kesamaan semantik untuk melakukannya. Setelah peta itu dibuat, itu akan menyatakan bahwa semua dolar yang dihabiskan di web dengan kata kunci "gadget", "elektronik", "pemrograman", dan X lainnya, semuanya harus digabungkan ke dalam fitur pertama kami; dan seterusnya.

Jangan takut "memaksakan" fitur! Anda harus memperbaiki dan mungkin mengubahnya sepenuhnya setelah Anda mengelompokkan pengguna.

Setelah Anda memiliki profil pengguna, lanjutkan untuk mengelompokkannya menggunakan k-means atau apa pun yang menurut Anda menarik. Apa pun teknik yang Anda gunakan, Anda akan tertarik untuk mendapatkan poin "representatif" untuk setiap cluster. Ini biasanya merupakan "pusat" geometris dari titik-titik dalam cluster itu.

Plot poin-poin "representatif" itu, dan juga plot bagaimana mereka membandingkannya dengan cluster lain. Menggunakan grafik radar sangat berguna di sini. Di mana pun ada fitur yang menonjol (sesuatu dalam perwakilan yang sangat ditandai, dan juga sangat menonjol dalam perbandingannya dengan cluster lain) adalah kandidat yang baik untuk membantu Anda memberi label pada cluster dengan beberapa frase yang menarik ("kutu buku", "fashionista" , "ibu agresif" ...).

Ingat bahwa masalah pengelompokan adalah masalah terbuka, jadi tidak ada solusi yang "benar"! Dan saya pikir jawaban saya sudah cukup lama; periksa juga tentang normalisasi profil dan penyaringan pencilan.

logc
sumber
Terima kasih banyak! Ini sangat membantu. Saya akan mulai dari pemetaan. Saya sangat menghargai itu!
sylvia
Saya senang bisa membantu. :)
logc
Hai @logc, saya menerapkan LDA untuk memilih fitur. Saya menganggap setiap user_id sebagai "dokumen" dan kata kunci adalah "kata-kata" di "dokumen", kemudian dengan menerapkan LDA saya mendapat beberapa topik kata kunci. Namun, saya tidak tahu mengapa sebagian besar topik saya terdiri dari kata kunci yang sama. Apakah itu berarti LDA bukan metode yang tepat untuk kasus saya atau ada beberapa kesalahan? Terima kasih banyak!
sylvia
@ silvia: Saya menyarankan agar Anda mengubah pertanyaan itu menjadi pertanyaan baru di situs ini. Kalau tidak, kita mungkin akhirnya menulis banyak komentar, dan itu bukan format terbaik untuk tanya jawab. :)
logc
Terima kasih untuk sarannya. Ini tautan yang saya posting jika Anda punya waktu untuk melihat datacience.stackexchange.com/questions/5941/… Terima kasih!
sylvia
-2

Untuk orientasi dan eksplorasi, saya dapat merekomendasikan WeKa , yang merupakan toolkit yang sangat bagus untuk pembelajaran mesin. Itu mengambil format input tertentu (.ARFF) sehingga Anda mungkin perlu melihat ke dalamnya juga.

Sedangkan untuk dilema kata kunci, saya sarankan melakukan beberapa pemilihan fitur untuk menghilangkan kata kunci redundan atau non-indikatif.

lennyklb
sumber
@Lennart Kloppenburg terima kasih atas balasan Anda. Bagaimana cara melakukan pemilihan fitur jika atribut (keword_id) nomor yang dipesan? Saya memperbarui data sampel di atas. Bisakah Anda melihatnya dan memberi saya beberapa saran? Terima kasih!
sylvia