Este tipo de sistema depende de las calificaciones que da la gente a
un objeto. Entre más esparcidad (más NA’s, más espacios vacios) menos
eficiente se vuelve el sistema
Vamos a inventar datos de usuarios y convertirlos en una matriz
## KP1 Enredados UP Cars1 Ts3 Shrek2 Monja
## Cecilia Rivas 3 4 5 4 4 3 3
## Luis Alfredo 5 3 5 5 3 5 3
## Daniel Najera 4 3 5 5 5 5 1
## Luis Mendoza 5 3 4 5 4 5 NA
Ahora hacemos el proceso de matrices
## cosine_similarity
## Cecilia Rivas 0.9099072
## Luis Alfredo 0.9557122
## Daniel Najera 0.9843118
Usamos la función creada con anterioridad para predecir “You” en base
a los 3 usuarios para 3 películas
## # A tibble: 7 × 2
## movie predicted_rating
## <chr> <dbl>
## 1 KP1 4.02
## 2 Enredados 3.32
## 3 UP 5
## 4 Cars1 4.68
## 5 Ts3 4.01
## 6 Shrek2 4.36
## 7 Monja 2.31
UP es la película con calificación más alta por lo tanto en el
sistema de recomendación sería la primera en aparecer
LS0tDQp0aXRsZTogIlNpc3RlbWEgZGUgcmVjb21lbmRhY2nDs24gY29sYWJvcmF0aXZvIC0gTHVpcyBNZW5kb3phIEEwMDgyOTA5OSB5IENlY2lsaWEgUml2YXMgQTAxMjg0ODc0Ig0KZGF0ZTogIjIwMjMtMDQtMjEiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZmxvYXQ6IHllcw0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIHRoZW1lOiBzYW5kc3RvbmUNCiAgICBoaWdobGlnaHQ6IHB5Z21lbnRzDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFKQ0KYGBgDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkgICANCmxpYnJhcnkocmVjb21tZW5kZXJsYWIpDQpgYGANCg0KRXN0ZSB0aXBvIGRlIHNpc3RlbWEgZGVwZW5kZSBkZSBsYXMgY2FsaWZpY2FjaW9uZXMgcXVlIGRhIGxhIGdlbnRlIGEgdW4gb2JqZXRvLg0KRW50cmUgbcOhcyBlc3BhcmNpZGFkIChtw6FzIE5BJ3MsIG3DoXMgZXNwYWNpb3MgdmFjaW9zKSBtZW5vcyBlZmljaWVudGUgc2UgdnVlbHZlIGVsIHNpc3RlbWENCg0KVmFtb3MgYSBpbnZlbnRhciBkYXRvcyBkZSB1c3VhcmlvcyB5IGNvbnZlcnRpcmxvcyBlbiB1bmEgbWF0cml6DQpgYGB7cn0NCm1vdmllX3JhdGluZ3MgPC0gZGF0YS5mcmFtZSgNCiAgS1AxID0gYygzLCA1LCA0LCA1KSwgDQogIEVucmVkYWRvcyA9IGMoNCwgMywgMywgMyksDQogIFVQID0gYyg1LCA1LCA1LCA0KSwNCiAgQ2FyczEgPSBjKDQsIDUsIDUsIDUpLA0KICBUczMgPSBjKDQsIDMsIDUsIDQpLA0KICBTaHJlazIgPSBjKDMsIDUsIDUsIDUpLA0KICBNb25qYSA9IGMoMywgMywgMSwgTkEpDQopDQpyb3duYW1lcyhtb3ZpZV9yYXRpbmdzKSA8LSBjKCdDZWNpbGlhIFJpdmFzJywgJ0x1aXMgQWxmcmVkbycsICdEYW5pZWwgTmFqZXJhJywgJ0x1aXMgTWVuZG96YScpDQptb3ZpZV9yYXRpbmdzDQpgYGANCg0KQWhvcmEgaGFjZW1vcyBlbCBwcm9jZXNvIGRlIG1hdHJpY2VzDQpgYGB7cn0NCmNvc2luZV9zaW1pbGFyaXR5IDwtIGZ1bmN0aW9uKHZlY18xLCB2ZWNfMikgew0KICB2ZWNfbGVuIDwtIGxlbmd0aCh2ZWNfMSkNCiAgDQogICMgTkEgdmFsdWVzIGFyZSByZXBsYWNlZCB3aXRoIDANCiAgdmVjXzFbaXMubmEodmVjXzEpXSA8LSAwDQogIHZlY18yW2lzLm5hKHZlY18yKV0gPC0gMA0KICANCiAgIyBDb21wdXRpbmcgdGhlIGRlbm9taW5hdG9yDQogIHZlY18xX2Rlbm9tIDwtIHNxcnQoc3VtKHZlY18xXjIpKQ0KICB2ZWNfMl9kZW5vbSA8LSBzcXJ0KHN1bSh2ZWNfMl4yKSkNCiAgZGVub21pbmF0b3IgPC0gdmVjXzFfZGVub20gKiB2ZWNfMl9kZW5vbQ0KICANCiAgIyBDb21wdXRpbmcgdGhlIG51bWVyYXRvcg0KICB0aWIgPSB0aWJibGUodmVjXzEgPSB2ZWNfMSwgdmVjXzIgPSB2ZWNfMikNCiAgdGliIDwtIHRpYiAlPiUgbXV0YXRlKHByb2R1Y3RzID0gdmVjXzEgKiB2ZWNfMikNCiAgbnVtZXJhdG9yIDwtIHN1bSh0aWIkcHJvZHVjdHMpDQogIA0KICAjIFJldHVybiB0aGUgY29zaW5lIHNpbWlsYXJpdHkNCiAgcmV0dXJuIChudW1lcmF0b3IgLyBkZW5vbWluYXRvcikNCn0NCmBgYA0KDQoNCmBgYHtyfQ0KIyBPYnRlbmVtb3MgbG9zIHZlY3RvcmVzIGRlIGNhZGEgcGVyc29uYQ0KTHVpc19NZW5kb3phIDwtIGFzLm51bWVyaWMoYXMudmVjdG9yKG1vdmllX3JhdGluZ3NbJ0x1aXMgTWVuZG96YScsXSkpDQpDZWNpbGlhX1JpdmFzIDwtIGFzLm51bWVyaWMoYXMudmVjdG9yKG1vdmllX3JhdGluZ3NbJ0NlY2lsaWEgUml2YXMnLF0pKQ0KTHVpc19BbGZyZWRvIDwtIGFzLm51bWVyaWMoYXMudmVjdG9yKG1vdmllX3JhdGluZ3NbJ0x1aXMgQWxmcmVkbycsXSkpDQpEYW5pZWxfTmFqZXJhIDwtIGFzLm51bWVyaWMoYXMudmVjdG9yKG1vdmllX3JhdGluZ3NbJ0RhbmllbCBOYWplcmEnLF0pKQ0KDQoNCiMgT2J0ZW5lbW9zICJkaXN0YW5jaWEiIHVzYW5kbyBzaW1pbGl0dWQgcG9yIGNvbnNlbm8NCnNpbWlsYXJpdGllcyA8LSBkYXRhLmZyYW1lKA0KICBjb3NpbmVfc2ltaWxhcml0eSA9IGMoY29zaW5lX3NpbWlsYXJpdHkoTHVpc19NZW5kb3phLCBDZWNpbGlhX1JpdmFzKSwgY29zaW5lX3NpbWlsYXJpdHkoTHVpc19NZW5kb3phLCBMdWlzX0FsZnJlZG8pLCBjb3NpbmVfc2ltaWxhcml0eShMdWlzX01lbmRvemEsIERhbmllbF9OYWplcmEpKQ0KKQ0Kcm93bmFtZXMoc2ltaWxhcml0aWVzKSA8LSBjKCdDZWNpbGlhIFJpdmFzJywgJ0x1aXMgQWxmcmVkbycsICdEYW5pZWwgTmFqZXJhJykNCnNpbWlsYXJpdGllcw0KYGBgDQoNCmBgYHtyfQ0KIyBDcmVhbW9zIHVuYSBmdW5jacOzbiBwYXJhIG9idGVuZXIgdW4gcHJvbWVkaW8gcG9uZGVyYWRvIGVuIGJhc2UgYSBsb3MgYW1pZ29zDQptb3ZpZV9yYXRpbmdfd2VpZ2h0ZWRfYXZlcmFnZSA8LSBmdW5jdGlvbihtb3ZpZSwgZnJpZW5kcykgew0KICBkZW5vbWluYXRvciA8LSAwDQogIG51bWVyYXRvciA8LSAwDQogIGZvciAoZnJpZW5kIGluIGZyaWVuZHMpIHsNCiAgICBmcmllbmRfc2ltaWxhcml0eSA8LSBzaW1pbGFyaXRpZXNbZnJpZW5kLF1bMV0NCiAgICBmcmllbmRfcmF0aW5nIDwtIG1vdmllX3JhdGluZ3NbZnJpZW5kLCBtb3ZpZV1bMV0NCiAgICANCiAgICAjIFRvbWFyZW1vcyBlbCBwcm9tZWRpbyBwb25kZXJhZG8gZW4gY3VlbnRhIHNvbG8gcGFyYSBwZWzDrWN1bGFzIGNvbiBjYWxpZmljYWNpw7NuDQogICAgaWYgKGlzLm5hKGZyaWVuZF9yYXRpbmcpKSBuZXh0DQogICAgDQogICAgZGVub21pbmF0b3IgPC0gZGVub21pbmF0b3IgKyBmcmllbmRfc2ltaWxhcml0eQ0KICAgIG51bWVyYXRvciA8LSBudW1lcmF0b3IgKyAoZnJpZW5kX3NpbWlsYXJpdHkgKiBmcmllbmRfcmF0aW5nKQ0KICB9DQogIA0KICByZXR1cm4gKG51bWVyYXRvciAvIGRlbm9taW5hdG9yKQ0KfQ0KYGBgDQoNCg0KVXNhbW9zIGxhIGZ1bmNpw7NuIGNyZWFkYSBjb24gYW50ZXJpb3JpZGFkIHBhcmEgcHJlZGVjaXIgIllvdSIgZW4gYmFzZSBhIGxvcyAzIHVzdWFyaW9zIHBhcmEgMyBwZWzDrWN1bGFzDQpgYGB7cn0NCmZyaWVuZF9uYW1lcyA8LSBjKCdDZWNpbGlhIFJpdmFzJywgJ0x1aXMgQWxmcmVkbycsICdEYW5pZWwgTmFqZXJhJykNCm5ld19tb3ZpZXMgPC0gYygnS1AxJywgJ0VucmVkYWRvcycsICdVUCcsICdDYXJzMScsICdUczMnLCAnU2hyZWsyJywgJ01vbmphJykNCm5ld19tb3ZpZV9wcmVkaWN0ZWRfcmF0aW5ncyA8LSB0aWJibGUoKQ0KZm9yIChuIGluIG5ld19tb3ZpZXMpIHsNCiAgcHJlZGljdGVkX3JhdGluZyA8LSBtb3ZpZV9yYXRpbmdfd2VpZ2h0ZWRfYXZlcmFnZShuLCBmcmllbmRfbmFtZXMpDQogIHByZWRpY3Rpb25fdGliYmxlIDwtIHRpYmJsZShtb3ZpZSA9IG4sIHByZWRpY3RlZF9yYXRpbmcgPSBwcmVkaWN0ZWRfcmF0aW5nKQ0KICBuZXdfbW92aWVfcHJlZGljdGVkX3JhdGluZ3MgPC0gYmluZF9yb3dzKG5ld19tb3ZpZV9wcmVkaWN0ZWRfcmF0aW5ncywgcHJlZGljdGlvbl90aWJibGUpDQp9DQpuZXdfbW92aWVfcHJlZGljdGVkX3JhdGluZ3MNCmBgYA0KVVAgZXMgbGEgcGVsw61jdWxhIGNvbiBjYWxpZmljYWNpw7NuIG3DoXMgYWx0YSBwb3IgbG8gdGFudG8gZW4gZWwgc2lzdGVtYSBkZSByZWNvbWVuZGFjacOzbiBzZXLDrWEgbGEgcHJpbWVyYSBlbiBhcGFyZWNlcg0KDQoNCg0K