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:
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!
Jawaban:
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:
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.
sumber
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.
sumber