Hello, my name is Christian Rudder, and I was one of the founders of OkCupid. It's now one of the biggest dating sites in the United States. Like most everyone at the site, I was a math major, As you may expect, we're known for the analytic approach we take to love. We call it our matching algorithm. Basically, OkCupid's matching algorithm helps us decide whether two people should go on a date. We built our entire business around it. Now, algorithm is a fancy word, and people like to drop it like it's this big thing. But really, an algorithm is just a systematic, step-by-step way to solve a problem. It doesn't have to be fancy at all. Here in this lesson, I'm going to explain how we arrived at our particular algorithm, so you can see how it's done. Now, why are algorithms even important? Why does this lesson even exist? Well, notice one very significant phrase I used above: they are a step-by-step way to solve a problem, and as you probably know, computers excel at step-by-step processes. A computer without an algorithm is basically an expensive paperweight. And since computers are such a pervasive part of everyday life, algorithms are everywhere. The math behind OkCupid's matching algorithm is surprisingly simple. It's just some addition, multiplication, a little bit of square roots. The tricky part in designing it was figuring out how to take something mysterious, human attraction, and break it into components that a computer can work with. The first thing we needed to match people up was data, something for the algorithm to work with. The best way to get data quickly from people is to just ask for it. So we decided that OkCupid should ask users questions, stuff like, "Do you want to have kids one day?" "How often do you brush your teeth?" "Do you like scary movies?" And big stuff like, "Do you believe in God?" Now, a lot of the questions are good for matching like with like, that is, when both people answer the same way. For example, two people who are both into scary movies are probably a better match than one person who is and one who isn't. But what about a question like, "Do you like to be the center of attention?" If both people in a relationship are saying yes to this, they're going to have massive problems. We realized this early on, and so we decided we needed a bit more data from each question. We had to ask people to specify not only their own answer, but the answer they wanted from someone else. That worked really well. But we needed one more dimension. Some questions tell you more about a person than others. For example, a question about politics, something like, "Which is worse: book burning or flag burning?" might reveal more about someone than their taste in movies. And it doesn't make sense to weigh all things equally, so we added one final data point. For everything that OkCupid asks you, you have a chance to tell us the role it plays in your life. And this ranges from irrelevant to mandatory. So now, for every question, we have three things for our algorithm: first, your answer; second, how you want someone else -- your potential match -- to answer; and third, how important the question is to you at all. With all this information, OkCupid can figure out how well two people will get along. The algorithm crunches the numbers and gives us a result. As a practical example, let's look at how we'd match you with another person. Let's call him "B." Your match percentage with B is based on questions you've both answered. Let's call that set of common questions "s." As a very simple example, we use a small set "s" with just two questions in common, and compute a match from that. Here are our two example questions. The first one, let's say, is, "How messy are you?" And the answer possibilities are: very messy, average and very organized. And let's say you answered "very organized," and you'd like someone else to answer "very organized," and the question is very important to you. Basically, you're a neat freak. You're neat, you want someone else to be neat, and that's it. And let's say B is a little bit different. He answered "very organized" for himself, but "average" is OK with him as an answer from someone else, and the question is only a little important to him. Let's look at the second question, from our previous example: "Do you like to be the center of attention?" The answers are "yes" and "no." You've answered "no," you want someone else to answer "no," and the question is only a little important to you. Now B, he's answered "yes." He wants someone else to answer "no," because he wants the spotlight on him, and the question is somewhat important to him. So, let's try to compute all of this. Our first step is, since we use computers to do this, we need to assign numerical values to ideas like "somewhat important" and "very important," because computers need everything in numbers. We at OkCupid decided on the following scale: "Irrelevant" is worth 0. "A little important" is worth 1. "Somewhat important" is worth 10. "Very important" is 50. And "absolutely mandatory" is 250. Next, the algorithm makes two simple calculations. The first is: How much did B's answers satisfy you? That is, how many possible points did B score on your scale? Well, you indicated that B's answer to the first question, about messiness, was very important to you. It's worth 50 points and B got that right. The second question is worth only 1, because you said it was only a little important. B got that wrong, so B's answers were 50 out of 51 possible points. That's 98% satisfactory. Pretty good. The second question the algorithm looks at is: How much did you satisfy B? Well, B placed 1 point on your answer to the messiness question and 10 on your answer to the second. Of those 11, that's 1 plus 10, you earned 10 -- you guys satisfied each other on the second question. So your answers were 10 out of 11 equals 91 percent satisfactory to B. That's not bad. The final step is to take these two match percentages and get one number for the both of you. To do this, the algorithm multiplies your scores, then takes the nth root, where "n" is the number of questions. Because s, which is the number of questions in this sample, is only 2, we have: match percentage equals the square root of 98 percent times 91 percent. That equals 94 percent. That 94 percent is your match percentage with B. It's a mathematical expression of how happy you'd be with each other, based on what we know. Now, why does the algorithm multiply, as opposed to, say, average the two match scores together, and do the square-root business? In general, this formula is called the geometric mean. It's a great way to combine values that have wide ranges and represent very different properties. In other words, it's perfect for romantic matching. You've got wide ranges and you've got tons of different data points, like I said, about movies, politics, religion -- everything. Intuitively, too, this makes sense. Two people satisfying each other 50 percent should be a better match than two others who satisfy 0 and 100, because affection needs to be mutual. After adding a little correction for margin of error, in the case where we have a small number of questions, like we do in this example, we're good to go. Any time OkCupid matches two people, it goes through the steps we just outlined. First it collects data about your answers, then it compares your choices and preferences to other people's in simple, mathematical ways. This, the ability to take real-world phenomena and make them something a microchip can understand, is, I think, the most important skill anyone can have these days. Like you use sentences to tell a story to a person, you use algorithms to tell a story to a computer. If you learn the language, you can go out and tell your stories. I hope this will help you do that.
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.