Merhaba, benim adım Christian Rudder ve ben OkCupid'in kurucularından biriydim.
Artık ABD'deki en büyük tanışma sitelerinden biri.
Sitedeki neredeyse herkes gibi ben de matematik bölümündeydim.
Tahmin edebileceğiniz gibi çözümsel yaklaşımlarla biliniriz.
Buna eşleştirme algoritması diyoruz.
Temelde OkCupid'in eşleştirme algoritması
iki kişinin randevuya çıkıp çıkmaması konusunda yardımcı oluyor.
Tüm işimizi bunu temel olarak inşa ettik.
Algoritma süslü bir kelime
ve insanlar bunu büyük bir şeymiş gibi düşünmekten hoşlanıyorlar.
Ama aslında algoritma sadece bir sistematik,
bir sorunu çözmenin kademeli bir yolu.
Süslü olmasına hiç de gerek yok.
Bu derste bu özel algoritmamızı nasıl elde ettiğimizi açıklayacağım,
böylece nasıl yapıldığını da görmüş olacaksınız.
Algoritmalar neden önemli ki?
Bu ders neden var?
Yukarıda kullandığım çok önemli bir ifadeyi fark edin:
Bir sorunu çözmenin kademeli yolunu oluşturuyorlar
ve bildiğiniz gibi bilgisayarlar kademeli işlemlerde çok başarılılar.
Algoritmasız bir bilgisayar sadece pahalı bir ağırlıktan başka bir şey değil
ve bilgisayarlar günlük hayatımızın her tarafını işgal ettiğinden beri
algoritmalar her yerdeler.
OkCupid'in eşleştirme algoritmasının arkasındaki matematik
şaşırtıcı derecede basit.
Sadece biraz toplama, çarpma ve birazcık da karekök.
Onu tasarlarken karışık olan taraf ise gizemli bir şeyi, insan çekiciliğini alıp
bilgisayarın üzerinde çalışabileceği ögelere nasıl ayırabileceğini bulmaktı.
İnsanları eşleştirmek için ihtiyacımız olan ilk şey veriydi,
algoritmanın üzerinde çalışacağı bir şey.
İnsanlardan hızlıca veri elde etmenin en iyi yolu ise sadece sormak.
Bu yüzden OkCupid'in kullanıcılara
"Bir gün çocuk sahibi olmak istiyor musunuz?"
"Ne sıklıkla dişlerinizi fırçalıyorsunuz?"
"Korku filmlerini seviyor musunuz?"
"Tanrı'ya inanıyor musunuz?" gibi önemli sorular sormasına karar verdik.
Soruların çoğu benzeri benzerle eşleştirmek için uygun,
yani her iki kişi de aynı şekilde cevap verirse.
Örneğin, korku filmlerini seven iki kişi
muhtemelen seven biri ve sevmeyen birinden daha iyi bir eşleşmedir.
Peki ya "İlgi odağı olmaktan hoşlanır mısınız?" gibi bir soru?
Eğer bir ilişkide her iki kişi buna evet cevabını veriyorsa
çok büyük sorunları olacaktır.
Bunu erken fark ettik
ve her soruda biraz daha veri elde etmemiz gerektiğine karar verdik.
Sadece kendi cevaplarını değil,
aynı zamanda başkasından almak istedikleri cevabı da belirtmelerini istedik.
Bu, bayağı işe yaradı.
Ama bir boyuta daha ihtiyacımız vardı.
Bazı sorular, biri hakkında diğerlerinden daha fazla şey söyler.
Örneğin, politika hakkındaki bir soru;
"Hangisi daha kötü: Kitabın mı yoksa bayrağın yanması mı?" gibi bir soru
bir kişinin film zevklerinden daha fazla şey ortaya çıkarır
ve her şeyi eşit olarak ölçmek bir anlam ifade etmiyor,
bu yüzden veri göstergesi ekledik.
OkCupid'in size sorduğu her şey için
hayatınızda oynadığı rolü bize anlatma şansınız var
ve bu alakasız ile gerekli şeyler arasında değişiyor.
Her soru için algoritmamız açısından üç şeyimiz var:
İlk olarak, cevabınız;
ikinci olarak, başkasının nasıl cevap vermesini istemeniz --
potansiyel eşiniz --
ve üçüncü olarak, sorunun sizin için ne kadar önemli olması.
Tüm bu bilgilerle birlikte
OkCupid iki kişinin ne kadar iyi geçinebileceğini bulabiliyor.
Algoritma, sayıları inceleyip bize bir sonuç veriyor.
Uygulamalı bir örnek olarak
hadi sizi başka biriyle nasıl eşleştireceğimize bakalım.
Ona "B" diyelim.
B ile olan eşleşme yüzdeniz
ikinizin de cevapladığı soruları baz alıyor.
Ortak sorulara da "s" diyelim.
Çok basit bir örnek olarak
bir grup "s"yi sadece iki ortak soruyla kullanıyoruz
ve bundan bir eşleşme çıkartıyoruz.
İşte iki örnek sorumuz.
İlki diyelim ki "Ne kadar dağınıksın?"
ve cevap olasılıkları da şunlar:
Çok dağınık, ortalama ve çok düzenli.
"Çok düzenli" olarak cevapladığınızı,
başkasının da "çok düzenli" olarak cevaplamasını istediğinizi
ve sorunun sizin için çok önemli olduğunu varsayalım.
Yani temizlik delisisiniz.
Düzenlisiniz, başkasının da düzenli olmasını istiyorsunuz, hepsi bu
ve B'nin biraz farklı olduğunu varsayalım.
Kendisini "çok düzenli" olarak cevapladı
ama başkasının "ortalama" cevabı onun için yeterli
ve sorunun onun için çok da bir önemi yok.
Önceki örneğimizden ikinci soruya bakalım.
"İlgi odağı olmaktan hoşlanır mısınız?"
Cevap ya "evet" ya da "hayır."
"Hayır"ı cevapladınız, başkasının da "hayır"ı cevaplamasını istiyorsunuz
ve sorunun sizin için çok da bir önemi yok.
B "evet"i cevapladı.
Başkasının da "hayır"ı cevaplamasını istiyor
çünkü tüm ilginin onda olmasını istiyor
ve soru onun için bir miktar önemli.
Şimdi tüm bunları hesaplamaya çalışalım.
İlk adımımız, bunu yapmak için bilgisayarları kullandığımızdan dolayı,
"bir miktar önemli" ve "çok önemli" gibi düşüncelere sayısal değerler vermeliyiz
çünkü bilgisayar her şeye sayı biçiminde ihtiyaç duyar.
OkCupid için şu ölçekte karar kıldık:
"Alakasız" 0 değerinde.
"Biraz önemli" 1 değerinde.
"Bir miktar önemli" 10 değerinde.
"Çok önemli" 50 değerinde.
"Kesinlikle gerekli" 250 değerinde.
Daha sonrasında algoritma iki basit hesaplama yapıyor.
İlki "B'nin cevapları sizi ne kadar tatmin etti?"
Yani B sizin ölçeğinizde ne kadar olası puan topladı?
B'nin ilk soruya, dağınıklık hakkındaki soruya olan cevabının,
sizin için çok önemli olduğunu belirttiniz.
50 puan değerinde ve B bunu bildi.
İkinci soru ise sadece 1 puan değerinde çünkü biraz önemli olduğunu söylediniz,
B bunu bilemedi,
dolayısıyla B'nin cevapları 51 olası puan üzerinden 50.
Bu %98 oranında tatmin edici, çok iyi.
Algoritmanın göz önünde bulundurduğu ikinci soru ise şu:
B'yi ne kadar tatmin ettiniz?
B, dağınıklık sorusuna olan cevabınıza 1 puan verdi
ve ikincisine de 10 puan verdi.
Bu 11 puanın, 1 ile 10'un toplamı, 10 puan kazandınız --
ikinci soruda birbirinizi cevabınızla tatmin ettiniz.
11 üzerinden 10 puan olan cevaplarınız B için %91 oranında tatmin edici.
Fena değil.
Son adım, bu iki eşleşme yüzdelerini alıp
ikiniz için de tek bir sayı elde etmek.
Bunu yapmak için algoritma puanlarınızı çarpıyor,
sonra n dereceden kökünü alıyor,
"n" soru sayısını oluşturuyor.
S, - ki bu örnekte soru sayısını oluşturuyor -
sadece 2 olduğundan dolayı
hesap şöyle:
eşleşme yüzdesi yüzde 98 ile yüzde 91'in çarpımının kare köküne denk geliyor.
Bu da yüzde 94'e denk geliyor.
Bu 94'lük yüzde, B ile olan eşleşme yüzdeniz.
Bildiklerimize dayanarak
birbirinizle ne kadar mutlu olabileceğinizin matematiksel ifadesi.
Peki algoritma neden iki eşleşme puanının ortalamasını almak yerine
çarpıyor ve kare kökünü alıyor?
Genel olarak bu formüle geometrik ortalama deniyor.
Geniş aralığı olan değerleri birleştirmek
ve farklı nitelikleri temsil etmek için harika bir yol.
Diğer bir ifadeyle romantik eşleştirme için mükemmel.
Geniş aralıklarınız ve tonlarca farklı veri göstergeniz var,
dediğim gibi filmler, politika, din -- her şey hakkında veri göstergeniz var.
Sezgisel olarak bu çok mantıklı.
Yüzde 50 oranında birbirini tatmin eden iki insan
0 ile 100 oranında tatmin eden diğer iki kişiden daha iyi bir eşleşme olmalı
çünkü sevgi karşılıklı olmalı.
Yanılma payı için biraz düzeltme ekledikten sonra,
bu durumda az sayıda sorumuz var,
bu örnekte yaptığımız gibi,
devam edebiliriz.
OkCupid iki kişiyi her eşleştirdiğinde
henüz özetlediğimiz adımlardan geçiyor.
İlk olarak cevaplarınız hakkındaki veriyi topluyor,
sonra tercihlerinizi ve diğer insanların tercihlerini
basit, matematiksel yollarla karşılaştırıyor.
Bu, gerçek dünya olgusunu alıp
onu bir mikroçipin anlayabileceği bir şeye dönüştürme kabiliyeti,
bence birinin bu günlerde sahip olabileceği en önemli yetenek.
Birine bir hikâye anlatmak için cümleleri kullandığınız gibi
bilgisayara hikâye anlatmak için algoritmaları kullanıyorsunuz.
Dili öğrenirseniz çıkıp hikâyelerinizi anlatabilirsiniz.
Umarım bu yardımcı olacak.