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.
Oi, meu nome é Christian Rudder, e eu fui um dos fundadores do OK Cupid. Hoje em dia, é um dos maiores sites de namoro nos Estados Unidos. Como quase todo mundo no site, Eu era um matemático, e, como vocês podem esperar, somos conhecidos pela abordagem analítica que adotamos para amar. Chamamos isso de algoritmo compatível. Basicamente do algoritmo compatível do OK Cupid nos ajuda a decidir se duas pessoas devem sair juntas. Nós construímos todo nosso negócio em torno disto. Agora, algoritmo é uma palavra pomposa, e as pessoas gostam de pensar que é grande coisa, mas, realmente, um algoritmo é apenas sistemático, um modo de resolver um problema passo-a-passo. Não precisa ser pomposa de jeito nenhum. Aqui, nesta lição, irei explicar como chegamos em nosso algoritmo particular então você pode ver como é feito. Agora, porque algoritmos são importantes? Porque esta lição existe? Bem, perceba uma frase significante que usei acima: há uma forma de resolver um problema passo-a-passo, e, como você provavelmente sabe, computadores excedem processos passo-a-passo. Um computador sem algoritmo é basicamente um peso de papel caro. E desde que computadores são parte ocupantes da vida diária, algoritmos estão em toda parte. A matemática por trás do algoritmo compatível do OK Cupid é surpreendentemente simples. É apenas uma adição, multiplicação, um pouco de raízes quadradas. A parte difícil em projetar isto, de qualquer forma, foi compreender em como pegar algo misterioso, como a atração humana, e quebrá-la em componentes em que um computador possa trabalhar. Bem, a primeira coisa que precisamos para unir pessoas eram dados, algo para o algoritmo poder trabalhar. A melhor forma de conseguir esses dados rapidamente das pessoas é simplesmente perguntar. Então, decidimos que o OK Cupid deveria fazer perguntas aos usuários, coisas como, "Você quer ter filhos um dia?" e "Com que frequência você escova seus dentes?", "Você gosta de filmes de terror?" e coisas grandes como "Você acredita em Deus?" Agora, muitas das perguntas são boas para combinar gostos com gostos, isso é quando ambos respondem da mesma forma. Por exemplo, duas pessoas que gostam de filmes de terror são provavelmente uma melhor combinação que uma pessoa que gosta e a outra que não gosta. Mas e quanto a questão como, "Você gosta de ser o centro das atenções?" Se ambos em um relacionamento disserem sim pra essa, então eles terão grandes problemas. Percebemos isto mais cedo, e então decidimos que precisariamos de um pouco mais de dados para cada questão. Tivemos que pedir as pessoas para especificar não apenas suas respostas, mas a resposta que eles gostariam de ter da outra pessoa. E isto funcionou muito bem, mas precisamos de mais uma dimensão. Algumas questões dizem mais sobre uma pessoa que outras Por exemplo, uma questão sobre política, algo como, "Qual é o pior: queimar livros ou bandeiras?" podem revelar mais sobre alguém que seu gosto para filmes. E não faz sentido pesar todos igualmente, então adicionamos um principal dado final. Para tudo que o OK Cupid lhe pergunta, você tem a chance de nos dizer a função que exerce na sua vida, e isto abrange de irrelevante a obrigatório. Então agora, para cada questão, nós temos três coisas para nosso algoritmo: primeiro, sua resposta; segundo, como você quer que a outra pessoa, seu parceiro em potencial, responda; e terceiro, e quão importante é esta questão para você. Com toda essa informação, OK Cupid pode calcular o quanto duas pessoas podem se dar bem. O algoritmo mastiga os números e nos dá um resultado. Como um exemplo prático, vamos ver como combinamos você com outra pessoa, vamos chamá-lo de "B". Sua porcentagem de combinação com B é baseada em questões que ambos responderam. Vamos chamar isso de grupo de questões comuns, "s". Como um exemplo muito simples, usamos um pequeno grupo "s" com apenas duas questões em comum e computar a combinação a partir disso. Aqui estão duas questões exemplos. A primeira, vamos dizer que é, "O quão bagunceiro você é?" e as respostas possíveis são muito bagunceiro, normal, e muito organizado. E digamos que você respondeu "muito organizado," e você gostaria que o outro respondesse "muito organizado," e a questão é muito importante para você. Basicamente você é um louco por organização. Você é organizado e quer que a outra pessoa seja organizada, é isso. E digamos que B é um pouco diferente. Ele respondeu muito organizado para ele mesmo, mas normal está OK para ele como a resposta da outra pessoa, e a questão é só um pouco importante para ele. Vamos ver a segunda questão, é uma do nosso exemplo anterior: "Você gosta de ser o centro das atenções?" As respostas são apenas sim e não. Agora você respondeu "não," como você quer que a outra pessoa responda é "não," e a questão é apenas um pouco importante para você. Agora B, ele respondeu "sim," ele quer que a outra pessoa responda "não," porque ele quer as atenções voltadas para ele, e a questão é um tanto importante para ele. Então, vamos tentar computar tudo isso. Nosso primeiro passo é, desde que usamos computadores para fazer isto, precisamos determinar valores numéricos a ideias como "um tanto importante" e "muito importante" porque computadores precisam de tudo em números. Nós do OK Cupid decidimos no parâmetro a seguir: irrelevante vale 0, um pouco importante vale 1, um tanto importante vale 10, muito importante vale 50, e absolutamente obrigatório vale 250. Depois, o algoritmo faz dois cálculos simples, O primeiro é o quanto as respostas de B satisfazem você, isto é, quantos pontos possíveis B fez no seu parâmetro? Bem, você indicou que a resposta de B para a primeira questão sobre bagunça era muito importante para você. Vale 50 pontos e B fez isso certo. A segunda questão só vale 1 porque você disse que era apenas um pouco importante, e B não se deu bem nessa. Então, as respostas de B foram 50 de 51 pontos. Isso é 98% satisfatório. É muito bom. E, a segunda questão do algoritmo olha é quanto você satisfez B. Bem, B fez 1 ponto na sua resposta para a questão da bagunça e 10 na sua resposta para a segunda. Daquelas, 11, é 1 mais 10, você ganhou 10, vocês se satisfazem um ao outro na segunda questão. Então suas respostas foram 10 de 11 igual a 91% satisfatório para B. Isso não é ruim. O passo final é pegar estas duas porcentagens combinantes e tirar um número para vocês. Para fazer isso, o algoritmo multiplica seus pontos, então tira a raiz de n, onde n é o número de questões. Porque s, que é o número de questões, nessa amostra, é apenas 2, nós combinamos a porcentagem igualmente a raiz quadrada de 98% vezes 91%. É igual a 94%. Essse 94% é sua combinação de porcentagem com B. É uma expressão matemática de quão feliz vocês seriam um com o outro baseados no que sabemos. Agora, porque o algoritmo multiplica como oposto da, digamos, média de duas pontuações combinantes juntas e o caso da raiz quadrada? Em geral, esta fórmula é chamada de média geometrica, que é uma ótima maneira de combinar valores que tem amplos alcances e representa propriedades muito diferentes. Em outras palavras, é perfeito para combinação romântica. Você tem amplos alcances e você tem uma tonelada de dados diferentes, como eu disse, sobre filmes, sobre política, sobre religião, sobre tudo. Intuitivamente, isso faz sentido também. Duas pessoas satisfazem 50% uma a outra deveria ser uma melhor combinação que os outros que satisfazem 0 e 100, porque afeição precisa ser mútua. Depois de adicionar um pouco de correção para margem de erro, no caso, quando temos um pequeno número de questões como temos nesse exemplo, estamos prontos. Qualquer momento o OK Cupid combina duas pessoas, vai além dos passos que esboçamos. Primeiro coleta-se dados sobre suas respostas, aí compara suas escolha e preferências com outras pessoas, de maneira simples e matemática. Isto, a habilidade de pegar o fenômeno do mundo real e fazer dele algo que um microchip possa entender, é, eu acho, a habilidade mais importante que alguém pode ter hoje em dia Como usar sentenças para contar uma história a alguém, você usa os algoritmos para contar uma história ao computador. Se você aprender a língua, você pode sair e contar suas historias. Espero que isto lhe ajude a fazer isso.