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.
Hai, namaku Christian Rudder, dan aku adalah salah satu pendiri OkCupid, dan saat ini salah satu situs kencan terbesar di AS. Seperti sebagian besar orang di situs, aku dari jurusan Matematika, kami dikenal karena pendekatan analitis terkait cinta. Kami menyebutnya algoritma kecocokan. Pada dasarnya, algoritma kecocokan OkCupid membantu memutuskan apakah dua orang perlu berkencan. Kami membangun bisnis di seputar itu. Algoritma adalah kata yang fantastis, dan orang suka memakainya seakan-akan itu keren. Sebenarnya algoritma hanya langkah sistematik untuk memecahkan suatu masalah. Tak mesti fantastis sama sekali. Dalam materi ini, aku akan menjelaskan cara kami membuat algoritma ini, agar kalian dapat memahaminya. Kenapa algoritma menjadi penting? Kenapa sampai ada materi ini? Perhatikan satu frasa penting yang aku gunakan di atas: algoritma adalah langkah-langkah untuk memecahkan masalah, dan kita tahu, komputer unggul dalam proses langkah demi langkah. Sebuah komputer tanpa algoritma hanyalah sebuah pemberat kertas yang mahal. Komputer telah menjadi bagian dari hidup sehari-hari, sehingga algoritma ada di mana-mana. Perhitungan di balik algoritma kecocokan OkCupid sangat sederhana. Hanya penambahan, perkalian, dan sedikit bentuk akar kuadrat. Bagian yang sulit adalah, menemukan cara menyajikan sesuatu yang misterius, daya tarik manusia, dan memecahnya agar dapat diproses oleh komputer. Yang pertama dibutuhkan adalah data, agar algoritma dapat menghitung. Cara terbaik mendapat data dengan cepat adalah dengan memintanya. Kami memutuskan OkCupid akan bertanya pada pengguna, hal-hal seperti, “Apa Anda ingin punya anak?” “Seberapa sering Anda menyikat gigi?” “Apakah Anda suka film seram?” Dan pertanyaan berat seperti, ”Apa Anda percaya Tuhan?” Sebagian pertanyaan bisa dipasangkan atas dasar sama-sama suka, yaitu jika orang memiliki jawaban yang sama. Misalnya, dua orang yang sama-sama menyukai film seram mungkin lebih cocok daripada hanya salah satu yang menyukai film seram. Bagaimana dengan pertanyaan, “Apa Anda suka menjadi pusat perhatian?” Jika dua orang dalam suatu hubungan menjawab “ya”, mereka punya masalah besar. Kami menyadari hal ini, dan kami butuh lebih banyak data untuk tiap pertanyaan. Kami minta orang untuk menjelaskan jawaban mereka, serta jawaban yang diinginkan dari pihak lawan. Itu berhasil. Namun, kami butuh satu dimensi lagi. Pertanyaan tertentu lebih menggambarkan seseorang. Misalnya, pertanyaan tentang politik, seperti: “Mana yang lebih buruk: pembakaran buku atau bendera?” mungkin lebih mengungkap seseorang dibanding selera filmnya. Tidak masuk di akal jika semua diberi bobot yang sama, jadi kami tambahkan data terakhir. Untuk setiap pertanyaan dari OkCupid, kalian memberi tahu seberapa penting hal tersebut, dari tak berpengaruh, hingga wajib ada. Sekarang, untuk tiap pertanyaan, ada tiga hal untuk algoritma kami: pertama, jawaban kalian; kedua, jawaban yang kalian inginkan dari orang lain; dan ketiga, seberapa penting pertanyaan ini bagi kalian. Dengan semua ini, OkCupid dapat menghitung kecocokan antara dua orang. Algoritma menghitung angkanya dan memberi kita kesimpulan. Sebagai contoh, lihat cara kami memasangkan kalian dengan seseorang. Kita sebut saja dia “B”. Persentase kecocokanmu dengan B didasari oleh jawaban kalian. Sebut saja kumpulan pertanyaan itu sebagai “s”. Kita akan menggunakan seperangkat kecil “s” dengan hanya dua pertanyaan, lalu menghitung kecocokannya. Ini contoh pertanyaannya. Pertama, “Seberapa berantakan Anda?” Kemungkinan jawabannya adalah: sangat berantakan, rata-rata, dan sangat rapi. Katakanlah kalian menjawab “sangat rapi”, dan kalian ingin orang lain juga menjawab sama, dan pertanyaan ini sangat penting untuk kalian. Intinya, kalian gila kebersihan. Kalian orang yang rapi, dan menginginkan orang yang serupa. Katakanlah B sedikit berbeda. Dia menjawab dirinya “sangat rapi”, tetapi dia menerima jawaban “rata-rata” dari orang lain, dan pertanyaan ini tak begitu penting baginya. Sekarang lihat pertanyaan kedua, dari contoh sebelumnya: “Anda suka menjadi pusat perhatian?” Jawabannya bisa “ya” atau “tidak”. Kalian menjawab “tidak”, dan ingin orang menjawab yang sama, dan pertanyaan ini tak terlalu penting bagi kalian. Lalu B menjawab “ya”. Dia ingin orang lain menjawab “tidak”, karena dia ingin menjadi pusat perhatian, dan pertanyaan ini penting baginya. Sekarang, coba kita hitung. Langkah pertama, karena kita menggunakan komputer, adalah memberi nilai numerik untuk jawaban “cukup penting” dan “sangat penting”, karena komputer membutuhkan angka. OkCupid memutuskan membuat skala sebagai berikut: “Tak berpengaruh” bernilai 0. “Sedikit penting” bernilai 1. “Cukup penting” bernilai 10. “Sangat penting” bernilai 50. Dan “wajib ada” bernilai 250. Berikutnya, algoritma melakukan dua perhitungan sederhana. Yang pertama: Berapa banyak jawaban B yang memuaskanmu? Maksudnya, berapa banyak skor yang diperoleh B berdasarkan skala kalian? Kalian sudah mengindikasikan jawaban pertama B, terkait kerapian, sangat penting bagimu. Nilainya 50 dan B menjawab dengan benar. Pertanyaan kedua hanya bernilai 1, karena menurut kalian itu tak terlalu penting. B menjawab salah, jadi nilai B adalah 50 dari 51 poin yang mungkin. Jadi nilainya 98%. Lumayan bagus. Pertanyaan kedua yang dilihat algoritma: seberapa besar kalian memuaskan B? B memberi nilai 1 untuk jawaban kalian terkait kerapian, dan 10 untuk jawaban pertanyaan kedua. Dari 11 poin, yaitu 1 ditambah 10, kalian mendapat 10 -- jawaban atas pertanyaan kedua memuaskan kedua pihak. 10 dari 11 poin sama dengan tingkat kepuasan 91% bagi B. Lumayan. Langkah terakhir adalah menyatukan dua persentase ini dan menyajikan satu angka tunggal. Algoritma mengalikan skor kalian berdua, lalu mencari akar ke-n, di mana “n” adalah jumlah pertanyaan. Karena s, yaitu jumlah pertanyaan dalam sampel, hanya ada dua, kita punya: persentase kecocokan sama dengan akar kuadrat dari 98% dikalikan dengan 91%. Hasilnya 94%. Itu adalah persentase kecocokanmu dengan B. Itu adalah eskpresi matematis atas tingkat kebahagiaan kalian menurut informasi yang ada. Kenapa algoritma mengalikan alih-alih merata-ratakan kedua nilai kecocokan, lalu menghitung akar kuadrat? Secara umum, rumus ini disebut rata-rata geometris, baik untuk menggabungkan dua nilai dengan rentang luas yang mewakili hal yang sangat berbeda. Dengan kata lain, sempurna untuk menjodohkan. Kalian punya rentang yang luas dan segudang titik data yang berbeda, tentang film, politik, agama -- semuanya. Secara intuitif, ini juga masuk akal. Dua orang yang saling memuaskan sebesar 50% harusnya lebih berjodoh daripada orang lain yang memuaskan 0 dan 100, karena kasih sayang harus dua arah. Setelah sedikit perbaikan terkait tingkat kesalahan, saat hanya terdapat sedikit pertanyaan, seperti pada contoh tadi, kita siap beraksi. Tiap kali OkCupid menjodohkan dua orang, langkah-langkah tadi akan dijalankan. Mengumpulkan data jawaban kalian, lalu membandingkan pilihan kalian dengan preferensi orang lain, melalui matematika sederhana. Kemampuan untuk menangkap fenomena dunia nyata ini dan membuatnya menjadi sesuatu yang dapat dipahami mikrocip, adalah keterampilan terpenting yang dapat dimiliki saat ini. Ibarat menggunakan kalimat untuk bercerita, algoritma digunakan untuk bercerita pada komputer. Dengan mempelajari bahasanya, kalian bisa berbuat sesuatu. Kuharap ini membantu kalian untuk melakukannya.