Kullanıcı profillerini sınıflandırmak / kümelemek için nitelikleri kullanma


14

Bir web sitesinden ürün satın alan bir kullanıcı veri setim var.

Sahip olduğum özellikler kullanıcı kimliği, kullanıcının bölge (eyalet), ürün kategorisi kimliği, ürünün anahtar kelime kimliği, web sitesinin anahtar kelime kimliği ve ürünün harcanan satış tutarıdır.

Amaç, "erkek genç oyuncu" veya "evde anne kalmak" gibi kullanıcıların kimliğini belirlemek için bir ürün ve web sitesinin bilgilerini kullanmaktır.

Aşağıdaki gibi bir örnek resim ekledim:

resim açıklamasını buraya girin

Ürünler için hep birlikte 1940 benzersiz kategori ve 13845 benzersiz anahtar kelime vardır. Web sitesi için 13063 benzersiz anahtar kelime var. Tüm veri kümesi, günlük günlük verileri olduğundan büyüktür.

Kümelenmeyi düşünüyorum, çünkü bunlar denetimsiz, ancak bu kimlik, sayısal bir anlamı olmayan sıralı numaradır. O zaman algoritmayı nasıl uygulayacağımı bilmiyorum. Ben de sınıflandırmayı düşünüyorum. Satın alınan ürünün satış miktarına göre bir sınıf sütunu eklersem. Bence kümelenme daha çok tercih ediliyor. Anahtar kelimeler kimliğinin boyutları 10000'den fazla olabilir (her ürün birçok anahtar kelime olabilir, bu yüzden web sitesi gibi) bu durumda hangi algoritmayı kullanmam gerektiğini bilmiyorum. Bu proje için Spark kullanmalıyım.

Biri bana bazı fikir ve önerilerinde yardımcı olabilir mi?

Çok teşekkür ederim!


1
Daha fazla bilgi verebilir misiniz? "A ürününün kategori kimliği" nedir ve "tüm ürünler için aynı uzunlukta" A ürününün anahtar kelime kimliğini arıyor "ifadesi nedir? "Arama anahtar kelimeleri kimliğinin boyutları 10000'den fazla olabilir" neden? Onlar neler? Kaç örnek var? Verilerinizin birkaç örneğini buraya gönderirseniz tüm sorular cevaplanabilir. O zaman muhtemelen sana bir şey önerebilirim.
Kasra Manshaei

Ürün A ve ürün B, kullanıcının satın aldığı iki ürün müdür? İfadeler, anahtar kelimeler değişebileceğinden A ve B ürünlerinin her kullanıcı için farklı olduğunu göstermektedir. Öyle mi? Ve son yorum, sınıflandırmak veya kümelenmek ister misiniz? Bunlar oldukça farklı teknikler :)
logc

Cevaplarınız için @kasramsh'a çok teşekkür ederim. Açıklamayı güncelledim ve örnek bir veri ekledim. Sizden bazı öneriler almayı umuyoruz!
sylvia

@logc evet, ürün (daha önce ürün A dedim) ve web sitesi (daha önce ürün B dedim) her kullanıcıdan farklıdır. Her üründe birkaç anahtar kelime ve her web sitesinde de birkaç anahtar kelime bulunur. "Erkek genç oyuncu" gibi bir kullanıcı profili oluşturabildiğim sürece, kümeleme veya sınıflandırma iyidir; "evde kal anne". Bence kümelenme daha çok tercih edilir. Teşekkür ederim!!
sylvia

@sylvia - Çözmek için benzer bir sorunum var. Bunu ayrı bir soru olarak yayınlamıştım. Nasıl çözdüğünüz hakkında bazı önerilerde bulunabilir misiniz? Datascience.stackexchange.com/questions/12930/… Diğer şüphe K demek, kayıtları müşteriye göre grupladınız mı? Yani her satır bir işlemi temsil ediyordu veya o müşterinin bugüne kadar toplam satın alımlarını temsil ediyordu.
Neil

Yanıtlar:


11

Şu anda, çok kısa bir cevap için zamanım var, ama daha sonra bu konuya genişlemeye çalışacağım.

Verileriniz için bazı etiketler keşfetmek istediğiniz için yapmak istediğiniz şey bir kümelenmedir . (En azından bazı veriler için etiketlere sahip olacağınız ve geri kalanını etiketlemek istediğiniz bir sınıflandırmanın aksine).

Kullanıcılarınız üzerinde bir kümeleme gerçekleştirmek için, onları soyut bir alanda bir tür nokta olarak tanımlamanız gerekir. Daha sonra noktalar arasındaki mesafeleri ölçecek ve "yakın" olan noktaların "benzer" olduğunu söyleyecek ve bunları o alandaki yerlerine göre etiketleyeceksiniz.

