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.
Bonjour, je m'appelle Christian Rudder, je suis un des fondateurs de OK Cupid. C'est désormais l'un des plus grands sites de rencontre aux États-Unis. Comme presque tout le monde sur le site, j'étais doué en math et comme vous pouvez l'imaginer, nous étions connus pour l'approche analytique que nous avions de l'amour. On appelle ça notre algorithme d'appariement. Essentiellement, l'algorithme d'appariement d'OK Cupid nous aide à décider si deux personnes peuvent sortir ensemble. Nous avons construit notre business dessus. Cependant, algorithme est un mot prétentieux, les gens préfèrent le laisser tomber, mais un algorithme est simplement une façon systématique, pas à pas, de résoudre un problème. Ça n'a rien de prétentieux. Ici, dans cette leçon, je vais vous expliquer comment on en est arrivé à notre algorithme à nous pour que vous voyez comment ça marche. Maintenant, pourquoi est-ce que les algorithmes sont importants ? Pourquoi est-ce que cette leçon existe ? Eh bien, relisez cette phrase importante que je viens de dire : c'est une façon de résoudre un problème pas à pas et, comme vous le savez probablement, les ordinateurs excellent dans les processus pas à pas. Un ordinateur sans algorithme est simplement un couteux presse-papiers. Depuis que les ordinateurs sont omniprésents dans notre vie quotidienne, les algorithmes sont partout. Les mathématiques derrière l'algorithme d'appariement d'OK Cupid sont étonnamment simples. Ce sont juste quelques additions, multiplications et quelques racines carrées. La difficulté lors de la conception, cependant, était de comprendre comment prendre quelque chose de mystérieux, l'attirance humaine, et la décomposer en éléments avec lesquels un ordinateur peut travailler. La première chose dont nous avons besoin pour faire correspondre des gens sont des données, ce sur quoi l'algorithme puisse travailler. La meilleure façon d'avoir rapidement des données des gens est tout simplement de les demander. Donc nous avons décidé qu'OK Cupid devait poser des questions aux utilisateurs : « Est-ce que vous voulez des enfants ? », « À quelle fréquence vous lavez vous les dents ? », « Est-ce que vous aimez les films d'horreur ? » et des trucs importants comme « Est-ce que vous croyez en Dieu ? » Certes, beaucoup de questions sont bonnes pour faire correspondre ce qui est comparable, quand deux personnes répondent de la même manière. Par exemple, deux personnes qui aiment bien les films d'horreur se correspondent probablement mieux qu'une personne qui les aime et une qui ne les aime pas. Mais qu'en est-il d'une question comme, « Aimez-vous être le centre de l'attention ? » Si les deux personnes d'un couple répondent oui, alors il va y avoir de gros problèmes. Nous avons compris ça rapidement et nous avons décidé que nous avions besoin d'un peu plus d'information pour chaque question. Nous devions demander aux personnes de donner non seulement leur réponse, mais également la réponse qu'ils attendaient de l'autre. Ça a vraiment bien marché, mais nous avions besoin d'une dimension supplémentaire. Certaines questions nous en disent plus sur une personne que d'autres. Par exemple, une question sur la politique, quelque chose comme, « Qu'est-ce qui est pire : brûler un livre ou brûler un drapeau ? » pourrait en révéler plus sur quelqu'un que ses goûts cinématographiques. Et ça n'a pas beaucoup de sens de donner le même poids à toutes ces choses, nous avons donc ajouté une dernière donnée. Pour chaque question qu'OK Cupid vous pose, vous avez la possibilité de nous dire le rôle qu'elle joue dans votre vie, ça va de non significatif à obligatoire. Donc, pour chaque question, nous avons trois choses pour notre algorithme : premièrement, votre réponse ; deuxièmement, comment vous souhaitez que quelqu'un, votre partenaire potentiel, réponde et troisièmement, quelle est l'importance de cette question pour vous. Avec toutes ces informations, OK Cupid peut déterminer comment deux personnes s'entendront. L'algorithme mouline les chiffres et nous donne un résultat. Comme exemple pratique, regardons comment on vous fait correspondre à quelqu'un, que nous appelerons "B". Votre taux de correspondance avec B est fondé sur les questions auxquelles vous avez répondu tous les deux. Appelons la série de questions communes "s". Comme c'est un exemple très simple, utilisons une petite série "s" avec seulement deux questions en commun et calculons la correspondance. Voici nos deux exemples de questions. La première, disons, « Êtes-vous bordélique ? », les réponses possibles sont beaucoup, moyennement et très organisé. Disons que vous répondiez « très organisé », et que vous souhaitez que l'autre réponde « très organisé », et que cette question est très importante pour vous. Fondamentalement vous êtes un maniaque de la propreté. Vous êtes propre, vous voulez que l'autre soit propre et c'est comme ça. Supposons que B soit un peu différent. Il a répondu très organisé pour lui-même, mais moyennement est correct pour lui comme réponse de l'autre, et la question n'a pas d'importance pour lui. Regardons la seconde question, c'est l'une de notre exemple précédent : « Aimez-vous être le centre de l'attention ? » Les réponses sont uniquement oui et non. Donc vous avez répondu « Non », vous attendez comme réponse de l'autre « non », et la question est faiblement importante pour vous. Maintenant B a répondu « Oui », il attend quelqu'un qui réponde « Non », parce qu'il veut la lumière pour lui et la question est plutôt importante pour lui. Essayons de calculer tout ça. Notre première étape est, comme nous utilisons des ordinateurs, nous devons assigner des valeurs numériques aux idées comme « plutôt important » et « très important » parce que les ordinateurs ont besoin que tout soit chiffré. Nous, à OK Cupid, avons choisi l'échelle suivante : non significatif vaut 0, un peu important vaut 1, plutôt important vaut 10, très important est 50 et obligatoire vaut 250. Ensuite, l'algorithme fait deux calculs simples. Le premier est « à quel niveau les réponses de B sont satisfaisantes pour vous », ce qui revient « à combien de points a B sur votre échelle ? » Vous avez indiqué que la réponse de B à la première question à propos du rangement était très importante pour vous. Ça vaut 50 points et B les as eus. La seconde question vaut seulement 1 parce que vous avez répondu que c'était seulement un peu important et B avait répondu faux. Donc les réponses de B valent 50 points sur 51. C'est 98% de satisfaction. C'est vraiment bon. La seconde question que regarde l'algorithme est à quel niveau vous satisfaites B. B a placé un point sur votre réponse à la question sur le rangement et 10 à votre réponse à la seconde. Sur ces 11 points, c'est 1 plus 10, vous gagnez 10, vous correspondez l'un à l'autre pour la seconde question. Donc vos réponses donnent 10 sur 11 ce qui vaut 91% de satisfaction pour B. Ce n'est pas mal. L'étape finale est de prendre les deux pourcentages de correspondances et d'obtenir un chiffre pour vous deux. Pour faire ça, l'algorithme multiplie vos résultats et prend la racine n-ième, où n est le nombre de questions. Parce que s, le nombre de questions, dans cet exemple, est seulement 2 nous avons : le pourcentage d'appariement est égal à la racine carrée de 98% fois 91%. Qui est égal à 94%. Ce 94% est votre taux d'appariement avec B. C'est l'expression mathématique de comment vous seriez heureux l'un avec l'autre fondé sur ce que nous savons. Maintenant, pourquoi est-ce que l'algorithme multiplie au lieu de faire la moyenne des deux taux de correspondances ensemble puis prend la racine carrée ? En général, cette formule est appelée la moyenne géométrique, c'est une bonne façon de combiner des valeurs qui ont de grandes variations et présentent des propriétés très différentes. En d'autres mots, c'est parfait pour un appariement sentimental. On a de grandes plages de valeurs et des quantités de valeurs différentes, comme je l'ai dit, au sujet des films, de la politique, de la religion, de tout. Intuitivement, aussi, ça a du sens. Deux personnes qui se correspondent chacune à 50% devraient être une meilleure combinaison que deux autres qui se correspondent à 0 et 100, parce que l'affection doit être mutuelle. Après avoir ajouté une petite correction pour la marge d'erreur dans le cas où on a très peu de questions, comme dans l'exemple, on est prêt. À chaque fois qu'OK Cupid associe deux personnes, on passe par les étapes qu'on vient de montrer. En premier on collecte les données liées aux questions, puis on compare les choix et les préférences pour les autres personnes d'une façon mathématique, simple. Ça, cette capacité à prendre des phénomènes réels et à les transformer en quelque chose qu'un microprocesseur puisse comprendre, est, je pense, la plus importante compétence que quelqu'un puisse avoir actuellement. De la même façon que vous utilisez des phrases pour raconter une histoire à une personne, vous utilisez des algorithmes pour raconter une histoire à un ordinateur. Si vous apprenez la langue, vous pouvez sortir et raconter des histoires. J'espère que ça vous aidera à le faire.