Para exemplificar algumas aplicações do pacote, utilizaremos a base de dados “movies” presente no pacote.
## Id Users Id Items Ratings
## 1 1 Wreck-It Ralph 4
## 2 1 We're So Young 4
## 3 1 Brazilian Western 4
## 4 2 We're So Young 4
## 5 2 Brazilian Western 4
## 6 2 Cine Holliudy 5
## 7 2 Silver Linings Playbook 4
## 8 2 A Royal Affair 5
## 9 2 Till Luck Do Us Part 2 2
## 10 2 Muita Calma Nessa Hora 2 2
## 11 2 The Book Thief 4
## 12 2 Blue Is The Warmest Color 5
## 13 3 Iron Man 3 4
## 14 3 My Mom Is a Character 3
## 15 3 Fast & Furious 6 4
Primeiro Passo: Criação do Objeto CF
A base de dados “movies” possui avaliações de 526 usuários para 50 itens.
Primeiro, avaliaremos o comportamento das avaliações realizadas.
ggplot(data.frame(table(movies$Ratings)),aes(x=Var1,y=Freq)) +
geom_bar(stat ="identity",fill=cores(1)) +
scale_y_continuous(limits = c(0,4000) ,breaks = seq(0,4000,1000)) +
geom_text(aes(label=Freq),size=3, vjust = -0.8, hjust = 0.5) +
theme_hc() + ylab("Frequência") + xlab("Avaliações") +
ggtitle("Gráfico 1","Comportamento das Avaliações Realizadas")Podemos avaliar também através dos comportamentos das médias dos usuários e itens:
ggplotly(ggplot(data.frame(objetoCF$averages_u),aes(x=objetoCF.averages_u))+
geom_histogram(fill=cores(2)[1], color="black",breaks=seq(1,5,0.25))+
scale_x_continuous(limits = c(1,5), breaks = seq(1,5,0.25))+
scale_y_continuous(limits = c(0,150) ,breaks = seq(0,150,50)) +
theme_hc() + ylab("Frequência") + xlab("Média dos Usuários")+
ggtitle("Gráfico 2", "Comportamento das Médias de cada Usuário"))ggplotly(ggplot(data.frame(objetoCF$averages_i),aes(x=objetoCF$averages_i))+
geom_histogram(fill=cores(3)[3], color="black",breaks=seq(1,5,0.5))+
scale_x_continuous(limits = c(0.5,5), breaks = seq(0.5,5,0.5))+
scale_y_continuous(limits = c(0,30) ,breaks = seq(0,30,10)) +
theme_hc() + ylab("Frequência") + xlab("Média dos Itens")+
ggtitle("Gráfico 3","Comportamento das Médias das Avaliações de cada Item"))Além disso, podemos utilizar os objetos de diversas formas. E fazer diversas análises.
Uma análise muito interessante é avaliar a esparsidade da matriz de utilidade:
levelplot(t(objetoCF$MU[1:50,1:50][c(nrow(objetoCF$MU[1:50,1:50]):1) , ]),
xlab="Itens",ylab="Usuários",scales = list(labels = rep("",100)),
col.regions=cores(20),main="Matriz de Utilidade")Para adicionarmos um novo usuário que já avaliou algum item previamente, utilizamos:
O usuário “Thiago” adicionado avaliou os filmes “Homem de Ferro 3” e “As aventuras de Pi” respectivamente com as notas 2 e 5.
Para adicionarmos um novo filme que já foi avaliado previamente, utilizamos:
O item “Viuva Negra” adicionado foi avaliado previamente pelos usuários “Thiago” e “1” respectivamente com as notas 3 e 1.
Iremos avaliar que nota o Usuário 4 daria para o filme “Homem de Ferro 3”.
## [1] 4.292997
## [1] 3.678164
## [1] 3.998666
## [1] 4.050622
Nota-se que as notas estimadas são diferentes dependendo da escolha metodológica.
Através das estimativas, podemos avaliar se o filme “Homem de Ferro 3” é recomendável ao usuário “4”.
Utilizaremos a nota de corte = 4.
## [1] TRUE
## [1] FALSE
## [1] FALSE
## [1] TRUE
Outra opção é criar uma lista de itens recomendáveis. Para exemplificar, iremos criar listas de 3 filmes para o usuário “4” com as 4 diferentes metodologias.
## [1] "Blue Is The Warmest Color" "The Lego Movie"
## [3] "Despicable Me 2"
## [1] "The Hunt" "Philomena"
## [3] "Blue Is The Warmest Color"
## [1] "Blue Is The Warmest Color" "Philomena"
## [3] "The Lego Movie"
## [1] "Cine Holliudy" "The Hunt" "A Royal Affair"
Seguindo a lógica inversa, podemos criar lista de usuários que gostariam de um determinado item. Para exemplificar, iremos criar 4 listas de usuários que gostariam de assistir ao filme “Homem de Ferro 3”:
## [1] "352" "319" "525"
## [1] "12" "504" "209"
## [1] "9" "23" "26"
## [1] "118" "349" "396"
E então temos essa última abordagem. Podemos recomendar, a quaisquer usuário, os 3 itens mais similares ao filme “Homem de Ferro 3”:
## [1] "Thor: The Dark World" "The Wolverine"
## [3] "Hansel & Gretel: Witch Hunters"
## [1] "The Wolverine" "Meu Passado me Condena" "Fast & Furious 6"
Nota-se que filmes de “heróis” como Wolverine e Thor são considerados bem similares ao Homem de Ferro 3. Porém vale lembrar que o conceito de similaridade está associado às avaliações e não ao gênero dos filmes.