Γεια σας, ονομάζομαι Κρίστιαν Ράντερ και ήμουν από τους ιδρυτές του OkCupid, μιας από τις μεγαλύτερες ιστοσελίδες γνωριμιών στις ΗΠΑ σήμερα. Σχεδόν όλοι στη σελίδα έχουμε πτυχίο Μαθηματικού, άρα φημιζόμαστε για την αναλυτική μας προσέγγιση προς την αγάπη. Τη λέμε «αλγόριθμο ταιριάσματος». Βασικά, ο αλγόριθμος του OkCupid μάς βοηθά να αποφασίσουμε αν δύο άνθρωποι πρέπει να βγουν ραντεβού. Όλη η επιχείρησή μας βασίστηκε σ' αυτό. Η λέξη «αλγόριθμος» είναι φανταχτερή και πολλοί τη χρησιμοποιούν σαν να είναι κάτι σπουδαίο. Αλλά αλγόριθμος είναι απλά ένας συστηματικός, βήμα-προς-βήμα τρόπος να λύσουμε ένα πρόβλημα. Δεν χρειάζεται καθόλου να είναι εξεζητημένος. Σε αυτό το μάθημα, θα εξηγήσω πώς καταλήξαμε στον συγκεκριμένο αλγόριθμο, ώστε να δείτε πώς γίνεται. Γιατί είναι σημαντικοί οι αλγόριθμοι; Γιατί υπάρχει αυτό το μάθημα; Παρατηρήστε μια πολύ σημαντική φράση, που χρησιμοποίησα νωρίτερα· είναι ένας τρόπος να λύσουμε ένα πρόβλημα βήμα-προς-βήμα, και όπως γνωρίζετε, οι υπολογιστές είναι άριστοι σε τέτοιες διεργασίες. Ένας υπολογιστής χωρίς αλγορίθμους είναι ουσιαστικά ένα ακριβό πρες παπιέ. Και αφού οι υπολογιστές έχουν διεισδύσει στην καθημερινότητά μας, οι αλγόριθμοι βρίσκονται παντού. Τα Μαθηματικά του αλγορίθμου του OkCupid είναι εκπληκτικά απλά. Είναι απλά προσθέσεις, πολλαπλασιασμός και μερικές τετραγωνικές ρίζες. Όμως, το δύσκολο στη σχεδίασή του ήταν να καταλάβουμε πώς να πάρουμε κάτι μυστηριώδες, όπως η ανθρώπινη έλξη, και να το αναλύσουμε σε μέρη που μπορεί να δουλέψει ένας υπολογιστής. Το πρώτο που χρειαζόμασταν ήταν δεδομένα, με τα οποία θα μπορούσε να δουλέψει ο αλγόριθμος. Ο καλύτερος τρόπος να βρούμε δεδομένα γρήγορα ήταν απλώς να τα ζητήσουμε. Έτσι αποφασίσαμε το OkCupid να ρωτήσει τους χρήστες πράγματα όπως, «Θέλετε να κάνετε παιδιά κάποτε;» «Πόσο συχνά πλένετε τα δόντια σας;» «Σας αρέσουν οι ταινίες θρίλερ;» Και σημαντικές ερωτήσεις, όπως «Πιστεύετε στον Θεό;» Πολλές ερωτήσεις είναι καλές για να ταιριάζουν όμοιον ομοίω, δηλαδή, δύο ανθρώπους που συμφωνούν. Π.χ. δύο άνθρωποι στους οποίους αρέσουν τα θρίλερ μάλλον ταιριάζουν πιο πολύ από έναν που του αρέσουν και έναν όχι. Αλλά με ερωτήσεις όπως «Θέλετε να είστε στο επίκεντρο της προσοχής;» Αν και οι δύο σε μια σχέση απαντούν ναι, θα έχουν τεράστια προβλήματα. Το συνειδητοποιήσαμε νωρίς και αποφασίσαμε να ζητάμε περισσότερα δεδομένα για κάθε ερώτηση. Έπρεπε να ζητήσουμε να απαντήσουν όχι μόνο για τον εαυτό τους, αλλά και την απάντηση που θα ήθελαν από τον άλλο. Αυτό πήγε πολύ καλά. Αλλά χρειαζόμασταν ακόμα μία διάσταση. Μερικές ερωτήσεις λένε περισσότερα για ένα άτομο από άλλες. Για παράδειγμα, μία ερώτηση περί πολιτικής, όπως, «Τι είναι χειρότερο, το κάψιμο των βιβλίων ή της σημαίας;» αποκαλύπτει περισσότερα από το τι ταινίες του αρέσουν. Δεν είναι λογικό να τα σταθμίζουμε όλα το ίδιο, γι' αυτό προσθέσαμε κάτι τελευταίο. Για καθετί που σας ρωτά το OkCupid, πρέπει να μας πείτε πόσο σημαντικό ρόλο παίζει στη ζωή σας. Και αυτό παίρνει τιμές από άσχετο ως υποχρεωτικό. Έτσι για κάθε ερώτηση υπάρχουν τρία πράγματα για τον αλγόριθμό μας: πρώτα την απάντησή σας· δεύτερο, πώς θα θέλατε κάποιος άλλος -το δυνητικό σας ταίρι- να απαντήσει· και τρίτο, πόσο σημαντική είναι η ερώτηση για εσάς. Με αυτές τις πληροφορίες, το OkCupid μπορεί να καταλάβει πόσο καλά θα τα πάνε δύο άνθρωποι. Ο αλγόριθμος κάνει τους υπολογισμούς και δίνει ένα αποτέλεσμα. Ως ένα πρακτικό παράδειγμα, ας δούμε πώς θα ταιριάζαμε εσάς με ένα άλλο άτομο. Ας τον ονομάσουμε Β. Το ποσοστό ταιριάσματος βασίζεται σε ερωτήσεις που έχετε απαντήσει και οι δύο. Ας ονομάσουμε το σύνολο των κοινών ερωτήσεων S. Ως ένα πολύ απλό παράδειγμα, έχουμε ένα μικρό σύνολο S με μόνο δύο κοινές ερωτήσεις και υπολογίζουμε το σκορ από αυτό. Ορίστε δύο ερωτήσεις-παραδείγματα. Η πρώτη είναι, ας πούμε, «Πόσο ακατάστατος είστε;» Και οι δυνατές απαντήσεις είναι: πολύ ακατάστατος, έτσι κι έτσι, πολύ οργανωμένος. Ας πούμε ότι απαντήσατε «πολύ οργανωμένος» και θα θέλατε κάποιον να απαντήσει «πολύ οργανωμένος» και αυτή η ερώτηση είναι «πολύ σημαντική» για εσάς. Βασικά είστε μανιακή με την καθαριότητα και θέλετε κάποιον σαν εσάς οπωσδήποτε. Ας πούμε ότι ο Β είναι λίγο διαφορετικός. Απάντησε «πολύ οργανωμένος» για τον εαυτό του, αλλά η απάντηση «έτσι κι έτσι» από τον άλλο του είναι αποδεκτή και η ερώτηση είναι «λίγο σημαντική» για αυτόν. Ας δούμε τη δεύτερη ερώτηση από το προηγούμενο παράδειγμα. «Θέλετε να είστε το επίκεντρο της προσοχής;» Οι επιλογές είναι «ναι» και «όχι». Απαντήσατε «όχι» και θέλετε ο άλλος να απαντήσει «όχι», και η απάντηση είναι «λίγο σημαντική» για εσάς. Ο Β απάντησε «ναι». Θέλει ο άλλος να απαντήσει «όχι», διότι θέλει όλα τα φώτα πάνω του, και η ερώτηση είναι κάπως σημαντική για αυτόν. Ας τα υπολογίσουμε όλα αυτά. Εφόσον χρησιμοποιούμε υπολογιστές, το πρώτο βήμα είναι να εκφράσουμε με αριθμούς έννοιες όπως «κάπως σημαντικό» και «πολύ σημαντικό», διότι οι υπολογιστές χρειάζονται τα πάντα σε αριθμούς. Στο OkCupid καταλήξαμε στην ακόλουθη κλίμακα. «Άσχετο» έχει αξία 0. «Λίγο σημαντικό» έχει αξία 1, «Κάπως σημαντικό» έχει αξία 10, «Πολύ σημαντικό» έχει αξία 50, και «Οπωσδήποτε υποχρεωτικό» έχει αξία 250. Στη συνέχεια, ο αλγόριθμος κάνει δύο απλούς υπολογισμούς. Ο πρώτος είναι πόσο σας ικανοποιούν οι απαντήσεις του Β, δηλαδή, πόσους πόντους μάζεψε ο Β στη δική σας κλίμακα; Είπατε ότι η απάντηση του Β στην πρώτη ερώτηση, σχετικά με την ακαταστασία, ήταν πολύ σημαντική για εσάς. Έχει αξία 50 πόντους και ο Β το πέτυχε. Η δεύτερη ερώτηση έχει αξία μόνον 1, διότι είπατε ότι ήταν μόνο λίγο σημαντικό. Ο Β δεν το πέτυχε, άρα ο Β έπιασε 50 από τους 51 δυνατούς πόντους. Αυτό είναι ικανοποιητικό κατά 98%. Αρκετά καλά. Το δεύτερο που εξετάζει ο αλγόριθμος είναι πόσο ικανοποιήσατε εσείς τον Β. Ο Β αξιολόγησε με 1 πόντο την απάντησή σας για την ακαταστασία και με 10 την απάντησή σας για τη δεύτερη. Από τους 11, που είναι 1+10, κερδίσατε 10. Ικανοποιήσατε ο ένας τον άλλον στη δεύτερη ερώτηση, άρα οι απαντήσεις σας ήταν 10 στα 11, που ισούται με 91% ικανοποίηση για τον Β. Καθόλου άσχημα. Στο τελικό βήμα παίρνουμε τα δύο ποσοστά ταιριάσματος και βρίσκουμε έναν αριθμό και για τους δυο σας. Για να το κάνει, ο αλγόριθμος πολλαπλασιάζει τα σκορ σας και μετά παίρνει τη n-οστή ρίζα, όπου n είναι ο αριθμός των ερωτήσεων. Επειδή το s, που είναι το πλήθος των ερωτήσεων σε αυτό το δείγμα, είναι μόνο δύο, το ποσοστό ταιριάσματος ισούται με την τετραγωνική ρίζα του 98% επί το 91%. Αυτό ισούται με 94%. Αυτό το 94% είναι το ποσοστό ταιριάσματός σας με τον Β. Είναι μια μαθηματική έκφραση του πόσο ευτυχισμένοι θα ήσασταν μαζί με βάση αυτά που γνωρίζουμε. Γιατί όμως ο αλγόριθμος πολλαπλασιάζει αντί, ας πούμε, να πάρει τον μέσο όρο των δύο σκορ και μετά να πάρει την τετραγωνική ρίζα; Γενικά, αυτός ο τύπος καλείται γεωμετρικός μέσος. Είναι ένας καλός τρόπος συνδυασμού τιμών με μεγάλη διασπορά και πολύ διαφορετικές ιδιότητες. Δηλαδή, είναι τέλειο για το ρομαντικό ταίριασμα. Έχετε μεγάλη διασπορά και πολλά διαφορετικά δεδομένα, όπως είπα, για σινεμά, πολιτική, θρησκεία, τα πάντα. Έχει νόημα και διαισθητικά. Δύο άνθρωποι, που ικανοποιούν ο ένας τον άλλον κατά 50%, θα έπρεπε να ταιριάζουν καλύτερα από δύο άλλους, που ικανοποιούν κατά 0% και 100%, διότι τα αισθήματα πρέπει να είναι αμοιβαία. Μετά από μια μικρή διόρθωση για το περιθώριο σφάλματος, στην περίπτωση που έχουμε μικρό αριθμό ερωτήσεων, όπως σε αυτό το παράδειγμα, είμαστε έτοιμοι. Κάθε φορά που το OkCupid ταιριάζει δύο άτομα, κάνει τα βήματα που μόλις περιέγραψα. Πρώτα συλλέγει τα δεδομένα από τις απαντήσεις σας και μετά συγκρίνει τις επιλογές και προτιμήσεις σας με άλλων με απλούς μαθηματικούς τρόπους. Η ικανότητα να παίρνουμε φαινόμενα του πραγματικού κόσμου και να τα κάνουμε κάτι, που καταλαβαίνει ένα μικροτσίπ, νομίζω ότι είναι η πιο σημαντική δεξιότητα στη σημερινή εποχή. Όπως με τις προτάσεις λέτε μια ιστορία σε κάποιον, έτσι με τους αλγορίθμους λέτε μια ιστορία σε έναν υπολογιστή. Αν μάθετε τη γλώσσα, μπορείτε να πείτε τις ιστορίες σας. Ελπίζω αυτό θα σας βοηθήσει να το κάνετε.
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.