1 00:00:17,000 --> 00:00:19,000 안녕하세요, 제 이름은 크리스티안 러더 (Christian Rudder) 입니다. 2 00:00:19,000 --> 00:00:21,000 저는 오케이 큐피드 (OK Cupid) 의 설립자 중 한사람이며, 3 00:00:21,000 --> 00:00:24,000 오케이 큐피드는 현재 미국에서 가장 큰 만남 주선 회사 중 하나입니다. 4 00:00:24,000 --> 00:00:25,000 사이트 내의 거의 모든 사람들이 그러하듯, 5 00:00:25,000 --> 00:00:27,000 저는 수학 전공을 전공했고, 여러분이 기대하듯, 6 00:00:27,000 --> 00:00:28,000 우리는 사랑을 찾는 데에 대한 7 00:00:28,000 --> 00:00:29,000 분석적인 접근으로 잘 알려져 있습니다. 8 00:00:29,000 --> 00:00:31,000 우리는 그것을 매칭 알고리즘이라고 부릅니다. 9 00:00:31,000 --> 00:00:33,000 기본적으로 오케이 큐피드의 매칭 알고리즘은 10 00:00:33,000 --> 00:00:36,000 두 사람이 데이트를 해야 할 것인지 결정하도록 도와줍니다. 11 00:00:36,000 --> 00:00:38,000 저희의 모든 사업은 이 알고리즘을 기초로 만들어졌습니다. 12 00:00:38,000 --> 00:00:40,000 알고리즘은 뭔가 특별한 단어이고, 13 00:00:40,000 --> 00:00:43,000 사람들은 대단한 것인양 대화에 즐겨 사용합니다. 14 00:00:43,000 --> 00:00:45,000 하지만 실제로 알고리즘은 단지 문제를 해결하는 15 00:00:45,000 --> 00:00:47,000 체계적이고 단계적인 방법일 뿐입니다. 16 00:00:47,000 --> 00:00:49,000 따라서 그것은 결코 화려할 필요가 없어요. 17 00:00:49,000 --> 00:00:51,000 이번 강의에게 우리가 어떻게 우리만의 알고리즘에 18 00:00:51,000 --> 00:00:53,000 도달하게 되었는지 알려 드리겠습니다. 19 00:00:53,000 --> 00:00:55,000 그러면 어떻게 구축된 것인지 이해하실 거에요. 20 00:00:55,000 --> 00:00:57,000 이제 알고리즘이 왜 그렇게 중요한지 아시겠어요? 21 00:00:57,000 --> 00:00:59,000 왜 이런 강연이 있을까요? 22 00:00:59,000 --> 00:01:02,000 글쎄요, 제가 앞서 썼던 표현 중 중요한 문구를 잘 생각해 보세요. 23 00:01:02,000 --> 00:01:05,000 알고리즘은 문제를 단계적으로 해결하는 방식입니다. 24 00:01:05,000 --> 00:01:05,000 그리고 여러분이 아마도 알고 계시듯이, 25 00:01:05,000 --> 00:01:08,000 컴퓨터는 단계별 과정에 뛰어납니다. 26 00:01:08,000 --> 00:01:09,000 알고리즘없는 컴퓨터는 27 00:01:09,000 --> 00:01:12,000 기본족으로 값비싼 타자기에 불과합니다. 28 00:01:12,000 --> 00:01:15,000 컴퓨터가 일생 생활의 모든 영역에 스며들었기 때문에, 29 00:01:15,000 --> 00:01:17,000 알고리즘은 어디에나 있습니다. 30 00:01:18,000 --> 00:01:20,000 오케이 큐피드의 매칭 알고리즘의 배경이 되는 수학은 31 00:01:20,000 --> 00:01:21,000 매우 간단합니다. 32 00:01:21,000 --> 00:01:22,000 그것은 단지 덧셈, 33 00:01:22,000 --> 00:01:23,000 곱셈, 34 00:01:23,000 --> 00:01:25,000 제곱근을 사용합니다. 35 00:01:25,000 --> 00:01:27,000 그러나 알고리즘을 구성하는 데 어려운 부분은 36 00:01:27,000 --> 00:01:30,000 신비스러운 부분인 사람 간의 끌림을 37 00:01:30,000 --> 00:01:31,000 어떻게 밝혀내는가 하는 것이며, 38 00:01:31,000 --> 00:01:33,000 또 컴퓨터가 작업할 수 있도록 구성 요소들로 나누는가 입니다. 39 00:01:33,000 --> 00:01:36,000 사람들을 연결시키기 위해 처음으로 필요했던 것은 40 00:01:36,000 --> 00:01:38,000 알고리즘으로 작업할 수 있는 어떤 형태의 자료였습니다. 41 00:01:38,000 --> 00:01:40,000 사람들로부터 자료를 수집하는 최고의 방법은 42 00:01:40,000 --> 00:01:41,000 그들에게 물어보는 것이었어요. 43 00:01:41,000 --> 00:01:44,000 그래서 우리는 오케이 큐피트 사용자들에게 질문을 하기로 했죠. 44 00:01:44,000 --> 00:01:46,000 "언젠가 아이를 갖기를 원하세요?" 같은 것들이나 45 00:01:46,000 --> 00:01:48,000 "얼마나 자주 양치질을 하나요?" 46 00:01:48,000 --> 00:01:50,000 "공포 영화를 좋아하세요?" 47 00:01:50,000 --> 00:01:53,000 또는 "신을 믿으세요?" 와 같은 중요한 질문들이었습니다. 48 00:01:53,000 --> 00:01:55,000 굉장히 많은 질문들이 49 00:01:55,000 --> 00:01:56,000 선호 사항과 선호 사항 사이를 연결시켜주는 데 유용합니다. 50 00:01:56,000 --> 00:01:59,000 그리고 바로 그 때가 사람들이 동일한 방식으로 대답을 할 때죠. 51 00:01:59,000 --> 00:02:01,000 예를 들어, 공포 영화를 좋아하는 두 사람이 52 00:02:01,000 --> 00:02:02,000 아마 공포 영화를 좋아하는 한 사람과 53 00:02:02,000 --> 00:02:03,000 그렇지 않은 다른 한 사람 보다 54 00:02:03,000 --> 00:02:05,000 더 잘 어울릴 거에요. 55 00:02:05,000 --> 00:02:06,000 그러면 다음과 같은 질문에는 어떻게 답하는지 볼까요. 56 00:02:06,000 --> 00:02:08,000 "당신은 관심의 중심이 되고 싶은가요?" 57 00:02:08,000 --> 00:02:10,000 만약 연인관계에 있는 두 사람 모두 이 질문에 "네" 라고 대답한다면, 58 00:02:10,000 --> 00:02:13,000 두 사람은 곧 큰 문제에 직면하게 될 거에요. 59 00:02:13,000 --> 00:02:14,000 우리는 이것을 일찍 알았고, 60 00:02:14,000 --> 00:02:15,000 각각의 질문에 대해 정보가 더 필요하고 61 00:02:15,000 --> 00:02:17,000 이를 모아야겠다고 생각했습니다. 62 00:02:17,000 --> 00:02:20,000 우리는 사람들에게 자신의 대답을 구체화 할 뿐 아니라, 63 00:02:20,000 --> 00:02:23,000 다른 사람들로부터 그들이 원하는 대답을 구체화 하도록 요청했습니다. 64 00:02:23,000 --> 00:02:24,000 그런 노력들은 효과가 있었습니다. 65 00:02:24,000 --> 00:02:26,000 그러나 우리는 한 가지 다른 차원이 필요했어요. 66 00:02:26,000 --> 00:02:28,000 어떤 질문들은 다른 것들보다 한 사람에 대해 훨씬 더 많은 것을 알려줍니다. 67 00:02:28,000 --> 00:02:31,000 예를 들어, "책을 태우는 것과 깃발을 태우는 것 가운데 어느 것이 더 나쁜가요?" 와 같은 68 00:02:31,000 --> 00:02:34,000 정치적 질문은 69 00:02:34,000 --> 00:02:37,000 개인의 영화에 대한 취향보다는 그들 자신에 관해 더 알려줄 수도 있거든요. 70 00:02:37,000 --> 00:02:39,000 그리고 모든 것들을 똑같은 비중으로 다룬다는 것은 말이 되지 않죠. 71 00:02:39,000 --> 00:02:41,000 그래서 우리는 마지막으로 한 가지의 정보가 더 필요했습니다. 72 00:02:41,000 --> 00:02:43,000 오케이 큐피드가 묻는 모든 것들에 대해 73 00:02:43,000 --> 00:02:44,000 사람들은 각자의 삶에서 그런 질문들이 74 00:02:44,000 --> 00:02:46,000 어떤 역할을 하는지 말할 기회를 갖게 됩니다. 75 00:02:46,000 --> 00:02:49,000 이것은 무의미한 것부터 필수적인 것까지 다양합니다. 76 00:02:49,000 --> 00:02:50,000 그래서 지금 우리는 각 질문을 통해 77 00:02:50,000 --> 00:02:52,000 우리의 알고리즘에 관한 세 가지 사실을 파악하고 있습니다: 78 00:02:52,000 --> 00:02:54,000 첫째, 여러분의 대답. 79 00:02:54,000 --> 00:02:56,000 둘째, 여러분이 다른 누군가 80 00:02:56,000 --> 00:02:57,000 즉, 여러분의 잠재적 상대가 81 00:02:57,000 --> 00:02:58,000 어떻게 대답하길 원하는지. 82 00:02:58,000 --> 00:03:02,000 셋째, 그 질문이 여러분에게 얼마나 중요한지 하는 것이에요. 83 00:03:02,000 --> 00:03:03,000 이런 정보들로, 84 00:03:03,000 --> 00:03:07,000 오케이 큐피드는 두 사람이 얼마나 잘 어울리는지 알아냅니다. 85 00:03:07,000 --> 00:03:09,000 알고리즘은 수치들을 분석하여 결과를 알려줍니다. 86 00:03:09,000 --> 00:03:11,000 실제적인 예로, 87 00:03:11,000 --> 00:03:13,000 우리가 어떻게 여러분을 연결시켜 드리는지 살펴보겠습니다. 88 00:03:13,000 --> 00:03:15,000 상대를 "B" 라고 하겠습니다. 89 00:03:15,000 --> 00:03:17,000 B 와 여러분의 연결 확률은 질문들에 대한 90 00:03:17,000 --> 00:03:19,000 두사람의 대답에 달려 있습니다. 91 00:03:19,000 --> 00:03:21,000 공통 질문 세트를 "S" 라고 부르겠습니다. 92 00:03:21,000 --> 00:03:24,000 매우 간단한 예로, 우리는 공통으로 단 두개의 질문만 있는 93 00:03:24,000 --> 00:03:26,000 작은 세트 질문 "S"를 사용합니다. 94 00:03:26,000 --> 00:03:28,000 그리고 그것들로 연결을 계산합니다. 95 00:03:28,000 --> 00:03:30,000 두 가지 예를 말씀 드릴께요. 96 00:03:30,000 --> 00:03:32,000 예를 들어, 첫 질문은 "여러분은 얼마나 지저분한가요?" 입니다. 97 00:03:32,000 --> 00:03:34,000 그리고 가능한 대답은 98 00:03:34,000 --> 00:03:35,000 매우 지저분한, 99 00:03:35,000 --> 00:03:36,000 보통, 100 00:03:36,000 --> 00:03:38,000 매우 정리된 입니다. 101 00:03:38,000 --> 00:03:39,000 여러분이 "매우 정리된"이라고 대답했다고 생각해 보세요. 102 00:03:39,000 --> 00:03:42,000 그러면 여러분은 짝이 될 사람도 "매우 정리된" 이라고 대답하길 기대할 거에요. 103 00:03:42,000 --> 00:03:45,000 이 질문은 사람들에게 매우 중요합니다. 104 00:03:45,000 --> 00:03:46,000 기본적으로 사람들에게는 정리벽이 있거든요. 105 00:03:46,000 --> 00:03:47,000 사람들은 단정하고, 106 00:03:47,000 --> 00:03:48,000 다른 사람도 단정하길 바랍니다, 107 00:03:48,000 --> 00:03:49,000 그것 뿐입니다. 108 00:03:49,000 --> 00:03:51,000 B 는 다소 다르다고 생각해봅시다. 109 00:03:51,000 --> 00:03:53,000 B는 자신에 대해 매우 정리된 사람이라 대답하지만, 110 00:03:53,000 --> 00:03:55,000 그는 보통이라고 말하는 사람과도 111 00:03:55,000 --> 00:03:56,000 사이가 좋습니다. 112 00:03:56,000 --> 00:03:58,000 그런 질문은 그에게 그리 중요하지 않습니다. 113 00:03:58,000 --> 00:04:00,000 두 번째 질문을 보겠습니다. 114 00:04:00,000 --> 00:04:01,000 앞서 예로 들었던 질문입니다. 115 00:04:01,000 --> 00:04:03,000 "여러분은 관심의 중심이 되고 싶은가요?" 116 00:04:03,000 --> 00:04:05,000 대답은 그저 네 아니면 아니오 입니다. 117 00:04:05,000 --> 00:04:06,000 여러분은 "아니오" 라고 대답했고, 118 00:04:06,000 --> 00:04:08,000 여러분은 상대방도 "아니오"라고 대답하길 원하며, 119 00:04:08,000 --> 00:04:10,000 그 질문은 여러분에게 별로 중요하지 않다고 생각해 봅시다. 120 00:04:10,000 --> 00:04:12,000 B는 "네" 라고 대답했고, 121 00:04:12,000 --> 00:04:14,000 그는 자신이 주목받길 원하기 때문에 122 00:04:14,000 --> 00:04:16,000 상대방이 "아니오"라고 대답하길 원한다고 생각해봐요. 123 00:04:16,000 --> 00:04:19,000 그리고 그 질문은 그 사람에게 매우 중요합니다. 124 00:04:19,000 --> 00:04:21,000 그러면 이것을 가지고 측정을 해 봅시다. 125 00:04:21,000 --> 00:04:22,000 우리의 첫 단계는 126 00:04:22,000 --> 00:04:24,000 컴퓨터를 사용해야 하기 때문에 127 00:04:24,000 --> 00:04:26,000 "다소 중요" 나 "매우 중요"와 같은 128 00:04:26,000 --> 00:04:29,000 생각들에 절대값을 부여해야 합니다. 129 00:04:29,000 --> 00:04:31,000 왜냐하면 컴퓨터는 모든 것을 수치로 필요로 하기 때문이죠. 130 00:04:31,000 --> 00:04:33,000 오케이 큐피드는 다음과 같은 척도를 사용합니다. 131 00:04:33,000 --> 00:04:35,000 '무의미한'은 0 132 00:04:35,000 --> 00:04:38,000 '조금 중요한'은 1 133 00:04:38,000 --> 00:04:40,000 '다소 중요한'은 10 134 00:04:40,000 --> 00:04:42,000 '매우 중요한'은 50 135 00:04:42,000 --> 00:04:46,000 그리고 '절대적으로 필수적인'은 250 입니다. 136 00:04:46,000 --> 00:04:48,000 다음으로 알고리즘은 두 가지 간단한 계산을 합니다. 137 00:04:48,000 --> 00:04:51,000 첫번째는 B의 대답들이 얼마나 여러분을 만족시키는지, 138 00:04:51,000 --> 00:04:55,000 즉, 여러분의 척도에서 얼마나 많은 점수를 획득하느냐 입니다. 139 00:04:55,000 --> 00:04:58,000 여러분은 지저분함에 관한 질문에 대한 140 00:04:58,000 --> 00:04:59,000 B의 대답이 141 00:04:59,000 --> 00:05:01,000 매우 중요하다고 암시했습니다. 142 00:05:01,000 --> 00:05:04,000 그것은 50점이고 B는 그 점수를 획득했어요. 143 00:05:04,000 --> 00:05:05,000 두번째 질문은 단지 1점입니다. 144 00:05:05,000 --> 00:05:07,000 왜냐하면 여러분이 그것이 중요하지 않다고 말했기 때문입니다. 145 00:05:07,000 --> 00:05:09,000 그리고 B는 점수를 받지 못했습니다. 146 00:05:09,000 --> 00:05:12,000 그래서 B의 대답은 51점 중 50점을 받았습니다. 147 00:05:12,000 --> 00:05:14,000 98% 만족스러운거죠. 148 00:05:14,000 --> 00:05:15,000 상당히 좋습니다. 149 00:05:15,000 --> 00:05:16,000 알고리즘의 두 번째 질문은 150 00:05:16,000 --> 00:05:18,000 얼마나 여러분이 B를 만족시키는지를 보는 것입니다. 151 00:05:18,000 --> 00:05:20,000 B는 지저분함에 관한 152 00:05:20,000 --> 00:05:22,000 여러분의 대답에 1점을 153 00:05:22,000 --> 00:05:24,000 두번째 질문에는 10점을 부여했습니다. 154 00:05:24,000 --> 00:05:27,000 1점과 10점을 합해서 11점 중 155 00:05:27,000 --> 00:05:28,000 여러분은 10점을 얻었고, 156 00:05:28,000 --> 00:05:30,000 두 사람은 두번째 질문에서 서로를 만족시켰습니다. 157 00:05:30,000 --> 00:05:32,000 그래서 여러분의 대답은 11점 중 10점을 받았고, 158 00:05:32,000 --> 00:05:35,000 B에 대해 똑같이 91% 만족하게 됩니다. 159 00:05:35,000 --> 00:05:36,000 나쁘지 않죠. 160 00:05:36,000 --> 00:05:38,000 마지막 단계는 이 두 수치를 합하여 161 00:05:38,000 --> 00:05:40,000 두 사람 모두에 대한 하나의 결과치를 만드는 작업입니다. 162 00:05:40,000 --> 00:05:42,000 이렇게 하기 위해서는, 알고리즘이 여러분의 점수들을 곱해야 합니다. 163 00:05:42,000 --> 00:05:44,000 그리고 n제곱근을 구해야 합니다. 164 00:05:44,000 --> 00:05:46,000 여기서 n은 질문의 수입니다. 165 00:05:46,000 --> 00:05:49,000 우리가 든 예에서 166 00:05:49,000 --> 00:05:51,000 s가 겨우 2였기 때문에, 167 00:05:51,000 --> 00:05:54,000 우리는 98%와 91%의 곱의 168 00:05:54,000 --> 00:05:58,000 제곱근을 구합니다. 169 00:05:58,000 --> 00:06:00,000 이는 94%가 됩니다. 170 00:06:00,000 --> 00:06:03,000 이 94%의 값이 B와 여러분의 매칭 백분위입니다. 171 00:06:03,000 --> 00:06:04,000 이것은 여러분이 서로 얼마나 만족할지 172 00:06:04,000 --> 00:06:06,000 우리가 알고 있는 정보에 근거하여 173 00:06:06,000 --> 00:06:07,000 수학적으로 표현한 것입니다. 174 00:06:07,000 --> 00:06:10,000 그러면, 왜 알고리즘이 175 00:06:10,000 --> 00:06:12,000 두 매칭 점수의 평균을 구하는 대신 176 00:06:12,000 --> 00:06:14,000 곱셈을 해서 제곱근을 하는걸까요? 177 00:06:14,000 --> 00:06:16,000 일반적으로, 이 공식은 기하 평균이라고 불립니다. 178 00:06:16,000 --> 00:06:17,000 이것은 넓은 범위를 지닌 값들을 179 00:06:17,000 --> 00:06:19,000 통합하여 180 00:06:19,000 --> 00:06:20,000 매우 다른 특성들을 나타내는 좋은 방법입니다. 181 00:06:20,000 --> 00:06:23,000 다시 말해, 로맨틱 매칭에 있어 완벽한 방법입니다. 182 00:06:23,000 --> 00:06:24,000 사람들은 다양한 범위의 값과 183 00:06:24,000 --> 00:06:26,000 수 많은 다른 정보 점수를 갖고 있습니다. 184 00:06:26,000 --> 00:06:27,000 제가 말한 것 처럼, 영화에 관해서, 185 00:06:27,000 --> 00:06:28,000 정치에 관해서, 186 00:06:28,000 --> 00:06:29,000 종교에 관해서, 187 00:06:29,000 --> 00:06:30,000 모든 것에 관해서 말이죠. 188 00:06:30,000 --> 00:06:32,000 이것은 직관적으로도 의미가 있어요. 189 00:06:32,000 --> 00:06:34,000 두 사람이 서로를 50% 만족시킨다면 190 00:06:34,000 --> 00:06:36,000 한 사람이 0% 만족시키고 다른 한 사람이 100% 만족시키는 커플보다 191 00:06:36,000 --> 00:06:39,000 더욱 괜찮은 매칭입니다. 192 00:06:39,000 --> 00:06:40,000 왜냐하면 애정은 상호적이어야 하기 때문입니다. 193 00:06:40,000 --> 00:06:43,000 앞서 예에서 들었던 것처럼 194 00:06:43,000 --> 00:06:45,000 우리가 매우 적은 수의 질문을 갖고 있는 경우에 195 00:06:45,000 --> 00:06:47,000 오차를 조금만 수정하고 나면 196 00:06:47,000 --> 00:06:48,000 계속 진행해도 좋습니다. 197 00:06:48,000 --> 00:06:50,000 오케이 큐피드가 두 사람을 연결할 때마다 198 00:06:50,000 --> 00:06:52,000 우리가 방금 간략하게 소개한 과정들을 거치게 됩니다. 199 00:06:52,000 --> 00:06:54,000 첫째, 사람들의 대답 정보를 모읍니다. 200 00:06:54,000 --> 00:06:56,000 그리고 간단하고 수학적인 방법으로 그들의 선택과 선호도를 201 00:06:56,000 --> 00:06:59,000 다른 사람들의 것과 비교합니다. 202 00:06:59,000 --> 00:07:02,000 저는 현실의 현상을 가지고 마이크로 칩이 203 00:07:02,000 --> 00:07:05,000 이해할 수 있는 어떤 것을 만들어 내는 능력이 204 00:07:05,000 --> 00:07:05,000 오늘날 누구든지 205 00:07:05,000 --> 00:07:08,000 가질 수 있는 가장 중요한 기술이라고 생각합니다. 206 00:07:08,000 --> 00:07:10,000 여러분이 누군가에게 이야기를 들려주기 위해 쓰는 문장들처럼, 207 00:07:10,000 --> 00:07:13,000 여러분은 컴퓨터에게 이야기를 들려주기 위해 알고리즘을 사용합니다. 208 00:07:13,000 --> 00:07:14,000 만약 여러분이 그 언어를 배운다면, 209 00:07:14,000 --> 00:07:16,000 여러분은 여러분의 이야기를 들려줄 수 있을거에요. 210 00:07:16,000 --> 00:07:18,000 저는 이 이야기가 어려분이 그렇게 하도록 도울 수 있으면 좋겠습니다.