şükela:  tümü | bugün
  • belli bir içerik ya da meta üzerindeki, kisisel görüsleri bir araya getirerek, ayni ilgi alanlari olan ve benzer tür bilgiye ihtiyaç duyan bireyleri eslestirme isidir. "bunu sevenler bunu da sevdi." yaklasiminin temelidir.

    örnegin ayni filmlere ya da kitaplara benzer rating'i vermis iki insana "siz gönülden connected'siniz." diyen bir sistemdir. aslinda eksi sözlük de bir nevi collaborative filtering system bence. misal ben, sözlükteki hemen her bayanla pek çok ortak yönümü görebiliyorum. selamlar efendim.

    (bkz: prediction engine)
    (bkz: recommendation system)
  • imece süzme diye türkçe'ye çevirsen çevrilir işlem. tavsiye sistemlerinde oldukça faydalı uygulamaları bulunur. amazon com'un çapraz satış* sistemiyle meşhur oldu. zevkine güvenilen kişiden tavsiye almak eylemine benzetilebilir.
  • size benzeyen başkalarının ne yaptığına bakarak sizin hakkınızda karar verme mevzusu.
  • bugüne kadar onca boş beleş entry girdim, bir kere de faydam dokunsun diyerekten türkçe’ye işbirlikçi filtreleme olarak çevrilmiş ve bitirme tezi konum olan collaborative filtering’in (bundan sonra "cf" diye kısaltalım) ne olduğunu anlatayım dilim döndüğünce. yazının sonunda birtakım bağlantılar var, cf üzerine çalışmak isteyen veya bilgisayar bilimlerine merakından dolayı öğrenmek isteyenler için oldukça faydalı olduklarını düşünüyorum, isteyen direkt oraya atlasın.

    cf, temel olarak bir veri madenciliği konusudur. özel olarak ise öneri sistemleri konusudur. bir öneri sisteminin gerçekleştirilmesi üç ana aşamadan oluşur. yeterli bilgi input olarak verilir, bu bilgilerden gerekli çıkarımlar yapılarak tahminler oluşturulur, bu tahminler kullanıcılara öneri olarak döndürülür. cf bu üç ana adımdan asıl işi yapan ikinci adımda, yani tahmin üretmede devreye giren bir yaklaşımdır. kendi içinde item-item cf ve user-user cf olmak üzere iki temel alt başlığa ayrılır. öneri sistemleri için kullanılan diğer popüler yaklaşımlar content based filtering ve clustering'dir. başka yöntemler de vardır**** ama en yoğun şekilde kullanılan üç ana yöntem bunlardır.

    user-user cf'de (user based collaborative filtering diye de geçer) ana amaç birbirlerine benzeyen kullanıcıları bulmaktır. örneğin ali isimli bir kullanıcıya film önerisinde bulunacağımızı varsayalım. mehmet isimli bir başka kullanıcının zevkinin ali'nin zevkiyle neredeyse tıpatıp aynı olduğunu bulduğumuz anda mehmet'in beğendiği bir filmi ali'nin de beğeneceği tahminini yapmak yanlış olmaz. istisnalar elbette olacaktır ama mehmet'in beğendiği bir şeyi yüksek ihtimalle ali de beğenir. veya aynı mantıkla bir şeyi ali beğenmediyse mehmet de muhtemelen beğenmez, ali beğendiyse mehmet de beğenir.

    item-item cf'de (item based collaborative filtering diye de geçer) ise ana amaç birbirlerine benzeyen item'ları bulmaktır. örneğin yine filmler için konuşalım, ali'nin the godfather'ı çok sevdiğini biliyorsak the godfather 2'yi de beğeneceğini varsayabiliriz. aynı şekilde matrix'in ilk filmini hiç ama hiç sevmediyse matrix'in ikinci filmini ali'ye önermemiz doğru olmaz. çünkü bu filmler yani item'lar birbirlerine benzemektedirler ve kullanıcı bu iki filmden birini sevmemektedir, diğerini de yüksek ihtimalle sevmez.

    peki sisteme input olarak verdiğimiz user veya item bilgilerini işbirliği içine sokarak yeni ve işimize yarar bilgileri yani tahminleri nasıl elde ediyoruz? bunun için item'lar veya user'lar arasındaki benzerlikleri hesaplıyoruz. collaborative filtering'de benzerlik hesaplama için kullanılan popüler ve efektif iki ana yöntem bulunmaktadır; pearson correlation ve cosine similarity. başka yöntemler de elbette var ama en çok kullanılan iki ana yöntem bunlar. aşağıda bulabileceğiniz bağlantılarda bunların nasıl çalıştığı ayrıntılı olarak anlatılıyor. bu yöntemlerle benzerlikler hesaplanıyor ve birbirine benzeyen kullanıcıları veya item'ları artık bildiğimiz için tahminler oluşturabiliyoruz. bu noktadan sonra geriye pek bir iş kalmıyor. artık sadece yaptığımız çıkarımlara dayanarak bir tahminde bulunup kullanıcıya öneri sunmak kalıyor. "ali ile mehmet'in zevkleri neredeyse aynı, ali american gangster'i çok beğenmiş, mehmet de bu filmi henüz izlememiş, o zaman mehmet'e american gangster'i önerelim" gibi.

    şimdi bu konuyla ilk defa tanışmış ve bu konuda çalışmak isteyip de nasıl başlayacağına karar veremeyenlere naçizane bir kaç önerim var. öncelikle dataset konusunda şanslıyız. yukarıda anlattığım tüm işlemleri yaparak cf kullanan, bunun yanında başka yöntemler de kullanarak film önerisinde bulunan movielens'in yaratıcıları olan minnesota üniversitesi'nden bir grup araştırmacının yer aldığı grouplens ellerindeki harika dataset'leri public olarak şurada paylaşıyorlar. netflix de vakti zamanında netflix prize isimli bir yarışma düzenlemiş ve kendi kullandıkları öneri sistemini en yüksek oranda iyileştiren ekibe 1 milyon dolar ödül vermişti. bu yarışma zamanında paylaştıkları dataseti bulabilirsiniz.

    programlama dili olarak ben java kullandım. algoritmalar belli zaten, kodlanmasında pek sıkıntı yaşamazsınız ama aşina olduğunuz bir dil olması daha iyi olur. bir de apache mahout'a göz atmanız yararınıza olur. ne işe yaradığını öğrenmek için şöyle buyuruverin.

    faydalı bulduğum paper'lar ve survey'ler şunlar (daha fazlasını google scholar'dan rahatlıkla bulabilirsiniz tabi, kaynak çok ama benim faydalı bulduklarım bunlar):

    collaborative filtering recommender systems - bu bana çok yardımcı oldu, oldukça iyi, hatta tek başına yeterli.
    item-based collaborative filtering
    http://arxiv.org/…p/arxiv/papers/1301/1301.7363.pdf - empirical analysis of predictive algorithms for cf
    http://www-users.cs.umn.edu/…herlocker-tois2004.pdf - evaluating collaborative filtering recommender systems