İçeriğe geç
Seçkin Can Şahin
FacebookYazılım Mühendisliği StajyeriHaziran 2011 – Eylül 2011Palo AltoTamamlandı

Arkadaş sayısı tıklamayı tahmin ediyordu

Facebook’un Reklam Optimizasyonu ekibinde tıklama oranı tahmin modelini iyileştirdim. Arkadaş sayısının tahmini düzelttiğini fark ettim; buradan çıkan 11 yeni öznitelik eski modeli belirgin biçimde geçti.

Bulduğum 11 sosyal öznitelik eski tıklama oranı modelini belirgin biçimde geçti; sonuçlar ekibi Sponsored Stories için ayrı bir CTR modeli geliştirmeye ikna etti.

Rakamlarla Facebook

Bulduğum yeni öznitelik
11
Her şeyi başlatan değişken
Arkadaş sayısı
Değişen ürün kararı
Sponsored Stories için ayrı CTR modeli

Haziran 2011’de Palo Alto’da, Facebook’un Reklam Optimizasyonu ekibine stajyer olarak girdim. Ekibin işi tek bir soruya bakıyordu: bu reklam bu kişiye gösterilirse tıklanır mı? Tıklama oranı tahmini (CTR estimation) bu sorunun sayıya dönüşmüş hâlidir. Model bir reklamı ve bir kişiyi alır, aradaki olasılığı kestirir.

Bana verilen iki iş vardı. Birincisi mevcut tıklama oranı tahmin modelini iyileştirmek, ikincisi yeni bir Dağıtım Optimizasyonu Modeli tasarlayıp geliştirmekti. Bu sayfa birincisini anlatıyor, çünkü stajdan geriye kalan asıl şey oradan çıktı.

Facebook reklam yöneticisinde bir kampanya ekranı
Reklam yöneticisinin o dönemki arayüzü: erişim, sıklık, tıklama ve tıklama oranı. Modelin çıktısı reklamverene burada, tek bir sütun olarak görünüyordu. Bu kare benim ekranım değil, üzerinde çalıştığım ürünün kendisi.

Modelin bakmadığı yer

Bir tahmin modeli, elindeki özniteliklere (feature) bakarak çalışır: reklam hakkında bilinenler, kişi hakkında bilinenler, ikisinin geçmişteki davranışı. İlk haftalar bu listeyi okumakla geçti. Listeyi okumak kolaydı, eksiği görmek değildi — orada olmayan şey görünmez.

Bir yaz önce UCLA’da, IPAM ile IBM Research’ün ortak projesinde mikrobloglarda konu tespiti ve nedensel etki modellemesi üzerine çalışmıştım. Sosyal ağ verisine ilk kez orada, reklam diye bir derdim yokken bakmıştım. Facebook’taki listede beni rahatsız eden şey de o alışkanlıktan geldi: model kişiyi tanıyordu, kişinin çevresini tanımıyordu.

Arkadaş sayısı

Fark ettiğim şey basitti. Bir kullanıcının arkadaş sayısı, o kullanıcının tıklama oranını tahmin etmeye yarıyordu. Modelde böyle bir değişken yoktu.

Arkasındaki mantık, bulgunun kendisinden daha önemliydi. Bir sosyal ağın elindeki en ayırt edici bilgi, kişinin ağ içindeki konumudur; yaşı ya da ilgi alanları değil. Arkadaş sayısı da o konumun en kaba ölçüsüdür. Kaba olması işe yaradı: pahalı bir hesap değildi, her kullanıcı için zaten duruyordu ve modele eklenmesi günler almıyordu. Buna rağmen tahmini düzeltiyordu.

Neden işe yaradığını kesin olarak söyleyemem; model bunu size söylemez, yalnızca tahmininin düzeldiğini gösterir. Makul açıklaması şu: arkadaş sayısı tek başına birkaç şeyin vekilidir — platformda ne kadar zamandır olduğunuzun, orada ne kadar vakit geçirdiğinizin, gördüğünüz şeyin ne kadarının tanıdığınız insanlardan geldiğinin. Bunların hiçbiri modele ayrı ayrı girmiyordu; arkadaş sayısı hepsini tek bir sayının içinde taşıyordu.

Ucuz bir değişkenin ölçülebilir bir iyileşme getirmesi, tek başına bir kazanç değildir. Bir yön işaretidir. Anlamı şudur: bu tarafa hiç bakılmamış.

On bir öznitelik

