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.