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.
Olá, chamo-me Christian Rudder e fui um dos fundadores do OKCupid. É um dos maiores sites de encontros nos EUA. Como quase toda a gente no site, eu sou formado em matemática e somos conhecidos pela abordagem analítica ao amor. Chamamos-lhe o nosso algoritmo casamenteiro. O algoritmo casamenteiro do OKCupid ajuda-nos a decidir se duas pessoas se deveriam encontrar. Construímos todo um negócio à volta disso. Algoritmo é uma palavra cara, e as pessoas gostam de a usar como se fosse uma coisa muito especial, mas não passa de uma maneira sistemática, de resolver um problema passo-a-passo. Não tem que ser nada de especial. Nesta lição, vou explicar como chegamos ao nosso algoritmo em particular para verem como se faz. Porque é que os algoritmos são importantes? Porque é que esta lição existe? Reparem na frase muito significativa que eu usei: são uma maneira de, passo-a-passo, resolver um problema. Como sabem, os computadores são excelentes em processos passo-a-passo. Um computador sem algoritmo não é passa de um pisa-papéis caro. Como os computadores são uma parte dominante do dia-a-dia, os algoritmos estão por todo o lado. A matemática do algoritmo do OKCupid é surpreendentemente simples. É só somar, multiplicar e algumas raízes quadradas. A parte complicada de o desenhar, foi entender como transformar algo misterioso, a atração humana, e decompô-la em componentes com que um computador pudesse trabalhar. Precisávamos de informação para "casar" as pessoas, para que o algoritmo pudesse trabalhar. A melhor forma de conseguir informações das pessoas é pedir-lhas. Portanto, o OKCupid devia fazer perguntas aos utilizadores, como: "Quer vir a ter filhos?" "Com que frequência lava os dentes?", "Gosta de filmes de terror?" e coisas importante como "Acredita em Deus?" Convém haver muitas perguntas para se encontrarem pontos em comum, ou seja, duas pessoas darem a mesma resposta. Por exemplo, duas pessoas que gostam de filmes de terror devem dar-se melhor do que uma que gosta e outra que não. Mas se for uma pergunta como: "Gosta de ser o centro das atenções?" Se as duas pessoas numa relação dizem que sim, então vão ter grandes problemas. Depressa percebemos isto, por isso precisávamos de mais informações em cada pergunta. Pedimos às pessoas para serem específicas na sua resposta e também sobre a resposta que queriam da outra pessoa. Isso resultou muito bem, mas precisávamos de mais uma dimensão. Algumas perguntas dizem mais sobre uma pessoa que outras. Por exemplo, uma pergunta sobre política, tipo: "O que é pior: queimar livros ou queimar a bandeira?" pode ser mais reveladora do que a sua preferência em filmes. Não faz sentido dar o mesmo peso a tudo, portanto adicionámos um novo ponto de informação. Em todas as perguntas que o OKCupid faz, podem dizer-nos o papel que desempenha na vossa vida, Isto varia de "irrelevante" a "obrigatório". Portanto, para cada pergunta, temos três pontos no nosso algoritmo: primeiro, a vossa resposta; segundo, a resposta que querem que o vosso parceiro potencial, dê; e terceiro, a importância que dão à pergunta.. Com todas estas informações, o OKCupid pode perceber se duas pessoas se darão bem. O algoritmo trabalha os números e dá um resultado. Como exemplo prático, vamos ver como vos sugeriríamos outra pessoa, vamos chamar-lhe "B". A percentagem de compatibilidade com B baseia-se nas perguntas a que ambos responderam. Vamos chamar "s" a este conjunto de perguntas comuns. Como exemplo simples, usamos um conjunto "s" pequeno apenas com duas perguntas comuns e calculamos a compatibilidade a partir daí. As duas perguntas são estas: A primeira é: "É desarrumado?" As possibilidades de resposta são: muito desarrumado, normal, e muito organizado. Se responderem "muito organizada", querem que a outra pessoa responda "muito organizado", e a pergunta for muito importante, é porque têm a mania da arrumação. É arrumada e quer que o outro seja arrumado, Suponhamos que B é um pouco diferente. Respondeu que é muito organizado, mas que a outra pessoa pode ser apenas normal, e que a pergunta não é importante para ele. Vamos ver a segunda pergunta, que é a do exemplo anterior: "Gosta de ser o centro das atenções?" As resposta são apenas sim e não. Vocês respondem que "não", querem que o outro responda "não", e a pergunta não é muito importante. B respondeu "sim", quer que o outro responda "não", porque quer que as atenções se concentrem nele, e a pergunta é mais ou menos importante. Vamos tentar calcular tudo isto. Como usamos computadores para fazer isso, o primeiro passo é atribuir valores numéricos a ideias como "relativamente importante" e "muito importante" porque os computadores precisam de tudo em algarismos. No OKCupid optamos pela seguinte escala: irrelevante vale 0, pouca importância vale 1, alguma importância vale 10, muito importante vale 50, e completamente obrigatório vale 250. A seguir, o algoritmo faz dois simples cálculos. O primeiro é: quanto é que as respostas de B lhe agradam, isto é, quantos pontos obteve B na sua escala? Como indicaram que a resposta de B à primeira pergunta sobre arrumação era muito importante, isso vale 50 pontos e B acertou na resposta. A segunda pergunta só vale 1 porque disseram que era pouco importante, e B não acertou. Portanto as respostas de B valem 50 em 51 pontos possíveis. Isso é uma satisfação de 98%, É bastante bom. O segundo cálculo do algoritmo avalia se as vossas respostas satisfazem B. B atribui 1 ponto à vossa resposta à pergunta da arrumação e 10 à vossa resposta à segunda. Desses 11, ou seja 1 mais 10, ganharam 10, acertaram na segunda resposta um do outro. Portanto as respostas deram 10 em 11 o que é 91% satisfatório para B. Não é nada mau. O passo final é pegar nas duas percentagens de compatibilidade e obter um número para os dois. Para isso, o algoritmo multiplica as pontuações, depois calcula a raiz de n, em que n é o número de perguntas. Como s, que é o número de perguntas, neste exemplo, é apenas 2, temos uma percentagem de compatibilidade igual à raiz quadrada de 98% vezes 91%. Isto dá 94%. Estes 94% são a vossa percentagem de compatibilidade com B. É uma expressão matemática de como se darão bem com base no que sabemos. Porque é que o algoritmo multiplica, em vez de fazer a média das duas percentagens e depois fazer a raiz quadrada? Esta fórmula chama-se média geométrica, uma excelente forma de combinar valores que apresentam grandes variações e representam propriedades muito diferentes. É perfeita para compatibilidade romântica. Temos grandes variações e milhares de diferentes dados, sobre filmes, sobre política, sobre religião, sobre tudo. De uma forma intuitiva, isto faz sentido. Duas pessoas que correspondam a 50% devem ser mais compatíveis que outras que têm compatibilidade a 0 e 100, porque o afeto tem que ser mútuo. Depois de pequenas correções para permitir uma margem de erro, se o número de perguntas for muito reduzido, como neste exemplo, estamos prontos. Sempre que o OKCupid compara duas pessoas, segue os passos que acabámos de explicar. Primeiro recolhe os dados das respostas, depois compara as escolhas e preferências com outras pessoas de forma simples e matemática. Acho que esta capacidade de pegar em fenómenos do mundo real e transformá-los em algo que um microchip consegue compreender, é a capacidade mais importante que uma pessoa pode ter atualmente. Tal como usamos frases para contar histórias às pessoas, usamos algoritmos para contar histórias a um computador. Se aprendermos a linguagem, podemos sair e contar histórias.