Tercih Eşleme Algoritması


12

Üzerinde çalıştığım ve şu soruna bir çözüm oluşturmam gereken bu yan proje var.

İki grup insanım var (müşterilerim). Grup , belirli bir ürünü Asatın almak ve gruplamak Bniyetindedir X. Ürün bir dizi özelliğe sahiptir x_ive amacım , tercihleri arasında Ave Beşleştirerek işlemi kolaylaştırmaktır . Ana fikir, ürününün ihtiyaçlarına daha uygun olan her Abir ilgili üyeye işaret etmektir B.

Sorunun bazı karmaşık yönleri:

  1. Öznitelikler listesi sınırlı değildir. Alıcı, nüfus arasında nadir bulunan ve tahmin edemediğim çok özel bir özellik veya bir tür tasarımla ilgilenebilir. Önceden tüm özellikler listelenemiyor;

  2. Öznitelikler sürekli, ikili veya ölçülemeyen olabilir (ör. Fiyat, işlevsellik, tasarım);

Bu soruna nasıl yaklaşacağınız ve otomatik olarak nasıl çözüleceğine dair herhangi bir öneriniz var mı?

Mümkünse, benzer sorunlara bazı referansları da takdir ediyorum.


Harika öneriler! Soruna yaklaşmayı düşünme şeklimde birçok benzerlik var.

Özelliklerin eşleştirilmesindeki ana sorun, ürünün tanımlanması gereken ayrıntı düzeyinin her alıcıya bağlı olmasıdır. Bir araba örneği alalım. "Araba" ürünü, performansı, mekanik yapısı, fiyatı vb. Arasında değişen birçok özelliğe sahiptir.

Diyelim ki ucuz bir araba ya da elektrikli bir araba istiyorum. Tamam, bu eşlemesi kolay çünkü bu ürünün ana özelliklerini temsil ediyorlar. Ama diyelim ki Çift Debriyajlı şanzımanlı veya Xenon farlı bir araba istiyorum. Peki, bu özelliklere sahip veri tabanında çok sayıda araba olabilir, ancak satıcıdan onları arayan birinin bulunmasından önce ürünlerine bu düzeyde ayrıntılı bilgi vermesini istemem. Böyle bir prosedür, her satıcının karmaşık, çok ayrıntılı bir formu doldurmasını gerektirir, sadece arabasını platformda satmaya çalışır. Sadece işe yaramaz.

Ama yine de, zorluğum, iyi bir eşleşme yapmak için aramada gerektiği kadar ayrıntılı olmaya çalışmak. Bu yüzden düşündüğüm, potansiyel satıcıların grubunu daraltmak için ürünün ana yönlerini, muhtemelen herkesle ilgili olanları eşlemek.

Bir sonraki adım “rafine edilmiş bir arama” olacaktır. Çok ayrıntılı bir form oluşturmaktan kaçınmak için, alıcılardan ve satıcılardan kendi şartnamelerinin ücretsiz bir metnini yazmalarını isteyebilirim. Ve sonra olası eşleşmeleri bulmak için bazı kelime eşleme algoritmaları kullanın. Her ne kadar bunun soruna uygun bir çözüm olmadığını anlasam da, satıcı alıcının neye ihtiyacı olduğunu “tahmin edemez”. Ama beni yaklaştırabilir.

Önerilen ağırlık ölçütleri mükemmeldir. Satıcının alıcının ihtiyaçlarına uygun seviyesini ölçmemi sağlıyor. Ölçekleme kısmı bir sorun olabilir, çünkü her özelliğin önemi istemciden istemciye değişir. Bir tür örüntü tanıma kullanmayı veya sadece alıcıdan her bir özelliğin önem düzeyini girmesini istemeyi düşünüyorum.

Yanıtlar:


9

İlk önerim, bir şekilde ölçülemeyen nitelikleri, uygun haritalama fonksiyonları yardımıyla miktarlarla eşlemek olacaktır. Aksi takdirde, onları dışarıda bırakın.

İkincisi, nitelikler listesinin sonlu olmadığını varsaymanız gerektiğini düşünmüyorum. Standart ve sezgisel bir yaklaşım, her bir özniteliği bir vektör uzayında ayrı bir boyut olarak temsil etmektir. Bu durumda her ürün bu alanda basitçe bir noktadır. Bu durumda, dinamik olarak daha fazla özellik eklemek istiyorsanız, ürün vektörlerini yeni özellik alanına (ek boyutlarla) yeniden eklemeniz yeterlidir.

