WEBVTT 00:00:17.738 --> 00:00:19.860 Olá, chamo-me Christian Rudder 00:00:19.860 --> 00:00:22.110 e fui um dos fundadores do OKCupid. 00:00:22.110 --> 00:00:24.502 É um dos maiores sites de encontros nos EUA. 00:00:24.502 --> 00:00:26.083 Como quase toda a gente no site, 00:00:26.083 --> 00:00:27.464 eu sou formado em matemática 00:00:27.464 --> 00:00:30.044 e somos conhecidos pela abordagem analítica ao amor. 00:00:30.044 --> 00:00:32.327 Chamamos-lhe o nosso algoritmo casamenteiro. 00:00:32.327 --> 00:00:34.206 O algoritmo casamenteiro do OKCupid 00:00:34.206 --> 00:00:36.932 ajuda-nos a decidir se duas pessoas se deveriam encontrar. 00:00:36.932 --> 00:00:39.186 Construímos todo um negócio à volta disso. 00:00:39.186 --> 00:00:40.624 Algoritmo é uma palavra cara, 00:00:40.624 --> 00:00:43.920 e as pessoas gostam de a usar como se fosse uma coisa muito especial, 00:00:43.920 --> 00:00:45.990 mas não passa de uma maneira sistemática, 00:00:45.990 --> 00:00:48.480 de resolver um problema passo-a-passo. 00:00:48.480 --> 00:00:50.349 Não tem que ser nada de especial. 00:00:50.349 --> 00:00:51.938 Nesta lição, vou explicar 00:00:51.938 --> 00:00:54.183 como chegamos ao nosso algoritmo em particular 00:00:54.183 --> 00:00:56.102 para verem como se faz. 00:00:56.102 --> 00:00:58.112 Porque é que os algoritmos são importantes? 00:00:58.112 --> 00:00:59.929 Porque é que esta lição existe? 00:00:59.929 --> 00:01:02.488 Reparem na frase muito significativa que eu usei: 00:01:02.488 --> 00:01:05.113 são uma maneira de, passo-a-passo, resolver um problema. 00:01:05.113 --> 00:01:07.241 Como sabem, os computadores são excelentes 00:01:07.241 --> 00:01:09.112 em processos passo-a-passo. 00:01:09.112 --> 00:01:10.967 Um computador sem algoritmo 00:01:10.967 --> 00:01:13.111 não é passa de um pisa-papéis caro. 00:01:13.111 --> 00:01:15.987 Como os computadores são uma parte dominante do dia-a-dia, 00:01:15.987 --> 00:01:18.650 os algoritmos estão por todo o lado. 00:01:18.388 --> 00:01:20.267 A matemática do algoritmo do OKCupid 00:01:20.267 --> 00:01:21.811 é surpreendentemente simples. 00:01:21.811 --> 00:01:23.623 É só somar, multiplicar 00:01:23.623 --> 00:01:25.676 e algumas raízes quadradas. 00:01:25.676 --> 00:01:27.611 A parte complicada de o desenhar, 00:01:27.611 --> 00:01:29.782 foi entender como transformar algo misterioso, 00:01:29.782 --> 00:01:30.885 a atração humana, 00:01:30.885 --> 00:01:34.115 e decompô-la em componentes com que um computador pudesse trabalhar. 00:01:34.115 --> 00:01:36.538 Precisávamos de informação para "casar" as pessoas, 00:01:36.538 --> 00:01:38.508 para que o algoritmo pudesse trabalhar. 00:01:38.508 --> 00:01:41.864 A melhor forma de conseguir informações das pessoas é pedir-lhas. 00:01:41.864 --> 00:01:45.180 Portanto, o OKCupid devia fazer perguntas aos utilizadores, como: 00:01:45.180 --> 00:01:46.907 "Quer vir a ter filhos?" 00:01:46.907 --> 00:01:48.754 "Com que frequência lava os dentes?", 00:01:48.754 --> 00:01:50.374 "Gosta de filmes de terror?" 00:01:50.374 --> 00:01:53.190 e coisas importante como "Acredita em Deus?" 00:01:53.514 --> 00:01:55.486 Convém haver muitas perguntas 00:01:55.486 --> 00:01:57.244 para se encontrarem pontos em comum, 00:01:57.244 --> 00:01:59.462 ou seja, duas pessoas darem a mesma resposta. 00:01:59.462 --> 00:02:02.249 Por exemplo, duas pessoas que gostam de filmes de terror 00:02:02.249 --> 00:02:05.000 devem dar-se melhor do que uma que gosta e outra que não. 00:02:05.000 --> 00:02:06.521 Mas se for uma pergunta como: 00:02:06.521 --> 00:02:08.294 "Gosta de ser o centro das atenções?" 00:02:08.294 --> 00:02:11.643 Se as duas pessoas numa relação dizem que sim, 00:02:11.643 --> 00:02:13.204 então vão ter grandes problemas. 00:02:13.204 --> 00:02:14.647 Depressa percebemos isto, 00:02:14.647 --> 00:02:17.550 por isso precisávamos de mais informações em cada pergunta. 00:02:17.581 --> 00:02:20.300 Pedimos às pessoas para serem específicas na sua resposta 00:02:20.300 --> 00:02:23.442 e também sobre a resposta que queriam da outra pessoa. 00:02:23.442 --> 00:02:24.649 Isso resultou muito bem, 00:02:24.649 --> 00:02:26.585 mas precisávamos de mais uma dimensão. 00:02:26.585 --> 00:02:29.329 Algumas perguntas dizem mais sobre uma pessoa que outras. 00:02:29.329 --> 00:02:32.150 Por exemplo, uma pergunta sobre política, tipo: 00:02:32.150 --> 00:02:34.841 "O que é pior: queimar livros ou queimar a bandeira?" 00:02:34.841 --> 00:02:37.701 pode ser mais reveladora do que a sua preferência em filmes. 00:02:37.701 --> 00:02:39.639 Não faz sentido dar o mesmo peso a tudo, 00:02:39.639 --> 00:02:41.973 portanto adicionámos um novo ponto de informação. 00:02:41.973 --> 00:02:43.913 Em todas as perguntas que o OKCupid faz, 00:02:43.913 --> 00:02:46.452 podem dizer-nos o papel que desempenha na vossa vida, 00:02:46.452 --> 00:02:49.400 Isto varia de "irrelevante" a "obrigatório". 00:02:49.400 --> 00:02:50.974 Portanto, para cada pergunta, 00:02:50.974 --> 00:02:52.997 temos três pontos no nosso algoritmo: 00:02:52.997 --> 00:02:54.489 primeiro, a vossa resposta; 00:02:54.489 --> 00:02:56.656 segundo, a resposta que querem 00:02:56.656 --> 00:02:58.953 que o vosso parceiro potencial, dê; 00:02:58.953 --> 00:03:01.947 e terceiro, a importância que dão à pergunta.. 00:03:02.611 --> 00:03:04.533 Com todas estas informações, 00:03:04.533 --> 00:03:07.212 o OKCupid pode perceber se duas pessoas se darão bem. 00:03:07.212 --> 00:03:09.773 O algoritmo trabalha os números e dá um resultado. 00:03:09.773 --> 00:03:11.756 Como exemplo prático, 00:03:11.756 --> 00:03:14.175 vamos ver como vos sugeriríamos outra pessoa, 00:03:14.175 --> 00:03:15.570 vamos chamar-lhe "B". 00:03:15.570 --> 00:03:17.479 A percentagem de compatibilidade com B 00:03:17.479 --> 00:03:19.739 baseia-se nas perguntas a que ambos responderam. 00:03:19.739 --> 00:03:22.525 Vamos chamar "s" a este conjunto de perguntas comuns. 00:03:22.525 --> 00:03:25.160 Como exemplo simples, usamos um conjunto "s" pequeno 00:03:25.160 --> 00:03:26.760 apenas com duas perguntas comuns 00:03:26.760 --> 00:03:28.889 e calculamos a compatibilidade a partir daí. 00:03:28.889 --> 00:03:30.680 As duas perguntas são estas: 00:03:30.680 --> 00:03:32.717 A primeira é: "É desarrumado?" 00:03:32.717 --> 00:03:34.711 As possibilidades de resposta são: 00:03:34.711 --> 00:03:36.102 muito desarrumado, 00:03:36.102 --> 00:03:37.166 normal, 00:03:37.166 --> 00:03:38.677 e muito organizado. 00:03:38.677 --> 00:03:40.618 Se responderem "muito organizada", 00:03:40.618 --> 00:03:43.286 querem que a outra pessoa responda "muito organizado", 00:03:43.296 --> 00:03:44.970 e a pergunta for muito importante, 00:03:44.970 --> 00:03:46.940 é porque têm a mania da arrumação. 00:03:46.940 --> 00:03:49.443 É arrumada e quer que o outro seja arrumado, 00:03:49.443 --> 00:03:51.478 Suponhamos que B é um pouco diferente. 00:03:51.604 --> 00:03:53.739 Respondeu que é muito organizado, 00:03:53.739 --> 00:03:56.813 mas que a outra pessoa pode ser apenas normal, 00:03:56.813 --> 00:03:58.948 e que a pergunta não é importante para ele. 00:03:58.948 --> 00:04:00.760 Vamos ver a segunda pergunta, 00:04:00.760 --> 00:04:02.201 que é a do exemplo anterior: 00:04:02.201 --> 00:04:03.998 "Gosta de ser o centro das atenções?" 00:04:03.998 --> 00:04:05.662 As resposta são apenas sim e não. 00:04:05.662 --> 00:04:08.670 Vocês respondem que "não", querem que o outro responda "não", 00:04:08.670 --> 00:04:10.935 e a pergunta não é muito importante. 00:04:10.935 --> 00:04:14.261 B respondeu "sim", quer que o outro responda "não", 00:04:14.261 --> 00:04:16.858 porque quer que as atenções se concentrem nele, 00:04:16.858 --> 00:04:19.461 e a pergunta é mais ou menos importante. 00:04:19.461 --> 00:04:21.537 Vamos tentar calcular tudo isto. 00:04:21.886 --> 00:04:24.197 Como usamos computadores para fazer isso, 00:04:24.197 --> 00:04:26.362 o primeiro passo é atribuir valores numéricos 00:04:26.362 --> 00:04:29.241 a ideias como "relativamente importante" e "muito importante" 00:04:29.241 --> 00:04:31.777 porque os computadores precisam de tudo em algarismos. 00:04:31.777 --> 00:04:34.101 No OKCupid optamos pela seguinte escala: 00:04:34.101 --> 00:04:36.790 irrelevante vale 0, 00:04:36.790 --> 00:04:38.422 pouca importância vale 1, 00:04:38.422 --> 00:04:40.607 alguma importância vale 10, 00:04:40.607 --> 00:04:42.868 muito importante vale 50, 00:04:42.868 --> 00:04:46.205 e completamente obrigatório vale 250. 00:04:46.353 --> 00:04:48.946 A seguir, o algoritmo faz dois simples cálculos. 00:04:48.946 --> 00:04:52.246 O primeiro é: quanto é que as respostas de B lhe agradam, 00:04:52.246 --> 00:04:55.683 isto é, quantos pontos obteve B na sua escala? 00:04:55.683 --> 00:04:58.285 Como indicaram que a resposta de B 00:04:58.285 --> 00:05:00.304 à primeira pergunta sobre arrumação 00:05:00.304 --> 00:05:01.995 era muito importante, 00:05:01.995 --> 00:05:04.525 isso vale 50 pontos e B acertou na resposta. 00:05:04.525 --> 00:05:06.220 A segunda pergunta só vale 1 00:05:06.220 --> 00:05:08.168 porque disseram que era pouco importante, 00:05:08.168 --> 00:05:09.657 e B não acertou. 00:05:09.657 --> 00:05:12.465 Portanto as respostas de B valem 50 em 51 pontos possíveis. 00:05:12.465 --> 00:05:14.801 Isso é uma satisfação de 98%, É bastante bom. 00:05:15.220 --> 00:05:17.126 O segundo cálculo do algoritmo 00:05:17.126 --> 00:05:19.181 avalia se as vossas respostas satisfazem B. 00:05:19.181 --> 00:05:22.557 B atribui 1 ponto à vossa resposta à pergunta da arrumação 00:05:22.557 --> 00:05:25.920 e 10 à vossa resposta à segunda. 00:05:25.920 --> 00:05:28.429 Desses 11, ou seja 1 mais 10, ganharam 10, 00:05:28.429 --> 00:05:30.785 acertaram na segunda resposta um do outro. 00:05:30.785 --> 00:05:33.420 Portanto as respostas deram 10 em 11 00:05:33.420 --> 00:05:35.503 o que é 91% satisfatório para B. 00:05:35.503 --> 00:05:36.843 Não é nada mau. 00:05:36.843 --> 00:05:39.822 O passo final é pegar nas duas percentagens de compatibilidade 00:05:39.822 --> 00:05:41.611 e obter um número para os dois. 00:05:41.611 --> 00:05:43.894 Para isso, o algoritmo multiplica as pontuações, 00:05:43.894 --> 00:05:45.668 depois calcula a raiz de n, 00:05:45.668 --> 00:05:47.518 em que n é o número de perguntas. 00:05:47.518 --> 00:05:49.822 Como s, que é o número de perguntas, 00:05:49.822 --> 00:05:51.970 neste exemplo, é apenas 2, 00:05:51.970 --> 00:05:54.977 temos uma percentagem de compatibilidade 00:05:54.977 --> 00:05:58.554 igual à raiz quadrada de 98% vezes 91%. 00:05:58.554 --> 00:06:00.430 Isto dá 94%. 00:06:00.430 --> 00:06:03.246 Estes 94% são a vossa percentagem de compatibilidade com B. 00:06:03.246 --> 00:06:06.371 É uma expressão matemática de como se darão bem 00:06:06.405 --> 00:06:08.127 com base no que sabemos. 00:06:08.127 --> 00:06:10.095 Porque é que o algoritmo multiplica, 00:06:10.095 --> 00:06:12.284 em vez de fazer a média das duas percentagens 00:06:12.284 --> 00:06:13.919 e depois fazer a raiz quadrada? 00:06:13.919 --> 00:06:16.268 Esta fórmula chama-se média geométrica, 00:06:16.268 --> 00:06:18.102 uma excelente forma de combinar valores 00:06:18.102 --> 00:06:19.697 que apresentam grandes variações 00:06:19.697 --> 00:06:21.808 e representam propriedades muito diferentes. 00:06:21.808 --> 00:06:23.816 É perfeita para compatibilidade romântica. 00:06:23.816 --> 00:06:26.574 Temos grandes variações e milhares de diferentes dados, 00:06:26.574 --> 00:06:28.356 sobre filmes, sobre política, 00:06:28.356 --> 00:06:30.506 sobre religião, sobre tudo. 00:06:30.506 --> 00:06:32.771 De uma forma intuitiva, isto faz sentido. 00:06:32.771 --> 00:06:35.233 Duas pessoas que correspondam a 50% 00:06:35.233 --> 00:06:36.799 devem ser mais compatíveis 00:06:36.799 --> 00:06:39.590 que outras que têm compatibilidade a 0 e 100, 00:06:39.590 --> 00:06:41.247 porque o afeto tem que ser mútuo. 00:06:41.247 --> 00:06:44.189 Depois de pequenas correções para permitir uma margem de erro, 00:06:44.189 --> 00:06:47.254 se o número de perguntas for muito reduzido, como neste exemplo, 00:06:47.254 --> 00:06:48.856 estamos prontos. 00:06:48.856 --> 00:06:51.138 Sempre que o OKCupid compara duas pessoas, 00:06:51.138 --> 00:06:53.202 segue os passos que acabámos de explicar. 00:06:53.202 --> 00:06:55.178 Primeiro recolhe os dados das respostas, 00:06:55.178 --> 00:06:58.294 depois compara as escolhas e preferências com outras pessoas 00:06:58.294 --> 00:06:59.876 de forma simples e matemática. 00:06:59.876 --> 00:07:02.968 Acho que esta capacidade de pegar em fenómenos do mundo real 00:07:02.968 --> 00:07:06.054 e transformá-los em algo que um microchip consegue compreender, 00:07:06.054 --> 00:07:09.143 é a capacidade mais importante que uma pessoa pode ter atualmente. 00:07:09.143 --> 00:07:11.803 Tal como usamos frases para contar histórias às pessoas, 00:07:11.803 --> 00:07:14.465 usamos algoritmos para contar histórias a um computador. 00:07:14.465 --> 00:07:15.836 Se aprendermos a linguagem, 00:07:15.836 --> 00:07:18.117 podemos sair e contar histórias. 00:07:18.117 --> 00:07:20.388 Espero que isto vos ajude a fazer isso.