2012-05-11 18 views
5

Objective-C'de temel bir öneri sistemi yazmak istiyorum ve iş için temel bir algoritma arıyorum. Ne yazık ki, hazırda duran sistemler, Objective-C için hiç olmadığı için tablodan çıkıyorlar.Temel öneri motoru algoritması

Her biri etiketli ("korku", "aksiyon" gibi etiketli filmleri düşünün, vb.) Bir öğe veri tabanına sahip olacağım. Her bir öğe, bu etiketlerin ~ 5 veya daha fazlasına sahip olacaktır. Bir kullanıcı uygulamayı ilk kez kullandığında profili kendi profillerine göre bazı etiketleri ilişkilendirerek bir dizi soruya girdiklerine göre hazırlanır. Kullanıcı sistemi kullanmaya devam ederken ve çeşitli öğeleri (nefret/beğenme/aşk temelinde) derecelendirmeye devam ettikçe, önerilen etiketlerin ağırlıklarını bu geri bildirime göre ayarlamak istiyorum. Ayrıca, filmleri ele alındığında, örneğin "80'ler" gibi, profillerinin büyüdükçe puanlarının diğer birkaç özelliğini de almak isterim. Ya da belki yönetmen, film temasına bağlı.

Benzer kullanıcıların benzer öneriler üretmesini istediği normal (veya en az popüler) öneri sistemlerinden kaçınmayı tercih ediyorum. Bu, büyük öğe veritabanına sahip olacak ve minimum kullanıcılar başlayacak.

Böyle bir algoritma için iyi bir başlangıç ​​noktası önerebilir miyim, tekerleği yeniden icat etmekten nefret ediyorum ve orada çok var mı?

+0

port için kolay olduğunu düşünüyorum Ben bununla herhangi bir deneyimim yok, ama bu herhangi bir motor veya çerçeveler olmadan yapılabilir, muhtemelen size daha iyi esneklik ve kontrol veriyor. Temelleri için etiketler saymaktan ve belki de yıllara ve bunun gibi şeylere (örneğin 80'ler) değinmekten çok daha fazlası olmalı ve sonra kullanıcıların ne sevdiğini ve eşleştiklerini hesaplayın ya da her bir film maç skorunu hesaplayın. kullanıcı ile ve en iyi şeyleri seçin. – altschuler

+0

Bilgi tabanı oluşturma ve geri zincirleme algoritmasını kullanma hakkında ne düşünüyorsunuz? Bu biraz overkill ama sanırım işe yarayacak. – doNotCheckMyBlog

+1

Nesne-c sadık kalmanın bir nedeni var mı, eğer raf ürününü farklı bir dilde çıkarırsanız - bu dili kod olarak yazarak ya da mevcut bir uygulama olarak kullanmak isterdim. İki modül arasında iletişim kurmak için arayüz oluştur. – amit

cevap

0

İhtiyaçlarınız için mükemmel olan öğeye dayalı öneriyi kullanabilirsiniz. Daha sonra etiketleri ağırlıklandırmaya dahil edebilirsiniz ancak şimdilik sadece öğeleri göz önünde bulundurmanızı öneririz.

http://www.cs.carleton.edu/cs_comps/0607/recommend/recommender/itembased.html adresinden biraz daha fazla bilgi edinebilirsiniz. Ağ üzerinde iyi bir kaç uygulama vardır.

Gönderinizde bahsettiğiniz, kullanıcı tabanlı işbirlikçi filtreleme olarak adlandırılır.

1

python-recsys'e bakın: https://github.com/ocelma/python-recsys, bu yazılım SVD algoritmasını kullanır, bence bu bir temel algoritmadır ancak yeterince etkilidir. Gerekli kütüphane, C ile yazılan ve Python tarafından sarılmış olan uyuşuk ve scipy'dir. Ben derlemek ve objektif-c