1 00:00:17,602 --> 00:00:19,239 Ciao mi chiamo Christian Rudder 2 00:00:19,239 --> 00:00:21,875 e sono uno dei fondatori di OK Cupid. 3 00:00:21,875 --> 00:00:24,502 È uno dei maggiori siti di incontri del momento negli Stai Uniti. 4 00:00:24,502 --> 00:00:25,749 Come quasi tutti al sito, 5 00:00:25,749 --> 00:00:27,296 ero specializzato in matematica, e come potete immaginare 6 00:00:27,296 --> 00:00:28,644 siamo conosciuti per l'approccio analitico 7 00:00:28,644 --> 00:00:29,887 che abbiamo dato all'amore. 8 00:00:29,887 --> 00:00:31,717 Noi lo chiamiamo il nostro algoritmo di compatibilità. 9 00:00:31,717 --> 00:00:33,428 Sostanzialmente, l'algoritmo di compatibilità di OK Cupid 10 00:00:33,428 --> 00:00:36,481 ci aiuta a decidere se due persone dovrebbero o meno incontrarsi. 11 00:00:36,481 --> 00:00:38,765 Ci abbiamo costruito intorno un intero business. 12 00:00:38,765 --> 00:00:40,572 L'algoritmo è una bella parola, 13 00:00:40,572 --> 00:00:43,047 ma alla gente piace considerarlo una grande cosa, 14 00:00:43,047 --> 00:00:45,148 ma, sul serio, un algoritmo è solo un modo sistematico 15 00:00:45,148 --> 00:00:47,817 e progressivo di risolvere un problema. 16 00:00:47,817 --> 00:00:49,949 Non deve essere per nulla fantastico. 17 00:00:49,949 --> 00:00:51,802 In questa lezione, spiegherò 18 00:00:51,802 --> 00:00:53,657 come arriviamo al nostro algoritmo specifico 19 00:00:53,657 --> 00:00:55,660 così potrete vedere come funziona. 20 00:00:55,660 --> 00:00:57,576 Allora, perché gli algoritmi sono comunque importanti? 21 00:00:57,576 --> 00:00:59,045 Perché questa lezione esiste? 22 00:00:59,045 --> 00:01:02,457 Notate una frase molto importante che ho utilizzato in precedenza: 23 00:01:02,457 --> 00:01:05,029 sono metodi progressivi di risolvere un problema 24 00:01:05,029 --> 00:01:05,841 e, come probabilmente sapete, 25 00:01:05,841 --> 00:01:08,470 i computer eccellono nei processi passo dopo passo. 26 00:01:08,470 --> 00:01:09,588 Un computer senza algoritmo 27 00:01:09,588 --> 00:01:12,933 è sostanzialmente un fermacarte molto costoso. 28 00:01:12,933 --> 00:01:15,430 ed essendo i computer così diffusi nella vita quotidiana, 29 00:01:15,430 --> 00:01:17,223 gli algoritmi sono ovunque. 30 00:01:18,515 --> 00:01:20,267 La matematica dietro all'algoritmo di compatibilità di Ok Cupid 31 00:01:20,267 --> 00:01:21,811 è sorprendentemente semplice. 32 00:01:21,811 --> 00:01:22,629 Solo alcune addizioni, 33 00:01:22,629 --> 00:01:23,687 moltiplicazioni, 34 00:01:23,687 --> 00:01:25,340 qualche radice quadrata. 35 00:01:25,340 --> 00:01:27,611 La parte difficile della progettazione, quindi, 36 00:01:27,611 --> 00:01:30,235 è capire come prendere qualcosa di misterioso, 37 00:01:30,235 --> 00:01:31,212 l'attrazione umana, 38 00:01:31,212 --> 00:01:33,810 e dividerla in componenti con cui un computer può lavorare. 39 00:01:33,810 --> 00:01:36,360 La prima cosa di cui avevamo bisogno per confrontare le persone sono i dati, 40 00:01:36,360 --> 00:01:38,382 qualcosa su cui far lavorare l'algoritmo. 41 00:01:38,382 --> 00:01:40,412 Il miglior modo per ricevere dati dalle perosne 42 00:01:40,412 --> 00:01:41,747 è chiederli. 43 00:01:41,747 --> 00:01:44,166 Quindi abbiamo deciso che OK Cupid avrebbe fatto domande agli utenti, 44 00:01:44,166 --> 00:01:46,834 cose come, "Vorresti avere figli un giorno?" 45 00:01:46,834 --> 00:01:48,754 o "Con quale frequenza ti lavi i denti?", 46 00:01:48,754 --> 00:01:50,227 "Ti piacciono i film dell'orrore?" 47 00:01:50,227 --> 00:01:53,514 e cose importanti come "Credi in Dio?" 48 00:01:53,514 --> 00:01:55,308 Molte domande sono utili 49 00:01:55,308 --> 00:01:56,381 per abbinare le persone simili, 50 00:01:56,381 --> 00:01:59,052 questo succede quando entrambi rispondono allo stesso modo. 51 00:01:59,052 --> 00:02:01,471 Ad esempio, due persone a cui piacciono gli horror 52 00:02:01,471 --> 00:02:02,684 probabilmente sono più compatibili 53 00:02:02,684 --> 00:02:03,843 di una a cui piacciono 54 00:02:03,843 --> 00:02:05,115 e una a cui non piacciono. 55 00:02:05,115 --> 00:02:06,480 E invece nel caso di domande come, 56 00:02:06,480 --> 00:02:08,189 "Ti piace essere al centro dell'attenzione?" 57 00:02:08,189 --> 00:02:10,729 Se due persone che stanno insieme rispondono di si, 58 00:02:10,729 --> 00:02:13,068 avranno grossi problemi. 59 00:02:13,068 --> 00:02:14,447 L'abbiamo capito subito, 60 00:02:14,447 --> 00:02:15,614 così abbiamo deciso che avevamo bisogno 61 00:02:15,614 --> 00:02:17,581 di qualche dato in più da ogni domanda. 62 00:02:17,581 --> 00:02:20,332 Dovevamo chiedere alle persone non solo la loro risposta 63 00:02:20,332 --> 00:02:23,038 ma anche che volevano da qualcun altro. 64 00:02:23,038 --> 00:02:24,207 Ha funzionato molto bene, 65 00:02:24,207 --> 00:02:26,291 ma ci serviva un'altra dimensione. 66 00:02:26,291 --> 00:02:28,835 Alcune risposte ci dicono di più rispetto ad altre. 67 00:02:28,835 --> 00:02:31,795 Ad esempio una domanda sulla politica, come, 68 00:02:31,795 --> 00:02:34,589 "Cosa è peggio: bruciare un libro o una bandiera?" 69 00:02:34,589 --> 00:02:37,207 potrebbe rivelare di più rispetto alle preferenze sui film. 70 00:02:37,207 --> 00:02:39,387 E non ha senso dare a tutto lo stesso peso, 71 00:02:39,387 --> 00:02:41,605 così abbiamo aggiunto un ultimo punto. 72 00:02:41,605 --> 00:02:43,440 Per ogni cosa che OK Cupid vi chiede, 73 00:02:43,440 --> 00:02:44,642 potete dirci 74 00:02:44,642 --> 00:02:46,223 il ruolo che ha nella vostra vita, 75 00:02:46,223 --> 00:02:49,089 e i campi variano dall'irrilevante al fondamentale. 76 00:02:49,089 --> 00:02:50,564 Quindi, per ogni domanda, 77 00:02:50,564 --> 00:02:52,692 abbiamo 3 elementi per il nostro algoritmo: 78 00:02:52,692 --> 00:02:54,068 primo, la vostra risposta; 79 00:02:54,068 --> 00:02:56,362 secondo, come vorreste che l'altro, 80 00:02:56,362 --> 00:02:57,196 il vostro potenziale partner, 81 00:02:57,196 --> 00:02:58,781 rispondesse; 82 00:02:58,781 --> 00:03:02,327 e terzo, quanto questa risposta è importante per voi. 83 00:03:02,327 --> 00:03:03,702 Con tutte queste informazioni, 84 00:03:03,702 --> 00:03:07,128 OK Cupid può scoprire quanto due persone andranno d'accordo. 85 00:03:07,128 --> 00:03:09,458 L'algoritmo elabora i numeri e ci dà un risultato. 86 00:03:09,458 --> 00:03:11,262 Un esempio pratico. 87 00:03:11,262 --> 00:03:13,712 vediamo come vi abbineremmo a un'altra persona, 88 00:03:13,712 --> 00:03:15,581 chiamiamola "B". 89 00:03:15,581 --> 00:03:17,479 La vostra affinità con B è basata 90 00:03:17,479 --> 00:03:19,424 sulle domande a cui entrambi avete risposto. 91 00:03:19,424 --> 00:03:21,978 Chiamiamo quel gruppo di domande in comune "s". 92 00:03:21,978 --> 00:03:24,932 Per fare un semplice esempio, useremo un piccolo gruppo "s" 93 00:03:24,932 --> 00:03:26,434 con solo 2 domande in comune 94 00:03:26,434 --> 00:03:28,310 e da li calcoleremo l'affinità. 95 00:03:28,310 --> 00:03:30,144 Ecco due domande campione. 96 00:03:30,144 --> 00:03:32,349 La prima, diciamo, è "Quanto sei disordinato?" 97 00:03:32,349 --> 00:03:34,669 e le possibili risposte sono 98 00:03:34,669 --> 00:03:35,618 molto disordinato, 99 00:03:35,618 --> 00:03:36,398 nella media, 100 00:03:36,398 --> 00:03:38,172 molto organizzato. 101 00:03:38,172 --> 00:03:39,755 Diciamo che rispondete "molto organizzato", 102 00:03:39,755 --> 00:03:42,581 e vorreste che l'altro risponda "molto organizzato" 103 00:03:42,581 --> 00:03:45,202 e la risposta per voi è molto importante. 104 00:03:45,202 --> 00:03:46,498 Siete sostanzialmente dei maniaci della pulizia. 105 00:03:46,498 --> 00:03:47,212 Siete puliti, 106 00:03:47,212 --> 00:03:48,296 volete che l'altro sia pulito, 107 00:03:48,296 --> 00:03:49,248 tutto qui. 108 00:03:49,248 --> 00:03:51,015 Diciamo che B è leggermente diverso. 109 00:03:51,015 --> 00:03:53,539 Ha risposto di essere molto organizzato 110 00:03:53,539 --> 00:03:55,171 ma per lui nella media va bene lo stesso 111 00:03:55,171 --> 00:03:56,740 come risposta dell'altro 112 00:03:56,740 --> 00:03:58,748 e la domanda per lui non è molto importante. 113 00:03:58,748 --> 00:04:00,308 Vediamo la seconda domanda, 114 00:04:00,308 --> 00:04:01,896 è di un nostro esempio precedente: 115 00:04:01,896 --> 00:04:03,653 "Ti piace essere al centro dell'attenzione?" 116 00:04:03,653 --> 00:04:05,231 Le risposte sono solo si o no. 117 00:04:05,231 --> 00:04:06,407 Voi avete risposto di "no", 118 00:04:06,407 --> 00:04:08,235 volete che l'altro risponda "no" 119 00:04:08,235 --> 00:04:10,862 e la domanda per voi non è molto importante. 120 00:04:10,862 --> 00:04:12,419 B ha risposto "sì", 121 00:04:12,419 --> 00:04:14,087 e vuole che l'altro risponda "no", 122 00:04:14,087 --> 00:04:16,332 perché vuole i riflettori puntati su di lui, 123 00:04:16,332 --> 00:04:19,335 e la domanda per lui è abbastanza importante. 124 00:04:19,335 --> 00:04:21,716 Adesso, proviamo ad elaborare tutto questo. 125 00:04:21,716 --> 00:04:22,855 Il primo passo è, 126 00:04:22,855 --> 00:04:24,376 siccome usiamo i computer 127 00:04:24,376 --> 00:04:26,162 dobbiamo assegnare dei valori numerici 128 00:04:26,162 --> 00:04:29,041 alle idee come, "abbastanza importante" e "molto importante" 129 00:04:29,041 --> 00:04:31,335 perché i computer hanno bisogno di numeri. 130 00:04:31,335 --> 00:04:33,523 Noi di OK Cupid abbiamo deciso di dare i seguenti valori: 131 00:04:33,523 --> 00:04:35,858 irrilevante corrisponde a 0 132 00:04:35,858 --> 00:04:38,307 non molto importante a 1, 133 00:04:38,307 --> 00:04:40,302 abbastanza importante vale 10, 134 00:04:40,302 --> 00:04:42,426 molto importante è uguale a 50, 135 00:04:42,426 --> 00:04:46,353 e fondamentale è uguale a 250. 136 00:04:46,353 --> 00:04:48,852 In seguito, l'algoritmo fa due semplici calcoli. 137 00:04:48,852 --> 00:04:51,941 Primo, quanto siete soddisfatti della risposta di B, 138 00:04:51,941 --> 00:04:55,568 cioè, quanti punti ha segnato B sulla vostra graduatoria? 139 00:04:55,568 --> 00:04:58,138 Voi indicate che la risposta di B 140 00:04:58,138 --> 00:04:59,947 alla prima domanda quella sul disordine 141 00:04:59,947 --> 00:05:01,448 è molto importante per voi. 142 00:05:01,448 --> 00:05:04,041 Vale 50 punti e B li ha guadagnati. 143 00:05:04,041 --> 00:05:05,947 La seconda domanda vale solo 1 144 00:05:05,947 --> 00:05:07,558 perché avete detto che non è molto importante, 145 00:05:07,558 --> 00:05:09,036 e B ha risposto male. 146 00:05:09,036 --> 00:05:12,392 Quindi B ha segnato 50 punti su 51. 147 00:05:12,392 --> 00:05:14,023 È soddisfacente al 98%. 148 00:05:14,023 --> 00:05:15,220 Abbastanza buono. 149 00:05:15,220 --> 00:05:16,832 La seconda domanda dell'algoritmo guarda 150 00:05:16,832 --> 00:05:18,918 quanto B è soddisfatto di voi. 151 00:05:18,918 --> 00:05:20,768 Allora, B ha dato 1 punto alla vostra risposta 152 00:05:20,768 --> 00:05:22,353 sulla domanda sul disordine 153 00:05:22,353 --> 00:05:24,745 e 10 alla vostra seconda risposta. 154 00:05:24,745 --> 00:05:27,156 Di questi 11, ossia 1 più 10, 155 00:05:27,156 --> 00:05:28,324 ne avete guadagnati 10, 156 00:05:28,324 --> 00:05:30,617 siete soddisfatti l'uno dell'altro sulla seconda risposta. 157 00:05:30,617 --> 00:05:32,611 Quindi le vostre risposte valgono 10 su 11 158 00:05:32,611 --> 00:05:35,240 pari al 91% di soddisfazione di B. 159 00:05:35,240 --> 00:05:36,117 Niente male. 160 00:05:36,117 --> 00:05:38,286 Il processo finale è prendere queste due percentuali 161 00:05:38,286 --> 00:05:40,454 e trovare un numero per entrambi. 162 00:05:40,454 --> 00:05:42,747 Per fare ciò, l'algoritmo moltiplica i vostri punti 163 00:05:42,747 --> 00:05:44,500 poi estrae la radice n-esima, 164 00:05:44,500 --> 00:05:46,792 dove n è il numero delle domande. 165 00:05:46,792 --> 00:05:49,401 Perché s, che è il numero delle domande 166 00:05:49,401 --> 00:05:51,507 in questo caso è solo 2, 167 00:05:51,507 --> 00:05:54,093 abbiamo percentuali di compatibilità pari 168 00:05:54,093 --> 00:05:58,154 alla radice quadrata di 98% x 91% 169 00:05:58,154 --> 00:06:00,304 Cioè 94% 170 00:06:00,304 --> 00:06:03,194 Questo 94% è la vostra affinità con B. 171 00:06:03,194 --> 00:06:04,561 È un' espressione matematica 172 00:06:04,561 --> 00:06:06,405 di quanto sareste felici insieme 173 00:06:06,405 --> 00:06:07,749 basandoci su ciò che sappiamo. 174 00:06:07,749 --> 00:06:10,131 Ma perché l'algoritmo moltiplica invece di, diciamo, 175 00:06:10,131 --> 00:06:12,284 fare la media dei due punteggi 176 00:06:12,284 --> 00:06:14,530 e fare la radice quadrata? 177 00:06:14,530 --> 00:06:16,479 Generalmente questa formula è chiamata media geometrica, 178 00:06:16,479 --> 00:06:17,881 che è un ottimo modo per combinare valori 179 00:06:17,881 --> 00:06:19,076 con ampie variazioni 180 00:06:19,076 --> 00:06:20,861 e che rappresentano proprietà differenti. 181 00:06:20,861 --> 00:06:23,164 In altre parole, è perfetto per l'affinità romantica. 182 00:06:23,164 --> 00:06:24,248 Avete variazioni ampie 183 00:06:24,248 --> 00:06:26,206 e tanti dati differenti, 184 00:06:26,206 --> 00:06:27,156 come ho dicevo, sui film, 185 00:06:27,156 --> 00:06:28,006 la politica, 186 00:06:28,006 --> 00:06:29,201 la religione, 187 00:06:29,201 --> 00:06:30,395 su tutto. 188 00:06:30,395 --> 00:06:32,256 Istintivamente, tutto questo ha senso. 189 00:06:32,256 --> 00:06:34,918 Due persone soddisfatte al 50% 190 00:06:34,918 --> 00:06:36,052 dovrebbero avere una maggior compatibilità 191 00:06:36,052 --> 00:06:39,180 rispetto ad altre due soddisfatte a 0 e 100, 192 00:06:39,180 --> 00:06:40,847 perché l'affetto deve essere reciproco. 193 00:06:40,847 --> 00:06:43,147 Dopo aver aggiunto una correzione per i margini di errore, 194 00:06:43,147 --> 00:06:45,770 nel caso di un numero limitato di domande, 195 00:06:45,770 --> 00:06:47,234 come in questo esempio, 196 00:06:47,234 --> 00:06:48,811 siamo pronti ad partire. 197 00:06:48,811 --> 00:06:50,191 Ogni volta che OK Cupid abbina due persone 198 00:06:50,191 --> 00:06:52,234 segue i passaggi appena illustrati. 199 00:06:52,234 --> 00:06:54,484 Prima raccoglie informazioni dalle vostre risposte, 200 00:06:54,484 --> 00:06:56,619 poi confronta le vostre scelte e preferenze 201 00:06:56,619 --> 00:06:59,740 con quelle di altri con semplici metodi matematici. 202 00:06:59,740 --> 00:07:02,453 Questo capacità di prendere fenomeni del mondo reale 203 00:07:02,453 --> 00:07:05,167 e trasformarli in qualcosa di comprensibile per un microchip 204 00:07:05,167 --> 00:07:05,742 è, credo, 205 00:07:05,742 --> 00:07:08,565 la più grande abilità che si possa pssedere al giorno d'oggi. 206 00:07:08,565 --> 00:07:10,919 Come voi usate frasi per raccontare una storia a qualcuno, 207 00:07:10,919 --> 00:07:13,665 si possono usare algoritmi per raccontare una storia ad un computer. 208 00:07:13,665 --> 00:07:14,921 Se ne imparate il linguaggio 209 00:07:14,921 --> 00:07:16,381 potete raccontare in giro la vostra storia. 210 00:07:16,381 --> 00:07:18,768 Spero che questo vi aiuti a farlo.