1 00:00:17,738 --> 00:00:19,860 Olá, chamo-me Christian Rudder 2 00:00:19,860 --> 00:00:22,110 e fui um dos fundadores do OKCupid. 3 00:00:22,110 --> 00:00:24,502 É um dos maiores sites de encontros nos EUA. 4 00:00:24,502 --> 00:00:26,083 Como quase toda a gente no site, 5 00:00:26,083 --> 00:00:27,464 eu sou formado em matemática 6 00:00:27,464 --> 00:00:30,044 e somos conhecidos pela abordagem analítica ao amor. 7 00:00:30,044 --> 00:00:32,327 Chamamos-lhe o nosso algoritmo casamenteiro. 8 00:00:32,327 --> 00:00:34,206 O algoritmo casamenteiro do OKCupid 9 00:00:34,206 --> 00:00:36,932 ajuda-nos a decidir se duas pessoas se deveriam encontrar. 10 00:00:36,932 --> 00:00:39,186 Construímos todo um negócio à volta disso. 11 00:00:39,186 --> 00:00:40,624 Algoritmo é uma palavra cara, 12 00:00:40,624 --> 00:00:43,920 e as pessoas gostam de a usar como se fosse uma coisa muito especial, 13 00:00:43,920 --> 00:00:45,990 mas não passa de uma maneira sistemática, 14 00:00:45,990 --> 00:00:48,480 de resolver um problema passo-a-passo. 15 00:00:48,480 --> 00:00:50,349 Não tem que ser nada de especial. 16 00:00:50,349 --> 00:00:51,938 Nesta lição, vou explicar 17 00:00:51,938 --> 00:00:54,183 como chegamos ao nosso algoritmo em particular 18 00:00:54,183 --> 00:00:56,102 para verem como se faz. 19 00:00:56,102 --> 00:00:58,112 Porque é que os algoritmos são importantes? 20 00:00:58,112 --> 00:00:59,929 Porque é que esta lição existe? 21 00:00:59,929 --> 00:01:02,488 Reparem na frase muito significativa que eu usei: 22 00:01:02,488 --> 00:01:05,113 são uma maneira de, passo-a-passo, resolver um problema. 23 00:01:05,113 --> 00:01:07,241 Como sabem, os computadores são excelentes 24 00:01:07,241 --> 00:01:09,112 em processos passo-a-passo. 25 00:01:09,112 --> 00:01:10,967 Um computador sem algoritmo 26 00:01:10,967 --> 00:01:13,111 não é passa de um pisa-papéis caro. 27 00:01:13,111 --> 00:01:15,987 Como os computadores são uma parte dominante do dia-a-dia, 28 00:01:15,987 --> 00:01:18,650 os algoritmos estão por todo o lado. 29 00:01:18,388 --> 00:01:20,267 A matemática do algoritmo do OKCupid 30 00:01:20,267 --> 00:01:21,811 é surpreendentemente simples. 31 00:01:21,811 --> 00:01:23,623 É só somar, multiplicar 32 00:01:23,623 --> 00:01:25,676 e algumas raízes quadradas. 33 00:01:25,676 --> 00:01:27,611 A parte complicada de o desenhar, 34 00:01:27,611 --> 00:01:29,782 foi entender como transformar algo misterioso, 35 00:01:29,782 --> 00:01:30,885 a atração humana, 36 00:01:30,885 --> 00:01:34,115 e decompô-la em componentes com que um computador pudesse trabalhar. 37 00:01:34,115 --> 00:01:36,538 Precisávamos de informação para "casar" as pessoas, 38 00:01:36,538 --> 00:01:38,508 para que o algoritmo pudesse trabalhar. 39 00:01:38,508 --> 00:01:41,864 A melhor forma de conseguir informações das pessoas é pedir-lhas. 40 00:01:41,864 --> 00:01:45,180 Portanto, o OKCupid devia fazer perguntas aos utilizadores, como: 41 00:01:45,180 --> 00:01:46,907 "Quer vir a ter filhos?" 42 00:01:46,907 --> 00:01:48,754 "Com que frequência lava os dentes?", 43 00:01:48,754 --> 00:01:50,374 "Gosta de filmes de terror?" 44 00:01:50,374 --> 00:01:53,190 e coisas importante como "Acredita em Deus?" 45 00:01:53,514 --> 00:01:55,486 Convém haver muitas perguntas 46 00:01:55,486 --> 00:01:57,244 para se encontrarem pontos em comum, 47 00:01:57,244 --> 00:01:59,462 ou seja, duas pessoas darem a mesma resposta. 48 00:01:59,462 --> 00:02:02,249 Por exemplo, duas pessoas que gostam de filmes de terror 49 00:02:02,249 --> 00:02:05,000 devem dar-se melhor do que uma que gosta e outra que não. 50 00:02:05,000 --> 00:02:06,521 Mas se for uma pergunta como: 51 00:02:06,521 --> 00:02:08,294 "Gosta de ser o centro das atenções?" 52 00:02:08,294 --> 00:02:11,643 Se as duas pessoas numa relação dizem que sim, 53 00:02:11,643 --> 00:02:13,204 então vão ter grandes problemas. 54 00:02:13,204 --> 00:02:14,647 Depressa percebemos isto, 55 00:02:14,647 --> 00:02:17,550 por isso precisávamos de mais informações em cada pergunta. 56 00:02:17,581 --> 00:02:20,300 Pedimos às pessoas para serem específicas na sua resposta 57 00:02:20,300 --> 00:02:23,442 e também sobre a resposta que queriam da outra pessoa. 58 00:02:23,442 --> 00:02:24,649 Isso resultou muito bem, 59 00:02:24,649 --> 00:02:26,585 mas precisávamos de mais uma dimensão. 60 00:02:26,585 --> 00:02:29,329 Algumas perguntas dizem mais sobre uma pessoa que outras. 61 00:02:29,329 --> 00:02:32,150 Por exemplo, uma pergunta sobre política, tipo: 62 00:02:32,150 --> 00:02:34,841 "O que é pior: queimar livros ou queimar a bandeira?" 63 00:02:34,841 --> 00:02:37,701 pode ser mais reveladora do que a sua preferência em filmes. 64 00:02:37,701 --> 00:02:39,639 Não faz sentido dar o mesmo peso a tudo, 65 00:02:39,639 --> 00:02:41,973 portanto adicionámos um novo ponto de informação. 66 00:02:41,973 --> 00:02:43,913 Em todas as perguntas que o OKCupid faz, 67 00:02:43,913 --> 00:02:46,452 podem dizer-nos o papel que desempenha na vossa vida, 68 00:02:46,452 --> 00:02:49,400 Isto varia de "irrelevante" a "obrigatório". 69 00:02:49,400 --> 00:02:50,974 Portanto, para cada pergunta, 70 00:02:50,974 --> 00:02:52,997 temos três pontos no nosso algoritmo: 71 00:02:52,997 --> 00:02:54,489 primeiro, a vossa resposta; 72 00:02:54,489 --> 00:02:56,656 segundo, a resposta que querem 73 00:02:56,656 --> 00:02:58,953 que o vosso parceiro potencial, dê; 74 00:02:58,953 --> 00:03:01,947 e terceiro, a importância que dão à pergunta.. 75 00:03:02,611 --> 00:03:04,533 Com todas estas informações, 76 00:03:04,533 --> 00:03:07,212 o OKCupid pode perceber se duas pessoas se darão bem. 77 00:03:07,212 --> 00:03:09,773 O algoritmo trabalha os números e dá um resultado. 78 00:03:09,773 --> 00:03:11,756 Como exemplo prático, 79 00:03:11,756 --> 00:03:14,175 vamos ver como vos sugeriríamos outra pessoa, 80 00:03:14,175 --> 00:03:15,570 vamos chamar-lhe "B". 81 00:03:15,570 --> 00:03:17,479 A percentagem de compatibilidade com B 82 00:03:17,479 --> 00:03:19,739 baseia-se nas perguntas a que ambos responderam. 83 00:03:19,739 --> 00:03:22,525 Vamos chamar "s" a este conjunto de perguntas comuns. 84 00:03:22,525 --> 00:03:25,160 Como exemplo simples, usamos um conjunto "s" pequeno 85 00:03:25,160 --> 00:03:26,760 apenas com duas perguntas comuns 86 00:03:26,760 --> 00:03:28,889 e calculamos a compatibilidade a partir daí. 87 00:03:28,889 --> 00:03:30,680 As duas perguntas são estas: 88 00:03:30,680 --> 00:03:32,717 A primeira é: "É desarrumado?" 89 00:03:32,717 --> 00:03:34,711 As possibilidades de resposta são: 90 00:03:34,711 --> 00:03:36,102 muito desarrumado, 91 00:03:36,102 --> 00:03:37,166 normal, 92 00:03:37,166 --> 00:03:38,677 e muito organizado. 93 00:03:38,677 --> 00:03:40,618 Se responderem "muito organizada", 94 00:03:40,618 --> 00:03:43,286 querem que a outra pessoa responda "muito organizado", 95 00:03:43,296 --> 00:03:44,970 e a pergunta for muito importante, 96 00:03:44,970 --> 00:03:46,940 é porque têm a mania da arrumação. 97 00:03:46,940 --> 00:03:49,443 É arrumada e quer que o outro seja arrumado, 98 00:03:49,443 --> 00:03:51,478 Suponhamos que B é um pouco diferente. 99 00:03:51,604 --> 00:03:53,739 Respondeu que é muito organizado, 100 00:03:53,739 --> 00:03:56,813 mas que a outra pessoa pode ser apenas normal, 101 00:03:56,813 --> 00:03:58,948 e que a pergunta não é importante para ele. 102 00:03:58,948 --> 00:04:00,760 Vamos ver a segunda pergunta, 103 00:04:00,760 --> 00:04:02,201 que é a do exemplo anterior: 104 00:04:02,201 --> 00:04:03,998 "Gosta de ser o centro das atenções?" 105 00:04:03,998 --> 00:04:05,662 As resposta são apenas sim e não. 106 00:04:05,662 --> 00:04:08,670 Vocês respondem que "não", querem que o outro responda "não", 107 00:04:08,670 --> 00:04:10,935 e a pergunta não é muito importante. 108 00:04:10,935 --> 00:04:14,261 B respondeu "sim", quer que o outro responda "não", 109 00:04:14,261 --> 00:04:16,858 porque quer que as atenções se concentrem nele, 110 00:04:16,858 --> 00:04:19,461 e a pergunta é mais ou menos importante. 111 00:04:19,461 --> 00:04:21,537 Vamos tentar calcular tudo isto. 112 00:04:21,886 --> 00:04:24,197 Como usamos computadores para fazer isso, 113 00:04:24,197 --> 00:04:26,362 o primeiro passo é atribuir valores numéricos 114 00:04:26,362 --> 00:04:29,241 a ideias como "relativamente importante" e "muito importante" 115 00:04:29,241 --> 00:04:31,777 porque os computadores precisam de tudo em algarismos. 116 00:04:31,777 --> 00:04:34,101 No OKCupid optamos pela seguinte escala: 117 00:04:34,101 --> 00:04:36,790 irrelevante vale 0, 118 00:04:36,790 --> 00:04:38,422 pouca importância vale 1, 119 00:04:38,422 --> 00:04:40,607 alguma importância vale 10, 120 00:04:40,607 --> 00:04:42,868 muito importante vale 50, 121 00:04:42,868 --> 00:04:46,205 e completamente obrigatório vale 250. 122 00:04:46,353 --> 00:04:48,946 A seguir, o algoritmo faz dois simples cálculos. 123 00:04:48,946 --> 00:04:52,246 O primeiro é: quanto é que as respostas de B lhe agradam, 124 00:04:52,246 --> 00:04:55,683 isto é, quantos pontos obteve B na sua escala? 125 00:04:55,683 --> 00:04:58,285 Como indicaram que a resposta de B 126 00:04:58,285 --> 00:05:00,304 à primeira pergunta sobre arrumação 127 00:05:00,304 --> 00:05:01,995 era muito importante, 128 00:05:01,995 --> 00:05:04,525 isso vale 50 pontos e B acertou na resposta. 129 00:05:04,525 --> 00:05:06,220 A segunda pergunta só vale 1 130 00:05:06,220 --> 00:05:08,168 porque disseram que era pouco importante, 131 00:05:08,168 --> 00:05:09,657 e B não acertou. 132 00:05:09,657 --> 00:05:12,465 Portanto as respostas de B valem 50 em 51 pontos possíveis. 133 00:05:12,465 --> 00:05:14,801 Isso é uma satisfação de 98%, É bastante bom. 134 00:05:15,220 --> 00:05:17,126 O segundo cálculo do algoritmo 135 00:05:17,126 --> 00:05:19,181 avalia se as vossas respostas satisfazem B. 136 00:05:19,181 --> 00:05:22,557 B atribui 1 ponto à vossa resposta à pergunta da arrumação 137 00:05:22,557 --> 00:05:25,920 e 10 à vossa resposta à segunda. 138 00:05:25,920 --> 00:05:28,429 Desses 11, ou seja 1 mais 10, ganharam 10, 139 00:05:28,429 --> 00:05:30,785 acertaram na segunda resposta um do outro. 140 00:05:30,785 --> 00:05:33,420 Portanto as respostas deram 10 em 11 141 00:05:33,420 --> 00:05:35,503 o que é 91% satisfatório para B. 142 00:05:35,503 --> 00:05:36,843 Não é nada mau. 143 00:05:36,843 --> 00:05:39,822 O passo final é pegar nas duas percentagens de compatibilidade 144 00:05:39,822 --> 00:05:41,611 e obter um número para os dois. 145 00:05:41,611 --> 00:05:43,894 Para isso, o algoritmo multiplica as pontuações, 146 00:05:43,894 --> 00:05:45,668 depois calcula a raiz de n, 147 00:05:45,668 --> 00:05:47,518 em que n é o número de perguntas. 148 00:05:47,518 --> 00:05:49,822 Como s, que é o número de perguntas, 149 00:05:49,822 --> 00:05:51,970 neste exemplo, é apenas 2, 150 00:05:51,970 --> 00:05:54,977 temos uma percentagem de compatibilidade 151 00:05:54,977 --> 00:05:58,554 igual à raiz quadrada de 98% vezes 91%. 152 00:05:58,554 --> 00:06:00,430 Isto dá 94%. 153 00:06:00,430 --> 00:06:03,246 Estes 94% são a vossa percentagem de compatibilidade com B. 154 00:06:03,246 --> 00:06:06,371 É uma expressão matemática de como se darão bem 155 00:06:06,405 --> 00:06:08,127 com base no que sabemos. 156 00:06:08,127 --> 00:06:10,095 Porque é que o algoritmo multiplica, 157 00:06:10,095 --> 00:06:12,284 em vez de fazer a média das duas percentagens 158 00:06:12,284 --> 00:06:13,919 e depois fazer a raiz quadrada? 159 00:06:13,919 --> 00:06:16,268 Esta fórmula chama-se média geométrica, 160 00:06:16,268 --> 00:06:18,102 uma excelente forma de combinar valores 161 00:06:18,102 --> 00:06:19,697 que apresentam grandes variações 162 00:06:19,697 --> 00:06:21,808 e representam propriedades muito diferentes. 163 00:06:21,808 --> 00:06:23,816 É perfeita para compatibilidade romântica. 164 00:06:23,816 --> 00:06:26,574 Temos grandes variações e milhares de diferentes dados, 165 00:06:26,574 --> 00:06:28,356 sobre filmes, sobre política, 166 00:06:28,356 --> 00:06:30,506 sobre religião, sobre tudo. 167 00:06:30,506 --> 00:06:32,771 De uma forma intuitiva, isto faz sentido. 168 00:06:32,771 --> 00:06:35,233 Duas pessoas que correspondam a 50% 169 00:06:35,233 --> 00:06:36,799 devem ser mais compatíveis 170 00:06:36,799 --> 00:06:39,590 que outras que têm compatibilidade a 0 e 100, 171 00:06:39,590 --> 00:06:41,247 porque o afeto tem que ser mútuo. 172 00:06:41,247 --> 00:06:44,189 Depois de pequenas correções para permitir uma margem de erro, 173 00:06:44,189 --> 00:06:47,254 se o número de perguntas for muito reduzido, como neste exemplo, 174 00:06:47,254 --> 00:06:48,856 estamos prontos. 175 00:06:48,856 --> 00:06:51,138 Sempre que o OKCupid compara duas pessoas, 176 00:06:51,138 --> 00:06:53,202 segue os passos que acabámos de explicar. 177 00:06:53,202 --> 00:06:55,178 Primeiro recolhe os dados das respostas, 178 00:06:55,178 --> 00:06:58,294 depois compara as escolhas e preferências com outras pessoas 179 00:06:58,294 --> 00:06:59,876 de forma simples e matemática. 180 00:06:59,876 --> 00:07:02,968 Acho que esta capacidade de pegar em fenómenos do mundo real 181 00:07:02,968 --> 00:07:06,054 e transformá-los em algo que um microchip consegue compreender, 182 00:07:06,054 --> 00:07:09,143 é a capacidade mais importante que uma pessoa pode ter atualmente. 183 00:07:09,143 --> 00:07:11,803 Tal como usamos frases para contar histórias às pessoas, 184 00:07:11,803 --> 00:07:14,465 usamos algoritmos para contar histórias a um computador. 185 00:07:14,465 --> 00:07:15,836 Se aprendermos a linguagem, 186 00:07:15,836 --> 00:07:18,117 podemos sair e contar histórias. 187 00:07:18,117 --> 00:07:20,388 Espero que isto vos ajude a fazer isso.