WEBVTT 00:00:17.903 --> 00:00:21.800 Merhaba, benim adım Christian Rudder ve ben OkCupid'in kurucularından biriydim. 00:00:21.800 --> 00:00:24.332 Artık ABD'deki en büyük tanışma sitelerinden biri. 00:00:24.332 --> 00:00:27.231 Sitedeki neredeyse herkes gibi ben de matematik bölümündeydim. 00:00:27.231 --> 00:00:30.061 Tahmin edebileceğiniz gibi çözümsel yaklaşımlarla biliniriz. 00:00:30.061 --> 00:00:31.783 Buna eşleştirme algoritması diyoruz. 00:00:31.783 --> 00:00:33.745 Temelde OkCupid'in eşleştirme algoritması 00:00:33.745 --> 00:00:36.779 iki kişinin randevuya çıkıp çıkmaması konusunda yardımcı oluyor. 00:00:36.779 --> 00:00:38.741 Tüm işimizi bunu temel olarak inşa ettik. 00:00:38.741 --> 00:00:40.445 Algoritma süslü bir kelime 00:00:40.445 --> 00:00:43.494 ve insanlar bunu büyük bir şeymiş gibi düşünmekten hoşlanıyorlar. 00:00:43.494 --> 00:00:45.760 Ama aslında algoritma sadece bir sistematik, 00:00:45.760 --> 00:00:47.793 bir sorunu çözmenin kademeli bir yolu. 00:00:47.817 --> 00:00:49.994 Süslü olmasına hiç de gerek yok. 00:00:50.018 --> 00:00:53.419 Bu derste bu özel algoritmamızı nasıl elde ettiğimizi açıklayacağım, 00:00:53.419 --> 00:00:55.660 böylece nasıl yapıldığını da görmüş olacaksınız. 00:00:55.660 --> 00:00:57.594 Algoritmalar neden önemli ki? 00:00:57.618 --> 00:00:59.198 Bu ders neden var? 00:00:59.222 --> 00:01:02.602 Yukarıda kullandığım çok önemli bir ifadeyi fark edin: 00:01:02.602 --> 00:01:05.049 Bir sorunu çözmenin kademeli yolunu oluşturuyorlar 00:01:05.049 --> 00:01:08.471 ve bildiğiniz gibi bilgisayarlar kademeli işlemlerde çok başarılılar. 00:01:08.471 --> 00:01:12.532 Algoritmasız bir bilgisayar sadece pahalı bir ağırlıktan başka bir şey değil 00:01:12.532 --> 00:01:15.845 ve bilgisayarlar günlük hayatımızın her tarafını işgal ettiğinden beri 00:01:15.845 --> 00:01:17.392 algoritmalar her yerdeler. 00:01:17.830 --> 00:01:20.611 OkCupid'in eşleştirme algoritmasının arkasındaki matematik 00:01:20.611 --> 00:01:21.811 şaşırtıcı derecede basit. 00:01:21.811 --> 00:01:25.813 Sadece biraz toplama, çarpma ve birazcık da karekök. 00:01:25.837 --> 00:01:30.270 Onu tasarlarken karışık olan taraf ise gizemli bir şeyi, insan çekiciliğini alıp 00:01:30.270 --> 00:01:33.848 bilgisayarın üzerinde çalışabileceği ögelere nasıl ayırabileceğini bulmaktı. 00:01:33.848 --> 00:01:36.699 İnsanları eşleştirmek için ihtiyacımız olan ilk şey veriydi, 00:01:36.699 --> 00:01:38.715 algoritmanın üzerinde çalışacağı bir şey. 00:01:38.715 --> 00:01:41.947 İnsanlardan hızlıca veri elde etmenin en iyi yolu ise sadece sormak. 00:01:41.947 --> 00:01:44.624 Bu yüzden OkCupid'in kullanıcılara 00:01:44.624 --> 00:01:46.905 "Bir gün çocuk sahibi olmak istiyor musunuz?" 00:01:46.905 --> 00:01:48.923 "Ne sıklıkla dişlerinizi fırçalıyorsunuz?" 00:01:48.923 --> 00:01:50.595 "Korku filmlerini seviyor musunuz?" 00:01:50.595 --> 00:01:53.992 "Tanrı'ya inanıyor musunuz?" gibi önemli sorular sormasına karar verdik. 00:01:53.992 --> 00:01:56.777 Soruların çoğu benzeri benzerle eşleştirmek için uygun, 00:01:56.777 --> 00:01:59.111 yani her iki kişi de aynı şekilde cevap verirse. 00:01:59.111 --> 00:02:01.659 Örneğin, korku filmlerini seven iki kişi 00:02:01.683 --> 00:02:05.004 muhtemelen seven biri ve sevmeyen birinden daha iyi bir eşleşmedir. 00:02:05.028 --> 00:02:08.521 Peki ya "İlgi odağı olmaktan hoşlanır mısınız?" gibi bir soru? 00:02:08.521 --> 00:02:11.283 Eğer bir ilişkide her iki kişi buna evet cevabını veriyorsa 00:02:11.283 --> 00:02:13.376 çok büyük sorunları olacaktır. 00:02:13.400 --> 00:02:14.645 Bunu erken fark ettik 00:02:14.645 --> 00:02:17.882 ve her soruda biraz daha veri elde etmemiz gerektiğine karar verdik. 00:02:17.882 --> 00:02:19.445 Sadece kendi cevaplarını değil, 00:02:19.445 --> 00:02:23.014 aynı zamanda başkasından almak istedikleri cevabı da belirtmelerini istedik. 00:02:23.014 --> 00:02:24.439 Bu, bayağı işe yaradı. 00:02:24.439 --> 00:02:26.251 Ama bir boyuta daha ihtiyacımız vardı. 00:02:26.251 --> 00:02:29.318 Bazı sorular, biri hakkında diğerlerinden daha fazla şey söyler. 00:02:29.318 --> 00:02:31.173 Örneğin, politika hakkındaki bir soru; 00:02:31.173 --> 00:02:34.579 "Hangisi daha kötü: Kitabın mı yoksa bayrağın yanması mı?" gibi bir soru 00:02:34.579 --> 00:02:37.353 bir kişinin film zevklerinden daha fazla şey ortaya çıkarır 00:02:37.353 --> 00:02:39.972 ve her şeyi eşit olarak ölçmek bir anlam ifade etmiyor, 00:02:39.972 --> 00:02:41.686 bu yüzden veri göstergesi ekledik. 00:02:41.686 --> 00:02:43.710 OkCupid'in size sorduğu her şey için 00:02:43.734 --> 00:02:46.563 hayatınızda oynadığı rolü bize anlatma şansınız var 00:02:46.563 --> 00:02:49.066 ve bu alakasız ile gerekli şeyler arasında değişiyor. 00:02:49.446 --> 00:02:52.668 Her soru için algoritmamız açısından üç şeyimiz var: 00:02:52.692 --> 00:02:54.044 İlk olarak, cevabınız; 00:02:54.617 --> 00:02:57.441 ikinci olarak, başkasının nasıl cevap vermesini istemeniz -- 00:02:57.441 --> 00:02:58.781 potansiyel eşiniz -- 00:02:58.781 --> 00:03:01.659 ve üçüncü olarak, sorunun sizin için ne kadar önemli olması. 00:03:02.710 --> 00:03:03.962 Tüm bu bilgilerle birlikte 00:03:03.986 --> 00:03:07.104 OkCupid iki kişinin ne kadar iyi geçinebileceğini bulabiliyor. 00:03:07.104 --> 00:03:10.014 Algoritma, sayıları inceleyip bize bir sonuç veriyor. 00:03:10.014 --> 00:03:11.334 Uygulamalı bir örnek olarak 00:03:11.334 --> 00:03:14.023 hadi sizi başka biriyle nasıl eşleştireceğimize bakalım. 00:03:14.023 --> 00:03:15.152 Ona "B" diyelim. 00:03:16.023 --> 00:03:17.469 B ile olan eşleşme yüzdeniz 00:03:17.469 --> 00:03:19.529 ikinizin de cevapladığı soruları baz alıyor. 00:03:19.529 --> 00:03:22.106 Ortak sorulara da "s" diyelim. 00:03:22.559 --> 00:03:23.857 Çok basit bir örnek olarak 00:03:23.857 --> 00:03:26.573 bir grup "s"yi sadece iki ortak soruyla kullanıyoruz 00:03:26.597 --> 00:03:28.425 ve bundan bir eşleşme çıkartıyoruz. 00:03:28.449 --> 00:03:30.120 İşte iki örnek sorumuz. 00:03:30.144 --> 00:03:32.525 İlki diyelim ki "Ne kadar dağınıksın?" 00:03:32.549 --> 00:03:34.645 ve cevap olasılıkları da şunlar: 00:03:34.669 --> 00:03:38.030 Çok dağınık, ortalama ve çok düzenli. 00:03:38.030 --> 00:03:39.834 "Çok düzenli" olarak cevapladığınızı, 00:03:39.834 --> 00:03:42.762 başkasının da "çok düzenli" olarak cevaplamasını istediğinizi 00:03:42.762 --> 00:03:45.262 ve sorunun sizin için çok önemli olduğunu varsayalım. 00:03:45.262 --> 00:03:46.502 Yani temizlik delisisiniz. 00:03:46.502 --> 00:03:49.680 Düzenlisiniz, başkasının da düzenli olmasını istiyorsunuz, hepsi bu 00:03:49.680 --> 00:03:51.699 ve B'nin biraz farklı olduğunu varsayalım. 00:03:51.699 --> 00:03:53.688 Kendisini "çok düzenli" olarak cevapladı 00:03:53.712 --> 00:03:56.719 ama başkasının "ortalama" cevabı onun için yeterli 00:03:56.743 --> 00:03:59.145 ve sorunun onun için çok da bir önemi yok. 00:03:59.169 --> 00:04:02.062 Önceki örneğimizden ikinci soruya bakalım. 00:04:02.086 --> 00:04:04.032 "İlgi odağı olmaktan hoşlanır mısınız?" 00:04:04.032 --> 00:04:05.610 Cevap ya "evet" ya da "hayır." 00:04:05.610 --> 00:04:08.983 "Hayır"ı cevapladınız, başkasının da "hayır"ı cevaplamasını istiyorsunuz 00:04:08.983 --> 00:04:11.014 ve sorunun sizin için çok da bir önemi yok. 00:04:11.014 --> 00:04:12.759 B "evet"i cevapladı. 00:04:12.759 --> 00:04:14.804 Başkasının da "hayır"ı cevaplamasını istiyor 00:04:14.804 --> 00:04:17.049 çünkü tüm ilginin onda olmasını istiyor 00:04:17.049 --> 00:04:19.311 ve soru onun için bir miktar önemli. 00:04:19.335 --> 00:04:21.334 Şimdi tüm bunları hesaplamaya çalışalım. 00:04:21.722 --> 00:04:25.005 İlk adımımız, bunu yapmak için bilgisayarları kullandığımızdan dolayı, 00:04:25.005 --> 00:04:28.761 "bir miktar önemli" ve "çok önemli" gibi düşüncelere sayısal değerler vermeliyiz 00:04:28.761 --> 00:04:31.460 çünkü bilgisayar her şeye sayı biçiminde ihtiyaç duyar. 00:04:31.460 --> 00:04:33.679 OkCupid için şu ölçekte karar kıldık: 00:04:33.703 --> 00:04:35.809 "Alakasız" 0 değerinde. 00:04:36.173 --> 00:04:38.152 "Biraz önemli" 1 değerinde. 00:04:38.538 --> 00:04:40.347 "Bir miktar önemli" 10 değerinde. 00:04:40.831 --> 00:04:42.585 "Çok önemli" 50 değerinde. 00:04:42.609 --> 00:04:46.221 "Kesinlikle gerekli" 250 değerinde. 00:04:46.245 --> 00:04:48.876 Daha sonrasında algoritma iki basit hesaplama yapıyor. 00:04:48.900 --> 00:04:52.146 İlki "B'nin cevapları sizi ne kadar tatmin etti?" 00:04:52.170 --> 00:04:55.963 Yani B sizin ölçeğinizde ne kadar olası puan topladı? 00:04:55.987 --> 00:04:58.999 B'nin ilk soruya, dağınıklık hakkındaki soruya olan cevabının, 00:04:58.999 --> 00:05:01.787 sizin için çok önemli olduğunu belirttiniz. 00:05:01.787 --> 00:05:04.017 50 puan değerinde ve B bunu bildi. 00:05:04.375 --> 00:05:08.088 İkinci soru ise sadece 1 puan değerinde çünkü biraz önemli olduğunu söylediniz, 00:05:08.088 --> 00:05:09.635 B bunu bilemedi, 00:05:09.659 --> 00:05:12.441 dolayısıyla B'nin cevapları 51 olası puan üzerinden 50. 00:05:12.465 --> 00:05:15.073 Bu %98 oranında tatmin edici, çok iyi. 00:05:15.073 --> 00:05:17.800 Algoritmanın göz önünde bulundurduğu ikinci soru ise şu: 00:05:17.800 --> 00:05:19.276 B'yi ne kadar tatmin ettiniz? 00:05:19.276 --> 00:05:22.329 B, dağınıklık sorusuna olan cevabınıza 1 puan verdi 00:05:22.353 --> 00:05:24.526 ve ikincisine de 10 puan verdi. 00:05:24.745 --> 00:05:28.132 Bu 11 puanın, 1 ile 10'un toplamı, 10 puan kazandınız -- 00:05:28.156 --> 00:05:30.751 ikinci soruda birbirinizi cevabınızla tatmin ettiniz. 00:05:30.775 --> 00:05:35.017 11 üzerinden 10 puan olan cevaplarınız B için %91 oranında tatmin edici. 00:05:35.041 --> 00:05:36.192 Fena değil. 00:05:36.216 --> 00:05:38.723 Son adım, bu iki eşleşme yüzdelerini alıp 00:05:38.747 --> 00:05:40.613 ikiniz için de tek bir sayı elde etmek. 00:05:40.637 --> 00:05:43.248 Bunu yapmak için algoritma puanlarınızı çarpıyor, 00:05:43.272 --> 00:05:44.937 sonra n dereceden kökünü alıyor, 00:05:44.961 --> 00:05:47.144 "n" soru sayısını oluşturuyor. 00:05:47.144 --> 00:05:49.617 S, - ki bu örnekte soru sayısını oluşturuyor - 00:05:49.617 --> 00:05:51.887 sadece 2 olduğundan dolayı 00:05:51.887 --> 00:05:53.026 hesap şöyle: 00:05:53.026 --> 00:05:58.472 eşleşme yüzdesi yüzde 98 ile yüzde 91'in çarpımının kare köküne denk geliyor. 00:05:58.496 --> 00:06:00.280 Bu da yüzde 94'e denk geliyor. 00:06:00.304 --> 00:06:03.508 Bu 94'lük yüzde, B ile olan eşleşme yüzdeniz. 00:06:03.508 --> 00:06:04.885 Bildiklerimize dayanarak 00:06:04.885 --> 00:06:08.006 birbirinizle ne kadar mutlu olabileceğinizin matematiksel ifadesi. 00:06:08.006 --> 00:06:11.734 Peki algoritma neden iki eşleşme puanının ortalamasını almak yerine 00:06:11.734 --> 00:06:14.303 çarpıyor ve kare kökünü alıyor? 00:06:14.303 --> 00:06:16.832 Genel olarak bu formüle geometrik ortalama deniyor. 00:06:16.832 --> 00:06:18.793 Geniş aralığı olan değerleri birleştirmek 00:06:18.793 --> 00:06:21.422 ve farklı nitelikleri temsil etmek için harika bir yol. 00:06:21.422 --> 00:06:23.933 Diğer bir ifadeyle romantik eşleştirme için mükemmel. 00:06:23.933 --> 00:06:26.800 Geniş aralıklarınız ve tonlarca farklı veri göstergeniz var, 00:06:26.800 --> 00:06:30.592 dediğim gibi filmler, politika, din -- her şey hakkında veri göstergeniz var. 00:06:30.616 --> 00:06:32.454 Sezgisel olarak bu çok mantıklı. 00:06:32.478 --> 00:06:35.253 Yüzde 50 oranında birbirini tatmin eden iki insan 00:06:35.277 --> 00:06:39.229 0 ile 100 oranında tatmin eden diğer iki kişiden daha iyi bir eşleşme olmalı 00:06:39.253 --> 00:06:41.067 çünkü sevgi karşılıklı olmalı. 00:06:41.091 --> 00:06:43.582 Yanılma payı için biraz düzeltme ekledikten sonra, 00:06:43.606 --> 00:06:46.177 bu durumda az sayıda sorumuz var, 00:06:46.201 --> 00:06:47.518 bu örnekte yaptığımız gibi, 00:06:47.542 --> 00:06:48.714 devam edebiliriz. 00:06:48.738 --> 00:06:50.650 OkCupid iki kişiyi her eşleştirdiğinde 00:06:50.674 --> 00:06:52.706 henüz özetlediğimiz adımlardan geçiyor. 00:06:52.706 --> 00:06:55.144 İlk olarak cevaplarınız hakkındaki veriyi topluyor, 00:06:55.144 --> 00:06:57.698 sonra tercihlerinizi ve diğer insanların tercihlerini 00:06:57.698 --> 00:06:59.999 basit, matematiksel yollarla karşılaştırıyor. 00:07:00.023 --> 00:07:02.266 Bu, gerçek dünya olgusunu alıp 00:07:02.266 --> 00:07:05.385 onu bir mikroçipin anlayabileceği bir şeye dönüştürme kabiliyeti, 00:07:05.409 --> 00:07:08.526 bence birinin bu günlerde sahip olabileceği en önemli yetenek. 00:07:08.526 --> 00:07:11.347 Birine bir hikâye anlatmak için cümleleri kullandığınız gibi 00:07:11.347 --> 00:07:14.349 bilgisayara hikâye anlatmak için algoritmaları kullanıyorsunuz. 00:07:14.349 --> 00:07:16.962 Dili öğrenirseniz çıkıp hikâyelerinizi anlatabilirsiniz. 00:07:16.962 --> 00:07:18.559 Umarım bu yardımcı olacak.