1 00:00:17,602 --> 00:00:19,239 Здравствуйте, я Кристиан Раддер, 2 00:00:19,239 --> 00:00:21,875 я один из основателей OkCupid. 3 00:00:21,875 --> 00:00:24,502 Сейчас это один из крупнейших сайтов знакомств в США. 4 00:00:24,502 --> 00:00:25,749 Как многие на этом сайте, 5 00:00:25,749 --> 00:00:27,296 я математик, и логично, 6 00:00:27,296 --> 00:00:29,904 что мы аналитически подходим к любви. 7 00:00:29,904 --> 00:00:31,717 Мы называем это алгоритмом совмещения. 8 00:00:31,717 --> 00:00:33,428 В общем, алгоритм OkCupid 9 00:00:33,428 --> 00:00:36,481 помогает нам определить, стоит ли паре людей сходить на свидание. 10 00:00:36,481 --> 00:00:38,765 Мы построили на этом весь наш бизнес. 11 00:00:38,765 --> 00:00:40,572 Алгоритм — умное словечко, 12 00:00:40,572 --> 00:00:43,047 и люди любят бросаться им как чем-то сложным, 13 00:00:43,047 --> 00:00:45,148 но на самом деле это просто упорядоченная, 14 00:00:45,148 --> 00:00:47,817 пошаговая инструкция для решения проблемы. 15 00:00:47,817 --> 00:00:49,949 Ей вовсе не нужно быть сложной. 16 00:00:49,949 --> 00:00:51,802 В этом уроке я объясню, 17 00:00:51,802 --> 00:00:53,657 как мы пришли к такому алгоритму, 18 00:00:53,657 --> 00:00:55,660 и вы увидите, как всё работает. 19 00:00:55,660 --> 00:00:57,576 А почему вообще важны алгоритмы? 20 00:00:57,576 --> 00:00:59,045 Зачем вообще этот урок? 21 00:00:59,045 --> 00:01:02,457 Обратите внимание на фразу, сказанную мной ранее: 22 00:01:02,457 --> 00:01:05,029 пошаговые инструкции для решения проблем, 23 00:01:05,031 --> 00:01:08,470 и, как известно, компьютеры прекрасно с этим справляются. 24 00:01:08,470 --> 00:01:10,068 Компьютер без алгоритма — 25 00:01:10,068 --> 00:01:12,933 по сути, дорогое пресс-папье. 26 00:01:12,933 --> 00:01:15,430 А раз компьютеры встречаются на каждом шагу, 27 00:01:15,430 --> 00:01:17,223 алгоритмы тоже повсюду. 28 00:01:18,515 --> 00:01:21,847 Математика алгоритма OkCupid удивительно проста. 29 00:01:21,847 --> 00:01:25,339 Немного сложения, умножения и чуть-чуть квадратных корней. 30 00:01:25,340 --> 00:01:27,611 Хотя при его разработке была сложность 31 00:01:27,611 --> 00:01:30,235 в понимании того, как взять нечто загадочное — 32 00:01:30,235 --> 00:01:31,212 привлекательность — 33 00:01:31,212 --> 00:01:33,810 и разбить на части, с которыми может работать компьютер. 34 00:01:33,810 --> 00:01:36,360 Сначала для совмещения людей потребовались их данные, 35 00:01:36,360 --> 00:01:38,382 что-то, с чем мог бы работать алгоритм. 36 00:01:38,382 --> 00:01:41,752 Лучший способ быстро их получить — просто попросить. 37 00:01:41,752 --> 00:01:44,396 И мы решили, что OkCupid будет задавать вопросы вроде: 38 00:01:44,396 --> 00:01:46,834 «Хотите ли вы когда-нибудь завести детей?», 39 00:01:46,834 --> 00:01:48,754 «Как часто вы чистите зубы?», 40 00:01:48,754 --> 00:01:50,407 «Нравятся ли вам фильмы ужасов?» 41 00:01:50,407 --> 00:01:53,514 А также важные вещи вроде: «Верите ли вы в Бога?» 42 00:01:53,514 --> 00:01:56,388 Многие вопросы хороши для поиска совпадений, 43 00:01:56,388 --> 00:01:59,052 то есть когда оба человека отвечают одинаково. 44 00:01:59,052 --> 00:02:01,471 Например, два человека, которым нравятся ужастики, 45 00:02:01,471 --> 00:02:05,124 наверняка более совместимы, чем те, у кого вкусы различаются. 46 00:02:05,124 --> 00:02:06,480 Но как насчёт вопроса вроде: 47 00:02:06,480 --> 00:02:08,189 «Любите ли вы быть в центре внимания?» 48 00:02:08,189 --> 00:02:10,729 Если оба партнёра отвечают «да», 49 00:02:10,729 --> 00:02:13,068 у них будут огромные проблемы. 50 00:02:13,068 --> 00:02:15,617 Мы сразу поняли это и решили, что нам нужно 51 00:02:15,617 --> 00:02:17,332 больше информации в каждом вопросе. 52 00:02:17,332 --> 00:02:20,332 Нужно просить людей не только выбрать свой ответ, 53 00:02:20,332 --> 00:02:23,038 но и ответ, который они бы хотели получить от партнёра. 54 00:02:23,038 --> 00:02:26,307 Это сработало отлично, но нам нужно было ещё одно измерение. 55 00:02:26,307 --> 00:02:28,835 Одни ответы говорят о человеке больше, чем другие. 56 00:02:28,835 --> 00:02:31,795 Например, вопрос о политике: 57 00:02:31,795 --> 00:02:34,589 «Что хуже: сжечь книгу или флаг?», 58 00:02:34,589 --> 00:02:37,207 мог бы сказать больше, чем предпочтения в фильмах. 59 00:02:37,207 --> 00:02:39,547 И неверно придавать вопросам одинаковый вес, 60 00:02:39,547 --> 00:02:41,605 поэтому мы добавили заключительный пункт. 61 00:02:41,605 --> 00:02:43,440 В каждом вопросе, задаваемом OkCupid, 62 00:02:43,440 --> 00:02:46,352 можно отметить, насколько важен для вас тот или иной аспект, — 63 00:02:46,352 --> 00:02:49,089 в диапазоне от безразличия до обязательности. 64 00:02:49,089 --> 00:02:52,704 Теперь для каждого вопроса у нас есть три вещи в алгоритме: 65 00:02:52,704 --> 00:02:54,068 первое — ваш ответ; 66 00:02:54,068 --> 00:02:58,792 второе — предпочтительный ответ потенциального партнёра 67 00:02:58,792 --> 00:03:02,327 и третье — важность этого вопроса для вас. 68 00:03:02,327 --> 00:03:03,702 С помощью этой информации 69 00:03:03,702 --> 00:03:07,128 OkCupid может понять, как сложатся отношения между людьми. 70 00:03:07,128 --> 00:03:09,458 Алгоритм оперирует числами и выдаёт результат. 71 00:03:09,458 --> 00:03:11,262 В качестве примера 72 00:03:11,262 --> 00:03:13,712 посмотрим на вашу совместимость с другим человеком, 73 00:03:13,712 --> 00:03:15,581 назовём его «B». 74 00:03:15,581 --> 00:03:19,429 Процент совместимости с «B» основывается на вопросах, на которые вы оба ответили. 75 00:03:19,429 --> 00:03:21,978 Назовём набор общих вопросов «S». 76 00:03:21,978 --> 00:03:24,932 Для простоты мы возьмём маленький набор «S», 77 00:03:24,932 --> 00:03:26,434 всего из двух общих вопросов, 78 00:03:26,434 --> 00:03:28,310 и вычислим совместимость на их основе. 79 00:03:28,310 --> 00:03:30,144 Вот наши два вопроса. 80 00:03:30,144 --> 00:03:32,349 Первый, допустим: «Насколько вы грязнуля?» 81 00:03:32,349 --> 00:03:34,669 Возможные ответы: 82 00:03:34,669 --> 00:03:38,168 «грязнуля», «средне» и «очень аккуратный». 83 00:03:38,172 --> 00:03:39,755 Пусть вы «очень аккуратный» 84 00:03:39,755 --> 00:03:42,581 и хотели бы, чтобы партнёр ответил так же, 85 00:03:42,581 --> 00:03:45,202 а вопрос для вас очень важен. 86 00:03:45,202 --> 00:03:46,498 В общем, вы аккуратист. 87 00:03:46,498 --> 00:03:49,402 Вы чистюля и хотите, чтобы партнёр тоже был чистюлей. 88 00:03:49,402 --> 00:03:51,015 Допустим, «В» немного другой. 89 00:03:51,015 --> 00:03:53,399 Он ответил, что сам он «очень аккуратный», 90 00:03:53,399 --> 00:03:56,911 но «средняя» аккуратность его устроит в качестве ответа от партнёра, 91 00:03:56,911 --> 00:03:58,748 а сам вопрос для него не очень важен. 92 00:03:58,748 --> 00:04:01,968 Посмотрим на второй вопрос, мы его уже упоминали: 93 00:04:01,968 --> 00:04:03,653 «Вам нравится быть в центре внимания?» 94 00:04:03,653 --> 00:04:05,231 Ответы только «да» и «нет». 95 00:04:05,231 --> 00:04:07,875 Вы ответили «нет», хотите, чтобы партнёр ответил «нет», 96 00:04:07,875 --> 00:04:10,679 а вопрос не очень важен. 97 00:04:10,679 --> 00:04:12,419 Теперь «В»: он ответил «да», 98 00:04:12,419 --> 00:04:14,087 хочет, чтобы партнёр ответил «нет», 99 00:04:14,087 --> 00:04:16,332 потому что хочет быть в центре внимания, 100 00:04:16,332 --> 00:04:19,335 а вопрос для него достаточно важен. 101 00:04:19,335 --> 00:04:21,716 Давайте это всё вычислим. 102 00:04:21,716 --> 00:04:24,395 Первый шаг, поскольку мы используем компьютеры, — 103 00:04:24,395 --> 00:04:26,162 присвоить числовые значения 104 00:04:26,162 --> 00:04:29,041 понятиям вроде «достаточно важно» и «очень важно», 105 00:04:29,041 --> 00:04:31,335 так как компьютеры понимают только числа. 106 00:04:31,335 --> 00:04:33,523 В OkCupid мы используем такие величины: 107 00:04:33,523 --> 00:04:35,858 «безразлично» — это 0, 108 00:04:35,858 --> 00:04:38,307 «не очень важно» — это 1, 109 00:04:38,307 --> 00:04:40,302 «достаточно важно» — это 10, 110 00:04:40,302 --> 00:04:42,426 «очень важно» — 50 111 00:04:42,426 --> 00:04:46,353 и «обязательно» — 250. 112 00:04:46,353 --> 00:04:48,852 Теперь алгоритм делает два вычисления. 113 00:04:48,852 --> 00:04:51,941 Первое: насколько ответы «B» удовлетворяют вас, 114 00:04:51,941 --> 00:04:55,568 то есть сколько из возможных баллов «B» получил по вашим меркам? 115 00:04:55,568 --> 00:04:58,138 Итак, вы обозначили, что ответ «В» 116 00:04:58,138 --> 00:04:59,947 на первый вопрос про чистоплотность 117 00:04:59,947 --> 00:05:01,448 был очень важен для вас. 118 00:05:01,448 --> 00:05:04,041 Он стоит 50 баллов, и «В» ответил верно. 119 00:05:04,041 --> 00:05:05,857 Второй вопрос стоит всего 1 балл, 120 00:05:05,857 --> 00:05:07,748 потому что вы сказали, что он не очень важен, 121 00:05:07,748 --> 00:05:09,036 а ответ «В» не подошёл. 122 00:05:09,036 --> 00:05:12,392 Ответы «В» набрали 50 из 51 возможных баллов. 123 00:05:12,392 --> 00:05:15,213 Это на 98% удовлетворительно. Довольно хорошо. 124 00:05:15,223 --> 00:05:18,932 Второй пункт в алгоритме выясняет, насколько вы подходите «В». 125 00:05:18,932 --> 00:05:22,358 «В» дал 1 балл вашему ответу про чистоплотность 126 00:05:22,358 --> 00:05:24,745 и 10 ответу на второй вопрос. 127 00:05:24,745 --> 00:05:28,326 Из этих 11 баллов, поскольку 1 плюс 10, вы заработали 10, 128 00:05:28,326 --> 00:05:30,617 вы удовлетворили друг друга во втором вопросе. 129 00:05:30,617 --> 00:05:35,251 Ваши ответы составляют 10 из 11, что на 91% подходит «В». 130 00:05:35,251 --> 00:05:36,117 Это неплохо. 131 00:05:36,117 --> 00:05:38,286 Последний шаг: взять проценты совместимостей 132 00:05:38,286 --> 00:05:40,454 и получить одно число для вас обоих. 133 00:05:40,454 --> 00:05:42,747 Чтобы это сделать, алгоритм перемножает ваши баллы 134 00:05:42,747 --> 00:05:44,500 и извлекает N-ный корень, 135 00:05:44,500 --> 00:05:46,792 где N — число вопросов. 136 00:05:46,792 --> 00:05:49,401 Поскольку «S», число вопросов, 137 00:05:49,401 --> 00:05:51,507 всего 2, 138 00:05:51,507 --> 00:05:54,093 процент совместимости равняется 139 00:05:54,093 --> 00:05:58,154 квадратному корню от 98%, умноженному на 91%. 140 00:05:58,154 --> 00:06:00,304 Это 94%. 141 00:06:00,304 --> 00:06:03,184 94% — ваша совместимость с «В». 142 00:06:03,184 --> 00:06:06,431 Это математическое выражение вашей возможности счастья друг с другом, 143 00:06:06,431 --> 00:06:07,959 основанное на том, что мы знаем. 144 00:06:07,959 --> 00:06:10,601 Почему алгоритм умножает вместо того чтобы, например, 145 00:06:10,601 --> 00:06:12,284 выводить среднее между баллами 146 00:06:12,284 --> 00:06:14,530 и заниматься извлечением корней? 147 00:06:14,530 --> 00:06:16,479 Эта формула — среднее геометрическое, 148 00:06:16,479 --> 00:06:19,311 это отличный способ сочетать значения из больших диапазонов 149 00:06:19,311 --> 00:06:20,861 и с очень разными свойствами. 150 00:06:20,861 --> 00:06:23,164 То есть она идеальна для романтических соответствий. 151 00:06:23,164 --> 00:06:25,948 Есть широкие диапазоны и кучи разных данных — 152 00:06:25,948 --> 00:06:30,406 о кино, политике, религии — обо всём. 153 00:06:30,406 --> 00:06:32,256 Это имеет смысл на уровне интуиции. 154 00:06:32,256 --> 00:06:34,918 Два человека, удовлетворяющих друг друга на 50%, 155 00:06:34,918 --> 00:06:38,832 более совместимы, чем два других, чей результат — 0 и 100, 156 00:06:38,832 --> 00:06:40,847 потому что симпатия должна быть взаимной. 157 00:06:40,847 --> 00:06:43,327 После небольшой корректировки предела погрешности, 158 00:06:43,327 --> 00:06:45,770 в случае, если количество вопросов невелико, 159 00:06:45,770 --> 00:06:47,234 как и у нас в примере, 160 00:06:47,234 --> 00:06:48,811 всё готово. 161 00:06:48,811 --> 00:06:50,191 Когда OkCupid находит пары, 162 00:06:50,191 --> 00:06:52,234 он проходит через описанные выше шаги. 163 00:06:52,234 --> 00:06:54,484 Сначала он собирает данные о ваших ответах, 164 00:06:54,484 --> 00:06:56,849 потом совмещает ваши варианты и предпочтения 165 00:06:56,849 --> 00:06:59,740 простыми, математическими способами. 166 00:06:59,740 --> 00:07:02,453 Возможность брать явления реального мира 167 00:07:02,453 --> 00:07:05,757 и делать их понятными микрочипу — 168 00:07:05,757 --> 00:07:08,565 самый важный навык в наши дни. 169 00:07:08,565 --> 00:07:10,919 Вы пользуетесь предложениями, чтобы рассказать историю человеку, 170 00:07:10,919 --> 00:07:13,665 а алгоритмами — чтобы рассказать историю компьютеру. 171 00:07:13,665 --> 00:07:16,391 Если вы выучите язык, вы можете рассказывать ваши истории. 172 00:07:16,391 --> 00:07:18,768 Я надеюсь, это окажется вам полезным.