WEBVTT 00:00:17.602 --> 00:00:19.239 안녕하세요, 제 이름은 크리스티안 러더 (Christian Rudder) 입니다. 00:00:19.239 --> 00:00:21.875 저는 오케이 큐피드 (OK Cupid) 의 설립자 중 한사람이며, 00:00:21.875 --> 00:00:24.502 오케이 큐피드는 현재 미국에서 가장 큰 만남 주선 회사 중 하나입니다. 00:00:24.502 --> 00:00:25.749 사이트 내의 거의 모든 사람들이 그러하듯, 00:00:25.749 --> 00:00:27.296 저는 수학 전공을 전공했고, 여러분이 기대하듯, 00:00:27.296 --> 00:00:28.644 우리는 사랑을 찾는 데에 대한 00:00:28.644 --> 00:00:29.887 분석적인 접근으로 잘 알려져 있습니다. 00:00:29.887 --> 00:00:31.717 우리는 그것을 매칭 알고리즘이라고 부릅니다. 00:00:31.717 --> 00:00:33.428 기본적으로 오케이 큐피드의 매칭 알고리즘은 00:00:33.428 --> 00:00:36.481 두 사람이 데이트를 해야 할 것인지 결정하도록 도와줍니다. 00:00:36.481 --> 00:00:38.765 저희의 모든 사업은 이 알고리즘을 기초로 만들어졌습니다. 00:00:38.765 --> 00:00:40.572 알고리즘은 뭔가 특별한 단어이고, 00:00:40.572 --> 00:00:43.047 사람들은 대단한 것인양 대화에 즐겨 사용합니다. 00:00:43.047 --> 00:00:45.148 하지만 실제로 알고리즘은 단지 문제를 해결하는 00:00:45.148 --> 00:00:47.817 체계적이고 단계적인 방법일 뿐입니다. 00:00:47.817 --> 00:00:49.949 따라서 그것은 결코 화려할 필요가 없어요. 00:00:49.949 --> 00:00:51.802 이번 강의에게 우리가 어떻게 우리만의 알고리즘에 00:00:51.802 --> 00:00:53.657 도달하게 되었는지 알려 드리겠습니다. 00:00:53.657 --> 00:00:55.660 그러면 어떻게 구축된 것인지 이해하실 거에요. 00:00:55.660 --> 00:00:57.576 이제 알고리즘이 왜 그렇게 중요한지 아시겠어요? 00:00:57.576 --> 00:00:59.045 왜 이런 강연이 있을까요? 00:00:59.045 --> 00:01:02.457 글쎄요, 제가 앞서 썼던 표현 중 중요한 문구를 잘 생각해 보세요. 00:01:02.457 --> 00:01:05.029 알고리즘은 문제를 단계적으로 해결하는 방식입니다. 00:01:05.029 --> 00:01:05.841 그리고 여러분이 아마도 알고 계시듯이, 00:01:05.841 --> 00:01:08.470 컴퓨터는 단계별 과정에 뛰어납니다. 00:01:08.470 --> 00:01:09.588 알고리즘없는 컴퓨터는 00:01:09.588 --> 00:01:12.933 기본족으로 값비싼 타자기에 불과합니다. 00:01:12.933 --> 00:01:15.430 컴퓨터가 일생 생활의 모든 영역에 스며들었기 때문에, 00:01:15.430 --> 00:01:17.223 알고리즘은 어디에나 있습니다. 00:01:18.515 --> 00:01:20.267 오케이 큐피드의 매칭 알고리즘의 배경이 되는 수학은 00:01:20.267 --> 00:01:21.811 매우 간단합니다. 00:01:21.811 --> 00:01:22.629 그것은 단지 덧셈, 00:01:22.629 --> 00:01:23.687 곱셈, 00:01:23.687 --> 00:01:25.340 제곱근을 사용합니다. 00:01:25.340 --> 00:01:27.611 그러나 알고리즘을 구성하는 데 어려운 부분은 00:01:27.611 --> 00:01:30.235 신비스러운 부분인 사람 간의 끌림을 00:01:30.235 --> 00:01:31.212 어떻게 밝혀내는가 하는 것이며, 00:01:31.212 --> 00:01:33.810 또 컴퓨터가 작업할 수 있도록 구성 요소들로 나누는가 입니다. 00:01:33.810 --> 00:01:36.360 사람들을 연결시키기 위해 처음으로 필요했던 것은 00:01:36.360 --> 00:01:38.382 알고리즘으로 작업할 수 있는 어떤 형태의 자료였습니다. 00:01:38.382 --> 00:01:40.412 사람들로부터 자료를 수집하는 최고의 방법은 00:01:40.412 --> 00:01:41.747 그들에게 물어보는 것이었어요. 00:01:41.747 --> 00:01:44.166 그래서 우리는 오케이 큐피트 사용자들에게 질문을 하기로 했죠. 00:01:44.166 --> 00:01:46.834 "언젠가 아이를 갖기를 원하세요?" 같은 것들이나 00:01:46.834 --> 00:01:48.754 "얼마나 자주 양치질을 하나요?" 00:01:48.754 --> 00:01:50.227 "공포 영화를 좋아하세요?" 00:01:50.227 --> 00:01:53.514 또는 "신을 믿으세요?" 와 같은 중요한 질문들이었습니다. 00:01:53.514 --> 00:01:55.308 굉장히 많은 질문들이 00:01:55.308 --> 00:01:56.381 선호 사항과 선호 사항 사이를 연결시켜주는 데 유용합니다. 00:01:56.381 --> 00:01:59.052 그리고 바로 그 때가 사람들이 동일한 방식으로 대답을 할 때죠. 00:01:59.052 --> 00:02:01.471 예를 들어, 공포 영화를 좋아하는 두 사람이 00:02:01.471 --> 00:02:02.684 아마 공포 영화를 좋아하는 한 사람과 00:02:02.684 --> 00:02:03.843 그렇지 않은 다른 한 사람 보다 00:02:03.843 --> 00:02:05.115 더 잘 어울릴 거에요. 00:02:05.115 --> 00:02:06.480 그러면 다음과 같은 질문에는 어떻게 답하는지 볼까요. 00:02:06.480 --> 00:02:08.189 "당신은 관심의 중심이 되고 싶은가요?" 00:02:08.189 --> 00:02:10.729 만약 연인관계에 있는 두 사람 모두 이 질문에 "네" 라고 대답한다면, 00:02:10.729 --> 00:02:13.068 두 사람은 곧 큰 문제에 직면하게 될 거에요. 00:02:13.068 --> 00:02:14.447 우리는 이것을 일찍 알았고, 00:02:14.447 --> 00:02:15.614 각각의 질문에 대해 정보가 더 필요하고 00:02:15.614 --> 00:02:17.581 이를 모아야겠다고 생각했습니다. 00:02:17.581 --> 00:02:20.332 우리는 사람들에게 자신의 대답을 구체화 할 뿐 아니라, 00:02:20.332 --> 00:02:23.038 다른 사람들로부터 그들이 원하는 대답을 구체화 하도록 요청했습니다. 00:02:23.038 --> 00:02:24.207 그런 노력들은 효과가 있었습니다. 00:02:24.207 --> 00:02:26.291 그러나 우리는 한 가지 다른 차원이 필요했어요. 00:02:26.291 --> 00:02:28.835 어떤 질문들은 다른 것들보다 한 사람에 대해 훨씬 더 많은 것을 알려줍니다. 00:02:28.835 --> 00:02:31.795 예를 들어, "책을 태우는 것과 깃발을 태우는 것 가운데 어느 것이 더 나쁜가요?" 와 같은 00:02:31.795 --> 00:02:34.589 정치적 질문은 00:02:34.589 --> 00:02:37.207 개인의 영화에 대한 취향보다는 그들 자신에 관해 더 알려줄 수도 있거든요. 00:02:37.207 --> 00:02:39.387 그리고 모든 것들을 똑같은 비중으로 다룬다는 것은 말이 되지 않죠. 00:02:39.387 --> 00:02:41.605 그래서 우리는 마지막으로 한 가지의 정보가 더 필요했습니다. 00:02:41.605 --> 00:02:43.440 오케이 큐피드가 묻는 모든 것들에 대해 00:02:43.440 --> 00:02:44.642 사람들은 각자의 삶에서 그런 질문들이 00:02:44.642 --> 00:02:46.223 어떤 역할을 하는지 말할 기회를 갖게 됩니다. 00:02:46.223 --> 00:02:49.089 이것은 무의미한 것부터 필수적인 것까지 다양합니다. 00:02:49.089 --> 00:02:50.564 그래서 지금 우리는 각 질문을 통해 00:02:50.564 --> 00:02:52.692 우리의 알고리즘에 관한 세 가지 사실을 파악하고 있습니다: 00:02:52.692 --> 00:02:54.068 첫째, 여러분의 대답. 00:02:54.068 --> 00:02:56.362 둘째, 여러분이 다른 누군가 00:02:56.362 --> 00:02:57.196 즉, 여러분의 잠재적 상대가 00:02:57.196 --> 00:02:58.781 어떻게 대답하길 원하는지. 00:02:58.781 --> 00:03:02.327 셋째, 그 질문이 여러분에게 얼마나 중요한지 하는 것이에요. 00:03:02.327 --> 00:03:03.702 이런 정보들로, 00:03:03.702 --> 00:03:07.128 오케이 큐피드는 두 사람이 얼마나 잘 어울리는지 알아냅니다. 00:03:07.128 --> 00:03:09.458 알고리즘은 수치들을 분석하여 결과를 알려줍니다. 00:03:09.458 --> 00:03:11.262 실제적인 예로, 00:03:11.262 --> 00:03:13.712 우리가 어떻게 여러분을 연결시켜 드리는지 살펴보겠습니다. 00:03:13.712 --> 00:03:15.581 상대를 "B" 라고 하겠습니다. 00:03:15.581 --> 00:03:17.479 B 와 여러분의 연결 확률은 질문들에 대한 00:03:17.479 --> 00:03:19.424 두사람의 대답에 달려 있습니다. 00:03:19.424 --> 00:03:21.978 공통 질문 세트를 "S" 라고 부르겠습니다. 00:03:21.978 --> 00:03:24.932 매우 간단한 예로, 우리는 공통으로 단 두개의 질문만 있는 00:03:24.932 --> 00:03:26.434 작은 세트 질문 "S"를 사용합니다. 00:03:26.434 --> 00:03:28.310 그리고 그것들로 연결을 계산합니다. 00:03:28.310 --> 00:03:30.144 두 가지 예를 말씀 드릴께요. 00:03:30.144 --> 00:03:32.349 예를 들어, 첫 질문은 "여러분은 얼마나 지저분한가요?" 입니다. 00:03:32.349 --> 00:03:34.669 그리고 가능한 대답은 00:03:34.669 --> 00:03:35.618 매우 지저분한, 00:03:35.618 --> 00:03:36.398 보통, 00:03:36.398 --> 00:03:38.172 매우 정리된 입니다. 00:03:38.172 --> 00:03:39.755 여러분이 "매우 정리된"이라고 대답했다고 생각해 보세요. 00:03:39.755 --> 00:03:42.581 그러면 여러분은 짝이 될 사람도 "매우 정리된" 이라고 대답하길 기대할 거에요. 00:03:42.581 --> 00:03:45.202 이 질문은 사람들에게 매우 중요합니다. 00:03:45.202 --> 00:03:46.498 기본적으로 사람들에게는 정리벽이 있거든요. 00:03:46.498 --> 00:03:47.212 사람들은 단정하고, 00:03:47.212 --> 00:03:48.296 다른 사람도 단정하길 바랍니다, 00:03:48.296 --> 00:03:49.248 그것 뿐입니다. 00:03:49.248 --> 00:03:51.015 B 는 다소 다르다고 생각해봅시다. 00:03:51.015 --> 00:03:53.539 B는 자신에 대해 매우 정리된 사람이라 대답하지만, 00:03:53.539 --> 00:03:55.171 그는 보통이라고 말하는 사람과도 00:03:55.171 --> 00:03:56.740 사이가 좋습니다. 00:03:56.740 --> 00:03:58.748 그런 질문은 그에게 그리 중요하지 않습니다. 00:03:58.748 --> 00:04:00.308 두 번째 질문을 보겠습니다. 00:04:00.308 --> 00:04:01.896 앞서 예로 들었던 질문입니다. 00:04:01.896 --> 00:04:03.653 "여러분은 관심의 중심이 되고 싶은가요?" 00:04:03.653 --> 00:04:05.231 대답은 그저 네 아니면 아니오 입니다. 00:04:05.231 --> 00:04:06.407 여러분은 "아니오" 라고 대답했고, 00:04:06.407 --> 00:04:08.235 여러분은 상대방도 "아니오"라고 대답하길 원하며, 00:04:08.235 --> 00:04:10.862 그 질문은 여러분에게 별로 중요하지 않다고 생각해 봅시다. 00:04:10.862 --> 00:04:12.419 B는 "네" 라고 대답했고, 00:04:12.419 --> 00:04:14.087 그는 자신이 주목받길 원하기 때문에 00:04:14.087 --> 00:04:16.332 상대방이 "아니오"라고 대답하길 원한다고 생각해봐요. 00:04:16.332 --> 00:04:19.334 그리고 그 질문은 그 사람에게 매우 중요합니다. 00:04:19.334 --> 00:04:21.716 그러면 이것을 가지고 측정을 해 봅시다. 00:04:21.716 --> 00:04:22.855 우리의 첫 단계는 00:04:22.855 --> 00:04:24.376 컴퓨터를 사용해야 하기 때문에 00:04:24.376 --> 00:04:26.162 "다소 중요" 나 "매우 중요"와 같은 00:04:26.162 --> 00:04:29.041 생각들에 절대값을 부여해야 합니다. 00:04:29.041 --> 00:04:31.335 왜냐하면 컴퓨터는 모든 것을 수치로 필요로 하기 때문이죠. 00:04:31.335 --> 00:04:33.523 오케이 큐피드는 다음과 같은 척도를 사용합니다. 00:04:33.523 --> 00:04:35.858 '무의미한'은 0 00:04:35.858 --> 00:04:38.307 '조금 중요한'은 1 00:04:38.307 --> 00:04:40.302 '다소 중요한'은 10 00:04:40.302 --> 00:04:42.426 '매우 중요한'은 50 00:04:42.426 --> 00:04:46.353 그리고 '절대적으로 필수적인'은 250 입니다. 00:04:46.353 --> 00:04:48.852 다음으로 알고리즘은 두 가지 간단한 계산을 합니다. 00:04:48.852 --> 00:04:51.941 첫번째는 B의 대답들이 얼마나 여러분을 만족시키는지, 00:04:51.941 --> 00:04:55.568 즉, 여러분의 척도에서 얼마나 많은 점수를 획득하느냐 입니다. 00:04:55.568 --> 00:04:58.138 여러분은 지저분함에 관한 질문에 대한 00:04:58.138 --> 00:04:59.947 B의 대답이 00:04:59.947 --> 00:05:01.448 매우 중요하다고 암시했습니다. 00:05:01.448 --> 00:05:04.041 그것은 50점이고 B는 그 점수를 획득했어요. 00:05:04.041 --> 00:05:05.947 두번째 질문은 단지 1점입니다. 00:05:05.947 --> 00:05:07.558 왜냐하면 여러분이 그것이 중요하지 않다고 말했기 때문입니다. 00:05:07.558 --> 00:05:09.036 그리고 B는 점수를 받지 못했습니다. 00:05:09.036 --> 00:05:12.392 그래서 B의 대답은 51점 중 50점을 받았습니다. 00:05:12.392 --> 00:05:14.023 98% 만족스러운거죠. 00:05:14.023 --> 00:05:15.220 상당히 좋습니다. 00:05:15.220 --> 00:05:16.832 알고리즘의 두 번째 질문은 00:05:16.832 --> 00:05:18.918 얼마나 여러분이 B를 만족시키는지를 보는 것입니다. 00:05:18.918 --> 00:05:20.768 B는 지저분함에 관한 00:05:20.768 --> 00:05:22.353 여러분의 대답에 1점을 00:05:22.353 --> 00:05:24.745 두번째 질문에는 10점을 부여했습니다. 00:05:24.745 --> 00:05:27.156 1점과 10점을 합해서 11점 중 00:05:27.156 --> 00:05:28.324 여러분은 10점을 얻었고, 00:05:28.324 --> 00:05:30.617 두 사람은 두번째 질문에서 서로를 만족시켰습니다. 00:05:30.617 --> 00:05:32.611 그래서 여러분의 대답은 11점 중 10점을 받았고, 00:05:32.611 --> 00:05:35.240 B에 대해 똑같이 91% 만족하게 됩니다. 00:05:35.240 --> 00:05:36.117 나쁘지 않죠. 00:05:36.117 --> 00:05:38.286 마지막 단계는 이 두 수치를 합하여 00:05:38.286 --> 00:05:40.454 두 사람 모두에 대한 하나의 결과치를 만드는 작업입니다. 00:05:40.454 --> 00:05:42.747 이렇게 하기 위해서는, 알고리즘이 여러분의 점수들을 곱해야 합니다. 00:05:42.747 --> 00:05:44.500 그리고 n제곱근을 구해야 합니다. 00:05:44.500 --> 00:05:46.792 여기서 n은 질문의 수입니다. 00:05:46.792 --> 00:05:49.401 우리가 든 예에서 00:05:49.401 --> 00:05:51.507 s가 겨우 2였기 때문에, 00:05:51.507 --> 00:05:54.093 우리는 98%와 91%의 곱의 00:05:54.093 --> 00:05:58.154 제곱근을 구합니다. 00:05:58.154 --> 00:06:00.304 이는 94%가 됩니다. 00:06:00.304 --> 00:06:03.194 이 94%의 값이 B와 여러분의 매칭 백분위입니다. 00:06:03.194 --> 00:06:04.561 이것은 여러분이 서로 얼마나 만족할지 00:06:04.561 --> 00:06:06.405 우리가 알고 있는 정보에 근거하여 00:06:06.405 --> 00:06:07.749 수학적으로 표현한 것입니다. 00:06:07.749 --> 00:06:10.131 그러면, 왜 알고리즘이 00:06:10.131 --> 00:06:12.284 두 매칭 점수의 평균을 구하는 대신 00:06:12.284 --> 00:06:14.530 곱셈을 해서 제곱근을 하는걸까요? 00:06:14.530 --> 00:06:16.479 일반적으로, 이 공식은 기하 평균이라고 불립니다. 00:06:16.479 --> 00:06:17.881 이것은 넓은 범위를 지닌 값들을 00:06:17.881 --> 00:06:19.076 통합하여 00:06:19.076 --> 00:06:20.861 매우 다른 특성들을 나타내는 좋은 방법입니다. 00:06:20.861 --> 00:06:23.164 다시 말해, 로맨틱 매칭에 있어 완벽한 방법입니다. 00:06:23.164 --> 00:06:24.248 사람들은 다양한 범위의 값과 00:06:24.248 --> 00:06:26.206 수 많은 다른 정보 점수를 갖고 있습니다. 00:06:26.206 --> 00:06:27.156 제가 말한 것 처럼, 영화에 관해서, 00:06:27.156 --> 00:06:28.006 정치에 관해서, 00:06:28.006 --> 00:06:29.201 종교에 관해서, 00:06:29.201 --> 00:06:30.395 모든 것에 관해서 말이죠. 00:06:30.395 --> 00:06:32.256 이것은 직관적으로도 의미가 있어요. 00:06:32.256 --> 00:06:34.918 두 사람이 서로를 50% 만족시킨다면 00:06:34.918 --> 00:06:36.052 한 사람이 0% 만족시키고 다른 한 사람이 100% 만족시키는 커플보다 00:06:36.052 --> 00:06:39.180 더욱 괜찮은 매칭입니다. 00:06:39.180 --> 00:06:40.847 왜냐하면 애정은 상호적이어야 하기 때문입니다. 00:06:40.847 --> 00:06:43.147 앞서 예에서 들었던 것처럼 00:06:43.147 --> 00:06:45.770 우리가 매우 적은 수의 질문을 갖고 있는 경우에 00:06:45.770 --> 00:06:47.234 오차를 조금만 수정하고 나면 00:06:47.234 --> 00:06:48.811 계속 진행해도 좋습니다. 00:06:48.811 --> 00:06:50.191 오케이 큐피드가 두 사람을 연결할 때마다 00:06:50.191 --> 00:06:52.234 우리가 방금 간략하게 소개한 과정들을 거치게 됩니다. 00:06:52.234 --> 00:06:54.484 첫째, 사람들의 대답 정보를 모읍니다. 00:06:54.484 --> 00:06:56.619 그리고 간단하고 수학적인 방법으로 그들의 선택과 선호도를 00:06:56.619 --> 00:06:59.740 다른 사람들의 것과 비교합니다. 00:06:59.740 --> 00:07:02.453 저는 현실의 현상을 가지고 마이크로 칩이 00:07:02.453 --> 00:07:05.167 이해할 수 있는 어떤 것을 만들어 내는 능력이 00:07:05.167 --> 00:07:05.742 오늘날 누구든지 00:07:05.742 --> 00:07:08.565 가질 수 있는 가장 중요한 기술이라고 생각합니다. 00:07:08.565 --> 00:07:10.919 여러분이 누군가에게 이야기를 들려주기 위해 쓰는 문장들처럼, 00:07:10.919 --> 00:07:13.665 여러분은 컴퓨터에게 이야기를 들려주기 위해 알고리즘을 사용합니다. 00:07:13.665 --> 00:07:14.921 만약 여러분이 그 언어를 배운다면, 00:07:14.921 --> 00:07:16.381 여러분은 여러분의 이야기를 들려줄 수 있을거에요. 00:07:16.381 --> 00:07:18.768 저는 이 이야기가 어려분이 그렇게 하도록 도울 수 있으면 좋겠습니다.