Bulgudan sonra sosyal öznitelik çıkarımı çalışmasını ben yürüttüm. İş, kişinin ağdaki konumundan, her kullanıcı için hesaplanabilen ve modele doğrudan girebilen sayılar türetmekti. Elemeden geçenlerin sayısı 11’di ve bu 11 yeni öznitelik eski modele göre ciddi bir iyileşme sağladı. Hepsinin ortak yanı aynıydı: kişinin kendisinden değil, çevresinden geliyorlardı.

Bir özniteliğin modele girmeye hak kazanması için üç şeyi birden geçmesi gerekir. Birincisi, her kullanıcı için var olacak; yarısında boş kalan bir sütun tahmini iyileştirmez, gürültü ekler. İkincisi, tahmin anında hesaplanabilecek kadar ucuz olacak. Üçüncüsü, modelde zaten duran bir şeyin başka kılıktaki hâli olmayacak. Eleme çoğunlukla üçüncüde oluyor: bulduğunuz güzel fikirlerin büyük kısmı, modelin başka bir sütunla zaten bildiği şeydir.

MATLAB ile çizilmiş üç boyutlu bir yüzey ve altında eş yükselti eğrileri
Bir modeli iyileştirmek buna benzer: elinizde tepesini aradığınız bir yüzey vardır ve her yeni öznitelik sizi bir yöne iter. Bu kare arşivde Facebook klasöründe duruyor; çalışmanın doğrudan çıktısı olduğuna dair bir kaydım yok.

Bir ölçümün değiştirdiği karar

Stajın en kalıcı sonucu bir model değil, bir karar oldu. Sonuçlar ekibi, Sponsored Stories için ayrı bir tıklama oranı modeli geliştirmemiz gerektiğine ikna etti. O modelin öznitelik çıkarımını da ben yürüttüm.

Aradaki fark önemli. Bir stajyerin yazdığı kod bir yıl sonra silinmiş olabilir; büyük ihtimalle silinmiştir. Ama bir ölçüm ekibin ne yapacağını değiştirdiyse, o etki koddan uzun yaşar. O stajda öğrendiğim en pahalı şey buydu: bir sayıyı iyileştirmekle bir kararı değiştirmek aynı iş değildir ve ikincisi nadiren sizden istenir.

Bir bulgunun kararı değiştirmesi için doğru olması da yetmiyor. Başkasının aynı sonuca kendi başına ulaşabileceği kadar açık durması ve bitmiş bir iş olarak değil, ekibin önündeki bir seçenek olarak durması gerekiyor.

Sitede on yıl duran bir rakam

Bu sayfanın eski İngilizce hâlinde bir cümle vardı: bu çalışma muhtemelen Facebook’un yıllık gelirini 25 milyon dolardan fazla artırdı. Cümleyi ben yazdım ve yıllarca orada durdu.

Rakamı silmek yerine burada anlatmayı seçtim, çünkü hatanın kendisi bulgudan daha öğreticiydi. Kendi işinizin etkisini kendiniz tahmin ettiğinizde, tahmin her zaman yukarı doğru sapar. Sapmayı fark etmenin tek yolu, rakamın hangi adımlardan geçtiğini yazabilmektir. Yazamıyorsanız elinizde bir rakam yoktur, bir izlenim vardır.

Eylül 2011’den sonra

Eylül 2011’de staj bitti. Ekim 2011’de Ankara’ya döndüm ve Özgür Saygın Bican ile Drawium’u kurdum. Aralık 2011’de Palo Alto’ya bir kez daha gittim: Facebook’un ABD geneli kolej hackathon finalinde dördüncü olduk.

Facebook’tan çıkarken yanımda götürdüğüm şey bir teknik yöntem değildi. Şuydu: bir modelin en büyük eksiği genellikle modelin baktığı listenin içinde değil, dışındadır. Bir kullanıcının kaç arkadaşı olduğu, o listeye girmeyecek kadar sıradan bir bilgiydi — ve tam da sıradan olduğu için kimse ona bakmamıştı.

Bir tahmin modelini iyileştirmenin en ucuz yolu çoğu zaman yeni bir algoritma değil, modele daha önce sorulmamış bir sorudur. O soru da genellikle veri kümesinin içinde değil, kullanıcının hayatında durur.

Teknoloji

  • Makine öğrenmesi
  • Veri analizi
  • Arka uç
  • Ön yüz

Yorumlar

Burada henüz kimse konuşmamış. İlk sözü siz söyleyin — katılmadığınız yeri yazarsanız daha da iyi.

Yorum yazın

Yorumlar önce bana geliyor. Onayladığımda burada, adınızla birlikte yayımlanıyor.

Yayımlanmaz. Sadece gerekirse size dönebilmek için.