Bu temsil ile, satıcı özellik alanında ürün özelliklerine sahip bir noktadır ve alıcı da aynı özellik alanında tercih özelliklerine sahip bir noktadır. Bu durumda görev, belirli bir satıcı noktası için en benzer alıcı noktasını bulmaktır.

Veri kümeniz (yani alıcı / satıcı sayısı) çok büyük değilse, bunu kd ağaçlarının yardımıyla uygulanan en yakın komşu yaklaşımıyla çözebilirsiniz.

Çok büyük boyutlu veriler için bir IR yaklaşımı kullanabilirsiniz. Her bir özelliğe, terim ağırlığı özellik değerine ayarlanmış olarak ayrı bir terim olarak davranarak satıcı kümesini (yani ürün özellikleri) endeksleyin. Bu durumda sorgu, boşluk terimi içinde uygun terim ağırlıklarına sahip bir sorgu vektörü olarak da kodlanan bir alıcıdır. Geri alma adımı, size en çok benzeyen K maçlarının bir listesini döndürür.


Wright. Buradaki ana sorun, boyutların sayısı, yani kullanmam gereken ayrıntı düzeyidir. Bana “IR yaklaşımı” nı açıklığa kavuşturabilir misiniz?
RD

1
IR ile Bilgi Edinme demek istedim. Koleksiyonunuzdaki belgelerin (satıcıların) ve sorgunun (bir alıcı) bir terim (öznitelik) alanına gömülü vektörler olduğunu düşünebilirsiniz. Söylediğim gibi, böyle bir yaklaşımın çalışmak için önceden ayarlanmış sayıda boyutu olması gerekir.
Debasis

7

Önerildiği gibi, çılgına dönüyor . Her şeyden önce, yanılıyorsam beni düzeltin:

  • Her benzersiz ürün için sadece birkaç özellik vardır;
  • Nihai özellik listesi yoktur ve istemciler ürünlerine yeni özellikler ekleyebilir.

Öyleyse, tam ürün özellik tablosu oluşturmak hesaplamalı pahalı olabilir. Ve son veri tablosu son derece seyrek olacaktır.

İlk adım, eşleşmeler için müşteri (ürün) listesini daraltmaktır. Satıcıların tip-1 düğümleri ve alıcıların tip-2 düğümleri olacağı iki parçalı bir grafik oluşturalım. Aşağıdaki çizimde olduğu gibi, benzer bir ürün özelliğine her başvurduklarında herhangi bir satıcı ve alıcı arasında bir kenar oluşturun:

grafik

Yukarıdaki grafiği kullanarak, her benzersiz satıcının ürünü için yalnızca ürünle eşleşen özelliklerle ilgilenen alıcıları seçebilirsiniz ( en az bir ortak özelliği filtrelemek , özelliklerin tamamını eşleştirmek veya bir eşik seviyesi ayarlamak mümkündür). Ama kesinlikle, bu yeterli değil. Bir sonraki adım, satıcı ve alıcı tarafından açıklanan özellik değerlerini karşılaştırmaktır. Bir çok varyant var (örneğin, k-En yakın-Komşular). Ama neden bu soruyu mevcut grafiği kullanarak çözmeye çalışmıyorsunuz? Kenarlara ağırlık ekleyelim:

  • sürekli özellikler için (ör. fiyat):

    price_weight

  • ikili ve ölçülemeyen özellikler için - sadece mantıksal iki yönlü:

    feature_weight

Buradaki ana fikir, her özelliği aralığa göre ölçeklendirmektir[0, 1] . Ayrıca, en önemli özellikleri belirlemek için özellik katsayılarını kullanabiliriz. Örneğin, fiyatın bazı nadir işlevlerin kullanılabilirliğinin iki katı olduğunu varsayarsak:

adj_w_1

adj_w_2

Son adımlardan biri, grafik yapısının basitleştirilmesi ve her bir özelliğin önceden hesaplanan ağırlıklarının toplamına eşit ağırlıkla birçok kenarı bir kenara indirmektir. Bu kadar düşük bir yapı ile her müşteri / ürün çifti sadece bir kenara sahip olabilir (paralel kenarlar olmadan). Bu nedenle, tam satıcı için en iyi teklifi bulmak için, sadece maksimum ağırlıklı kenarlara sahip bağlı alıcıları seçmeniz gerekir.

Gelecekteki zorluk: ilk adımda kenarları ağırlıklandırmak için ucuz bir yöntem tanıtın :)

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.