Verilerinizi kullanıcı profiline benzeyen bir şeye, yani bir kullanıcı kimliğine ve ardından bu kullanıcının özelliklerini temsil eden bir sayı vektörüne dönüştürmeniz gerekir. Sizin durumunuzda, her özellik bir "web sitesi kategorisi" veya "bir ürün kategorisi" olabilir ve sayı bu özellikte harcanan dolar miktarı olabilir. Ya da bir özellik, elbette, web ve ürünün bir kombinasyonu olabilir.

Örnek olarak, kullanıcı profilini yalnızca üç özellikle hayal edelim:

  • "teknik" ağlarda harcanan dolar,
  • "moda" ürünlerine harcanan dolar,
  • ve dolar ("bilen)" aile odaklı "weblerde" agresif "video oyunlarına harcandı.

Bu profilleri oluşturmak için, sahip olduğunuz "kategorileri" ve "anahtar kelimeleri" alakalı olduğunu düşündüğünüz özelliklerle eşleştirmeniz gerekir. Konu modelleme veya anlamsal benzerlik konularına bakın . Bu harita oluşturulduktan sonra, "gadget", "elektronik", "programlama" ve X diğer anahtar kelimelere sahip web'lere harcanan tüm dolarların ilk özelliğimizde birleştirilmesi gerektiğini belirtir; ve bunun gibi.

Özellikleri "dayatmak" korkmayın! Kullanıcıları kümeledikten sonra bunları hassaslaştırmanız ve belki de tamamen değiştirmeniz gerekir.

Kullanıcı profillerine sahip olduktan sonra, bunları k-araçlarını veya ilginç olduğunu düşündüğünüz her şeyi kullanarak kümelemeye devam edin . Hangi tekniği kullanırsanız kullanın, her küme için "temsili" noktayı elde etmekle ilgileneceksiniz. Bu genellikle o kümedeki noktaların geometrik "merkezidir".

Bu "temsili" noktaları çizin ve aynı zamanda diğer kümelerle nasıl karşılaştırıldıklarını çizin. Radar grafiği kullanmak burada çok faydalıdır. Belirgin bir özellik (nerede temsilci içinde çok belirgin olan ve diğer kümelerle karşılaştırılmasında çok belirgin olan) bir yer varsa, kümeyi çekici bir ifade ("nerds", "fashionistas" ile etiketlemenize yardımcı olacak iyi bir adaydır. , "saldırgan anneler" ...).

Bir kümeleme sorununun açık bir sorun olduğunu unutmayın, bu nedenle "doğru" bir çözüm yoktur! Ve bence cevabım çok uzun; ayrıca profillerin normalleştirilmesi ve uç değerlerin filtrelenmesi hakkında da kontrol edin.


Çok çok teşekkür ederim! Çok faydalı. Haritadan başlayacağım. Gerçekten onu takdir ederim!
sylvia

Memnuniyetle yardım ettim. :)
logc

Merhaba @logc, özellikleri seçmek için LDA uyguladım. Ben her user_id bir "belge" olarak kabul ve anahtar kelimeler "belge" "kelimeler", daha sonra LDA uygulayarak anahtar kelimeler birkaç konu var. Ancak, neden benim konuların çoğu aynı anahtar kelimeler oluşur bilmiyorum. Bu, LDA'nın benim durumum için doğru yöntem olmadığı veya bazı hataların olduğu anlamına mı geliyor? Çok teşekkür ederim!
sylvia

@sylvia: Bu soruyu bu sitede yeni bir soruya dönüştürmenizi öneririm. Aksi takdirde, bir ton yorum yazabiliriz ve bu soru cevap için en iyi biçim değildir. :)
logc

Önerin için teşekkürler. İşte bir göz atmak için zamanınız varsa gönderdiğim bağlantı datascience.stackexchange.com/questions/5941/… Teşekkürler!
sylvia

-2

Oryantasyon ve keşif için, makine öğrenimi için çok güzel bir araç olan WeKa'yı tavsiye edebilirim . Belirli bir giriş formatı (.ARFF) alır, bu yüzden buna da bakmanız gerekebilir.

Anahtar kelime ikilemine gelince, gereksiz veya göstergesiz anahtar kelimeleri ortadan kaldırmak için bazı özellik seçimini yapmanızı öneririm.


Cevabınız için @Lennart Kloppenburg'a teşekkür ederiz. Özellik (keword_id) sıralı numaraysa özellik seçimi nasıl yapılır? Yukarıdaki örnek verileri güncelledim. Lütfen bir göz atıp bana bazı önerilerde bulunur musunuz? Teşekkür ederim!
sylvia
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.