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.
Xin chào các bạn, tên tôi là Christian Rudder, tôi là một trong những người sáng lập trang web OK Cupid. Hiện tại, nó đang là một trong những trang web lớn nhất về hẹn hò online ở Mỹ. Cũng giống như các thành viên sáng lập khác tôi đã từng học chuyên về toán, và, cũng như dự đoán của bạn chúng tôi được biết đến với cách tiếp cận theo hướng phân tích mà chúng tôi áp dụng vào tình yêu. Chúng tôi gọi đó là thuật toán mai mối Về cơ bản thì OK Cupid sử dụng thuật toán mai mốt để giúp chúng tôi ra kết luận liệu một cặp nam nữ nhất định có thích hợp để hẹn hò với nhau hay không. Chúng tôi xây dựng công việc kinh doanh của mình xung quanh thuật toán này. "Thuật toán" nghe như một từ mang tính chuyên môn cao và khiến chúng ta nghĩ đó là một cái gì đó rất phức tạp nhưng thực ra, nó chỉ là một cách giải quyết vấn đề mang tính hệ thống theo kiểu từng bước từng bước một. Và thực sự nó khá đơn giản. Trong bài học này, tôi sẽ giải thích cho các bạn điều gì đã dẫn chúng tôi đến với thuật toán này và nó hoạt động như thế nào. Đầu tiên, hãy nghĩ xem tại sao các thuật toán lại được coi là quan trọng ? và tại sao chúng tôi lại tạo ra bài học này? Đầu tiên, bạn có thể nhận ra một cụm từ rất quan trọng mà tôi sử dụng ở phía trên: "một cách giải quyết vấn đề theo kiểu từng bước từng bước một", và có thể bạn cũng đã biết rằng máy tính là chuyên gia trong việc giải quyết vấn đề theo từng bước. Một máy tính mà không có các thuật toán thì về cơ bản cũng chỉ như một cái chặn giấy đắt tiền mà thôi. Và cũng bởi vì máy tính là một phần vô cùng phổ biến trong cuộc sống hàng ngày, nên những thuật toán có thể được tìm thấy ở khắp mọi nơi. Phép toán đằng sau thuật toán của OK Cupid đáng ngạc nhiên là lại vô cùng đơn giản. Đó chỉ là một vài phép cộng, phép nhân, và một chút khai căn. Tuy nhiên, phần khó nhất trong việc tạo ra thuật toán này lại là ở việc làm thế nào để có thể phân tích một yếu tố khó đo lường. như sự hấp dẫn của con người, thành những phần nhỏ mà máy tính có thể tính toán được. Nói về việc này, điều đầu tiên chúng tôi cần để tìm ra những cặp đôi phù hợp là những số liệu. để có thể áp dụng vào thuật toán. Và cách tốt nhất để có được chúng là thu thập từ mọi người. Vì thế, chúng tôi quyết định đưa ra các câu hỏi cho các thành viên, kiểu như "Trong tương lai bạn có muốn có con không?"; "Bạn có thường xuyên đánh răng không?"; "Bạn có thích xem phim kinh dị không?" hay những điều vĩ mô hơn như "Bạn có tin vào Chúa không?" Có thể thấy rằng nhiều câu hỏi thì rất tốt nếu chúng ta nhận được câu trả lời giống nhau từ cả hai phía. Ví dụ như hai người cùng thích xem phim kinh dị thì có thể sẽ phù hợp với nhau hơn là nếu một người thích và người còn lại thì không thích. Nhưng đối với những câu hỏi kiểu như "Bạn có muốn làm trung tâm của sự chú ý?" Nếu cả hai người đều trả lời là có, thì mối quan hệ của họ sẽ gặp phải một vấn đề lớn. Chúng tôi nhận ra điều này từ đầu và vì thế quyết định là chúng tôi cần thêm một số dữ liệu từ các câu hỏi. Chúng tôi yêu cầu mọi người không những trả lời câu hỏi của mình, mà còn cả những câu trả lời mà họ mong muốn nhận được từ người khác. Cách này khá hiệu quả, tuy nhiên chúng tôi còn cần nhìn vào một khía cạnh khác. Đó là một số câu hỏi thì nói cho bạn biết về một người nhiều hơn là những câu khác. Lấy ví dụ như một câu hỏi về chính trị " Đốt sách và đốt cờ quốc gia - việc nào tồi tệ hơn?" câu hỏi kiểu này sẽ bộc lộ nhiều thông tin hơn là câu hỏi về sở thích phim ảnh của bạn. Và vì không thể coi các câu hỏi có trọng lượng như nhau chúng tôi đã thêm một điểm sau vào thuật toán: Đối với tất cả mọi câu hỏi bạn trả lời trên OK Cupid, bạn có cơ hội để cho chúng tôi biết tầm quan trọng của câu hỏi đó đối với bạn, từ không quan trọng một chút nào cho đến vô cùng quan trọng. Vậy là đối với bất kì câu hỏi nào chúng tôi cũng có ba dữ liệu cho thuật toán của mình: Thứ nhất là câu trả lời của bạn; Thứ hai là câu trả lời mà bạn mong muốn có được từ một người khác; có thể là nửa kia của bạn trong tương lai và thứ ba là tầm quan trọng của câu hỏi đối với bạn. Với tất cả những thông tin đó, OK Cupid có thể tính ra được liệu hai người có phù hợp với nhau không. Thuật toán sẽ bắt đầu xử lý những con số và cuối cùng đưa ra một kết quả. Lấy một ví dụ cụ thể như sau, chúng tôi đang xem xét sự phù hợp của bạn với một người người con trai giả sử tên anh ta là B Phần trăm phù hợp giữa bạn và B sẽ được dựa trên những câu hỏi mà cả hai người cùng trả lời. Gọi tập hợp những câu hỏi đó là "s" và để làm cho ví dụ này đơn giản hơn thì "s" chỉ bao gồm hai câu hỏi chung rồi chúng ta sẽ tính toán từ đó. Lấy ví dụ, câu hỏi đầu tiên là "Bạn luộm thuộm đến mức nào?" câu trả lời có thể là rất luộm thuộm, khá luộm thuộm, hoặc rất gọn gàng. Giả sử câu trả lời của bạn là "rất gọn gàng" bạn cũng muốn người kia trả lời như vậy, và câu hỏi này rất quan trọng đối với bạn. Có thể nói về cơ bản bạn là một người gọn gàng thái quá. Bạn rất thích gọn gàng, và cũng muốn người yêu của mình giống như vậy Nhưng giả sử B hơi khác bạn một chút. Anh ta trả lời rằng mình rất gọn gàng, nhưng lại chỉ cần người yêu của mình "khá gọn gàng" thôi và câu hỏi này thì cũng không quan trọng mấy đối với B. Giờ hãy nhìn vào câu hỏi thứ hai, Đây là câu mà lúc trước tôi đã sử dụng: " Bạn có muốn là trung tâm của sự chú ý không?" Câu trả lời chỉ có thể là có hoặc không. Bạn trả lời là "không" Bạn cũng mong người yêu tương lai của mình trả lời "không" và câu hỏi này theo bạn cũng không mấy quan trọng. Với B, anh ấy trả lời là "có" nhưng lại tìm kiếm một người trả lời "không" vì anh ấy chỉ muốn mình là trung tâm của sự chú ý thôi và câu hỏi khá quan trọng với anh ấy. Bây giờ hãy thử tính toán tất cả những gì mà chúng ta thu được. Bước đầu tiên, vì chúng ta sẽ dùng đến máy tính để tinh toán, nên chúng ta cần phải gắn những giá trị số cho những câu trả lời kiểu như "khá quan trọng" hay "rất quan trọng" bởi vì máy tính chỉ có thể làm việc với những con số cụ thể mà thôi. Cũng vì thế, OK Cupid quyết định gắn cho "không quan trọng chút nào" giá trị bằng 0, "quan trọng một chút" giá trị bằng 1, "khá quan trọng" giá trị bằng 10, "rất quan trọng" giá trị bằng 50, và "vô cùng quan trọng" giá trị bằng 250. Tiếp theo, thuật toán sẽ thực hiện hai phép tính đơn giản. Một là mức độ hài lòng của bạn với những câu trả lời của B hay nói cách khác là số điểm mà B có thể đạt được trên thang điểm của bạn. Bạn đã nói rằng câu trả lời của B cho câu hỏi đâu tiên về mức độ luộm thuộm là rất quan trọng với bạn. B đã trả lời đúng như bạn muốn vì thế anh ấy có 50 điểm. Câu hỏi thứ hai chỉ đáng giá 1điểm vì bạn nói nó chỉ quan trọng một chút, và B đã trả lời không như bạn muốn. Vì thế B đạt 50 trên tổng số 51 điểm mà anh ấy có thể dành được. vậy mức độ hài lòng sẽ là 98%. Khá cao. Điều thứ hai mà thuật toán cần là mức độ hài lòng của B với các câu trả lời của bạn. B chỉ đặt giá trị cho câu trả lời của bạn về sự luộm thuộm là 1 và 10 điểm cho câu thứ hai. Vì thế trên tổng số 11, bạn đã đạt được 10 điểm, cả hai người đã trả lời đúng như mong muốn của người kia ở câu thứ hai vì thế câu trả lời của bạn đạt 10 trên tổng số 11 điểm có nghĩa là mức độ hài lòng của B với những câu trả lời của bạn là 91%. Cũng khá tốt. Việc cuối cùng cần làm là ghép hai phần trăm về mức độ hài lòng này lại và tìm ra một con số chung cho cả hai người. Để làm như vậy, thuật toán sẽ nhân hai số phần trăm đó lại sau đó lấy căn bậc n, với n là tổng số câu hỏi. Bởi vì s là tổng số câu hỏi trong ví dụ này chỉ là 2 nên để tính phần trăm hài lòng của cả hai bạn về người kia ta sẽ lấy căn bậc hai của tích 98% và 91% và có kết quả là 94%. Đó chính là mức độ phù hợp của bạn với B Đây là một cách diễn đạt kiểu toán học về mức độ hạnh phúc mà hai bạn có thể có nếu kết đôi với nhau dựa trên những thông tin mà bạn cung cấp cho chúng tôi. Bây giờ, câu hỏi bạn có thể đặt ra là tại sao chúng tôi lại nhân hai mức độ hài lòng với nhau và lấy căn bậc n, chứ không lấy trung bình cộng rồi lấy căn bậc n? Nói một cách đơn giản thì công thức này gọi là cấp số nhân và nó là một cách rất tốt để ghép những giá trị mà có nhiều khác biệt và đại diện cho nhiều khía cạnh Nói cách khác, đây là một cách hoàn hảo cho việc tìm sự phù hợp trong tình yêu. Khi mà chúng ta thường có nhiều lựa chọn có vô số quan điểm khác nhau, như tôi đã lấy ví dụ ở trên về phim ảnh về chính trị tôn giáo, hay tất cả những thứ khác. Ngoài ra, nếu chỉ bằng trực giác thì chúng ta cũng có thể thấy một cặp đôi mà mức độ hài lòng của người này về người kia đều là 50% thì sẽ tốt hơn là một cặp đôi mà tỉ lệ này là 0 và 100 vì sự hấp dẫn thì phải đến từ cả hai phía Sau khi thêm vào môt vài sửa chữa nhỏ cho sai số, cho trường hợp chúng ta chỉ có rất ít câu hỏi như ở ví dụ trên thì chúng tôi thấy thuật toán hoàn toàn có thể được sử dụng. Bất cứ khi nào OK Cupid ghép đôi hai người lại với nhau, chúng tôi lại tiến hành làm theo những bước như trên. Đầu tiên là thu thập dữ liệu từ câu trả lời của bạn sau đó so sánh những câu trả lời và những mong muốn của bạn với câu trả lời và mong muốn của một người khác, bằng những phép toán đơn giản. Khả năng chuyển đổi một hiên tượng mang tính thực tế thành những số liệu mà một vi mạch có thể xử lý được theo tôi là kĩ năng quan trọng nhất mà một người có thể có trong thời đại ngày nay. Cũng giống như việc bạn sử dụng các câu để kể một câu chuyện cho người khác nghe, thì ở đây bạn sử dụng những thuật toán để kể câu chuyện ấy cho một máy tính. Nếu bạn học được ngôn ngữ thích hợp bạn có thể bắt đầu kể những câu chuyện của minh. và tôi mong clip này sẽ giúp bạn làm được điều ấy.