Buscar

Resumo do curso de Machine Learning with Python

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 9 páginas

Prévia do material em texto

UNIVERSIDADE FEDERAL FLUMINENSE – UFF 
Estudo Orientado: Inteligência Artificial Aplicada à Seguranca de Redes de Computadores 
 
Por: Larissa Moraes Miranda 
 
Introdução: Machine Learning 
 
Machine learning é uma das técnicas de análises preditivas a qual permite a análise 
de fatos atuais e históricos visando fazer previsões sobre eventos futuros e ou 
desconhecidos. Além de ser um subcampo da ciência de dados, mais especificamente, 
da inteligência artificial (IA), este permite fornecer aos computadores a habilidade de 
aprender sem que sejam explicitamente programados para isso. Ademais, esta técnica 
possibilita a extração de informação de um conjuto de dados buscando representá-los 
através de algum tipo de modelo matemático. 
De acordo com os tipos de problemas e suas respectivas soluções há uma divisão 
de subáreas dentro do método de machine learning, que são estas: Aprendizado 
supervisionado e aprendizado não-supervisionado. 
No geral, a maior diferença entre o aprendizado supervisionado e o não 
supervisionado é que o aprendizado supervisionado lida com dados rotulados enquanto 
o Aprendizado Não Supervisionado lida com dados não rotulados, e quando se trata de 
aprendizado supervisionado existem dois tipos de técnicas, classificação e regressão. 
Assim como no aprendizado supervisonado, existem técnicas utilizadas no modelo 
de aprendizado não-supervisionado. Redução de dimensão, estimativa de densidade e 
clustering são algumas das técnicas de machine learning não-supervisionadas mais 
amplamente usadas. 
 
 
Aprendizado Supervisionado: Classificação 
 
Quando se trata de aprendizado supervisionado, há um grande foco nas tarefas de 
classificação. A classificação é o processo que prever uma categoria, ou seja, fornece 
classes de saída. Para isso, ele toma vários exemplos no qual caracteriza cada um pelo 
rótulo correto com o intuito de usá-los para treinar um modelo de IA à fazer o 
reconhecimento desses rótulos automaticamente (claro, de forma correta), por isso a 
importância do fornecimento prévio dos dados de entrada. 
Existe uma gama de algoritmos de classificação quando se trata de machine learning. 
Na sequencia será explicado algoritmos como: 
 
 K-Nearest Neighbour (KNN); 
 Decision Trees; 
 Logistic Regression; 
 Support Vector Machines (SVM). 
 
 
K-Nearest Neighbors (KNN) 
 
K-Nearest Neighbour é um método classificador no qual o aprendizado é baseado 
no quão similar um dado é do outro. Os dados próximos ao caso a ser classificado são 
considerados “vizinhos”. Além disso, o treinamento pode ser formado por vetores de n 
dimensões. Assim, a distância entre dois casos é uma medida da sua dissimilaridade. 
UNIVERSIDADE FEDERAL FLUMINENSE – UFF 
Estudo Orientado: Inteligência Artificial Aplicada à Seguranca de Redes de Computadores 
 
Existem n métodos para calcular a semelhança ou a distância de dois pontos de 
dados, contudo o mais usual para tal tarefa é através da distância Euclidiana. A Distância 
Euclidiana é definida como a soma da raiz quadrada da diferença entre x e y em suas 
respectivas dimensões. 
 
𝐷𝑖𝑠 (𝑥1, 𝑥2) = √∑ (𝑥1𝑖 − 𝑥2𝑖)2
𝑛
𝑖=0
 
 
Além de estar por dentro do cálculo da semelhança/distância em um espaço 
multidimensional, é de suma importancia saber selecionar o valor do K, onde K é o 
número de vizinhos mais próximos a serem examinados. Desta forma o ideal é separar 
uma parte dos dados para testar a precisão do seu modelo. Asssim pode-se calcular a 
precisão para k amostragens do conjunto de teste e concluir o valor do K ideal. Quanto 
menor a distância entre os dados maior a precisão entre eles. 
 
 
 
Com o entendimentos maduro dos conceitos e fundamentos do método de K-
Nearest Neighbour, a seguir está o passo a passo de como funciona o algoritmo deste 
método. 
 
 
Etapas da Lógica do Algoritmo KNN 
 
I. Recebe um dado não classificado; 
II. Mede a distância (Euclediana), de novo para com todos os dados já estão 
classificados; 
III. Obtém o valor de K, ou seja, as n menores distâncias; 
IV. Verifica a classe de cada da um dos dados que tiveram a menor distância e conta 
a quantidade de cada classe que aparece; 
V. Toma como resultado a classe que mais apareceu dentre os dados que tiveram 
as menores distâncias; 
VI. Classifica o novo dado com a classe tomada como resultado da classificação. 
 
Decision Trees 
UNIVERSIDADE FEDERAL FLUMINENSE – UFF 
Estudo Orientado: Inteligência Artificial Aplicada à Seguranca de Redes de Computadores 
 
 
Decision Trees é uma ferramenta que auxilia, visualmente, na tomada de decisão 
através de um modelo semelhante a estrutura de uma árvore. Geralmente utilizada na 
mineraçao de dados, derivando uma estratégia com o intuito de atingir um objetivo 
específico, ela também é amplamente usada quando se trata de machine learning 
supervisionada. Representada por uma estrutura de fluxograma na qual cada nó interno 
representa um teste em um atributo, o resultado do teste é representado por cada 
ramo, e cada folha e ou terminla é presentado por uma classe, logo, faz-se necessário 
critérios de classificação, os quais são representados pelas raízes. Desta forma, fica 
evidente que este método é uma maneira de exibir um algoritmo que destaca apenas 
instruções de controle condicionais. 
Para a construção do modelo de decision trees é importante estar por dentro do 
conceito de particionamento recursivo utilizado no calculo da significancia do atributo 
na divisão dos dados. Desta forma, saber quais são os critérios para concluir que um 
atributo é o ideal (ou mais preditivo), é essencial. 
De fato, o método utiliza particionamento recursivo para dividir os registros 
minimizando a impureza de cada etapa. E por impureza, entende-se que um nó é 
considerado puro, se em sua maioria, os nós caírem em uma categoria específica, que é 
calculado pela entropia dos dados de cada nó. 
Já a entropia é a quantidade de aleatoriedade da informação nos dados. Por isso, 
quanto menor a entropia mais preditivo ser torna o atributo, levando à uma 
homogeneidade das amostras desse nó. Se as amostras são completamente 
homogêneas, a entropia é zero e se as amostras são igualmente divididas, ela tem uma 
entropia igual a um. O cálculo da entropia é dada pela equação abaixo: 
 
𝑒𝑛𝑡𝑟𝑜𝑝𝑖𝑎(𝑆) = ∑ −𝑃𝑖 𝑙𝑜𝑔2𝑃𝑖
𝑛
𝑖=1
 
 
Onde: 𝑆 é um conjunto de exemplos 
 𝑛 é o número de classes 
 𝑃𝑖 é é a proporção de 𝑆 que pertence à classe 𝑖, tendo que: 
 
𝑃𝑖 = 
|𝑆𝑖|
|𝑆|
 
 
 
Onde: |𝑆𝑖| é o número de exemplos classificados na 𝑖 − é𝑠𝑖𝑚𝑎 partição 
 |𝑆| é o número total de exemplos do conjunto 𝑆. 
 
Após determinar a entropia, deve-se escolher o primeiro atributo para iniciar as 
ramificações. Para isso, deve-se escolher a árvore com maior ganho de informação. 
Ganho de informação é basicamente o oposto da entropia, ou seja, quanto menor 
a entropia maior é o ganho de informação, ou quantidade de certeza. 
Segue aabaixo o cálculo para determinar qual árvore obtem o maior ganho de 
informação: 
 
UNIVERSIDADE FEDERAL FLUMINENSE – UFF 
Estudo Orientado: Inteligência Artificial Aplicada à Seguranca de Redes de Computadores 
 
𝐺𝑎𝑛ℎ𝑜(𝑆, 𝐴) = −𝑒𝑛𝑡𝑟𝑜𝑝𝑖𝑎(𝑆) − ∑
|𝑆𝑖|
|𝑆|
𝑛
𝑖=1
 𝑒𝑛𝑡𝑟𝑜𝑝𝑖𝑎(𝑆) 
 
Onde: 𝐺𝑎𝑛ℎ𝑜(𝑆, 𝐴) é o ganho atribuído 𝐴 sobre o conjunto 𝑆 
 |𝑆𝑖| é o subconjunto de 𝑆 no qualo atrinuto 𝐴 tem valor 𝑖. 
 
Com o entendimentos maduro dos conceitos e fundamentos do método Decision 
Trees, a seguir está o passo a passo de como funciona o algoritmo do mesmo. 
 
 
Etapas da Lógica do Algoritmo Decision Trees 
 
I. Escolhe um atributo do nosso conjunto de dados; 
II. Calcula a significância do atributo na divisão dos dados; 
III. Divide os dados com base no valor do melhor atributo; 
IV. Vai para cada ramificação e para que possa repitir os processos para o restante 
dos atributos; 
V. Constrói a árvore. 
 
 
Logistic Regression 
 
Logistic regression é uma técnica estatística somadacom conceitos probabilísticos 
a qual é muito utilizada para problemas de duas classes, ou seja, ela trabalha com 
variáveis de saída, chamadas de dependentes, que seriam as variáveis categóricas 
binárias, e as variáveis preditivas, independentes, que podem ser categóricas ou não. 
 
Importante: Quando a variável dependente é binária (como sim/não), não podemos 
usar a regressão linear. 
 
O principal objetivo deste método é construir um modelo para prever a classe de 
cada amostra e a probabiliadade dela pertencer a essa classe. Logo, se eu tenho um 
conjunto de dados, representado por 𝑥, no espaço de dimensões 𝑚𝑥𝑛, aclasse que 
queremos prever 𝑦, pode ser classificado como 0 ou 1. Segue abaixo o modelo de 
regressão logística ideal o qual está sendo representad por î: 
 
î = 𝑃( 𝑦 =
1
𝑥
 ) ou 𝑃 ( 𝑦 =
0
𝑥
 ) = 1 − 𝑃( 𝑦 =
1
𝑥
 ) 
 
Para esta expressão, pode-se prever que a classe de uma amosatra é 1, dados os 
recursos 𝑥. Ademias, na regressão logística a probabilidade de um evento pode ser 
estimada diretamente. A função Sigmoid (também chamada de função logística), é 
usada pela seguinte expressão na regressão logística: 
 
𝜎(𝜃𝑇𝑥) = 
1
1 + 𝑒𝜃
𝑇𝑥
 
 
UNIVERSIDADE FEDERAL FLUMINENSE – UFF 
Estudo Orientado: Inteligência Artificial Aplicada à Seguranca de Redes de Computadores 
 
Logo, concluimos que na Função Signoid, se 𝜃𝑇𝑥 fica muito grande o 𝑒𝜃
𝑇𝑥, no 
denominador da fração, tende a zero o resultado da função se aproxima de 1. Por outro 
lado, se 𝜃𝑇𝑥 é muito pequeno o resultado da função se aproxima de 0. 
 
 
Etapas da Lógica do Algoritmo de Logistic Regression 
 
I. Inicializar o vetor 𝜃 com valores aleatórios; 
II. Calcular a saída do modelo, î = 𝜎(𝜃𝑇𝑥); 
III. Comparar a saída dos modelos; 
IV. Registrar a diferença como erro  𝐸𝑟𝑟𝑜𝑟 = 1 − î 
V. Calcular todos os erros, o erro total é o custo do seu modelo e é calculado pela 
função de custo do modelo; 
VI. Mudar o valor de 𝜃 visando reduzir o custo; 
VII. Após alterar os valores de θ, volta para etapa 2. 
 
 
Support Vector Machine (SVM) 
 
O modelo de SVM tem como objetivo encontrar uma linha e ou um hiperplano, que 
melhor possibilita a classificação dos dados. Geralmente, um conjunto de dados não é 
linearmente separável, desta forma, deve-se tranferir esse dados para um espaço 
dimensional mais elevado, por exemplo o espaço tridimensional. Essa transformação é 
feita através da função Kernel, ou seja, ela converte problemas não separável em 
problemas separável. Matematicamente, essa função pode ser de diferentes tipos, 
como: Linear, Polinomial, Função de base radial e Sigmoid. A escolha de um hiperplano 
está baseado na melhor separação (ou margem) de dados, assim quanto maior a 
margem melhor a opção de hiperplano. A confiança da classificação dos dados da-se 
pela maximização da distância da margem a qual utiliza vetores de suporte os quais 
influenciam a posição e orientação do hiperplano. 
 
 
Aprendizado Não-Supervisionado: Clustering 
 
Na aprendizagem não-supervisionadas, as respostas corretas não são fornecidas, ou 
seja, os dados não possuem histórico. Logo, o objetivo é explorar e aprender algum tipo 
de estrutura subjacente aos dados. Para isso, utiliza-se a estratégia Clustering. O 
clustering pode agrupar dados apenas não-supervisionados, baseado na semelhança 
entre eles. Existe uma gama de algoritmos de clustering quando se trata de machine 
learning. Na sequencia será explicado algoritmos como: 
 
 K-Means Clustering; 
 Hierarchical Clustering; 
 Density Based Clustering. 
 
 
K-Means Clustering 
UNIVERSIDADE FEDERAL FLUMINENSE – UFF 
Estudo Orientado: Inteligência Artificial Aplicada à Seguranca de Redes de Computadores 
 
 
K-Means clustering é um método que separa os dados em K subconjuntos sem 
sobreposição e sem nenhuma estrutura de rótulos. Para isso, ele utiliza da semelhança 
entre os dados para fazer tal lparticionamento. Como K-Means foca em formar clusters 
de forma que amostras semelhantes fiquem dentro do mesmo cluster e amostras 
diferentes fiquem em clusters diferentes, é viável utilizar uma métrica de 
dissimilaridade, sendo possível minimizar as diistâncias dentro de um cluster e 
maximizar as distâncias entre os clusters. 
 
 
Etapas da Lógica do Algoritmo K-Means Clustering 
 
I. Colocar aleatoriamente K centróides (um para cada cluster); 
II. Calcular a distância de cada ponto de daods até os centróides; 
III. Atribuir cada ponto de dados ao centróide mais próximo, crinado um cluster; 
IV. Recalcular a posiçõa do K centróide; 
V. Repetir os passos 2-4, até que os centróides não se movam mais. 
 
Existem duas maneiras de escolher os centróides, escolhendo aleatoriamente 
observações do conjunto de dados e usá-los como meio inicial; ou criando pontos 
aleatórios como centróides dos aglomerados. Para atribuir um “dado” ao centróide mais 
próximo é preciso calcular a distância de cada ponto de dados, apartir dos centróides. 
Para isso, utilizamos o cálculo da distânica Euclidiana. Para encontrar o melhor valor 
para K basta executar o clustering nos diferentes valores de K e observar uma métrica 
de precisão. 
 
 
Hierarchical Clustering 
 
Os algoritmos de Hierarchical Clustering constroem uma hierarquia de clusters em 
que cada nó é um cluster que consiste nos clusters de seus nós filhos. Essa técnica de 
agrupamento é dividida em dois grupos: Divididos e Aglomerativo. A técnica de divisão 
é formada de cima para baixo, na qual tem um grande cluster de início o qual vai sendo 
dividido em partes menores. Já a técnica de alglomeração, é a mais usual quando se 
trata de hierarchical clustering e é formado de baixo para cima, na qual os pequenos 
clusters vão se mesclando ao londo do processo. 
 
 
Etapas da Lógica do Algoritmo de Aglomeração 
 
I. Criar n clusters, um para cada ponto de dados; 
II. Calcular a matriz de proximidade; 
III. Mesclar dois clusters próximos; 
IV. Atualizar a matriz de proximidade; 
V. Repetir os passos 3 e 4 até que permaneça apenas um único cluster. 
 
UNIVERSIDADE FEDERAL FLUMINENSE – UFF 
Estudo Orientado: Inteligência Artificial Aplicada à Seguranca de Redes de Computadores 
 
Para calcular a matriz de proximidade pode-se utilizar diferentes medidas, uma delas 
é com através da dist^ncia Euclidiana. Logo, para n pacientes pode ser contruida uma 
matriz de 𝑛𝑥𝑛 de diferentes distâncias. Ademais, existem outras formas de calcular a 
ddistância entre os clusters quando há a concentração de muitas amostras em um 
cluster, são estas: 
 
 Cluster de ligação única (distâncias mínima entre os cluusters); 
 Cluster de ligação completa (distância máxima entre os clusters); 
 Clustering médio de ligação (distância média entre os clusters); 
 Clustering de ligação do centróide (distância entre os centróides dos clusters). 
 
 
Density Based Clustering 
 
O método de density based clustering ou DCSCAN clustering é apropriado ao 
examinar dados espaciais. Além disso, o algoritmo localiza regiões de alta densidade que 
são separadas entre si por regiões de baixa densidade, considerados ruídos. Vale 
ressaltar que densidade, neste contexto, é a quantidade de pontos de dados dentro de 
uma região específica. O DBSCAN funciona com base em dois parâmetros, que são estes: 
raio e pontos mínimos. Assim como já explicito no nome, o raio (R) irá fornecer o raio 
de uma região específica (área densa), e o ponto mínimo (M) determinará a quantidade 
mínima de pontos de dados para um cluster. Cada ponto do conjuto de dados tem de 
ser “classificado” como central, de borda ou externo. Para isso, o algoritmo vai passar 
por cada ponto de dados afim de determiná-lo como um dos pontos apresentados. 
Um ponto de dados é um ponto central se, dentro da vizinhança R do ponto, houver 
pelo menos M pontos. Um ponto de dados é um ponto de borda se, sua vizinhança tem 
pelo menos M pontos de dados ou é acessível apartir de algum ponto central. Por fim, 
um ponto externo, é aquele que nem seclassifica como ponto central nem como ponto 
de borda. Após feita todas as identificações de pontos, o próximo passo é conectar os 
pontos principais vizinhos e colocá-los no mesmo cluster. 
 
 
Sistemas de Recomendação 
 
Um sistema de recomendações funciona baseado no consumo do usuário. Desta 
forma, o sistema tenta absorver algum padrão de forma que consiga prever o que mais 
pode ser de interesse do usuário. Ademais, técnicas como esta são de grande valia para 
ambas as partes, o usuário como o provedor de serviço. Existem dois tipos principais de 
sistemas de recomendação: filtragem colaborativa e baseada em conteúdo. A diferença 
entre elas está diretamente relacionada à declaração do consumidor. Em termos de 
implementação de sistemas de recomendação, existem 2 tipos: Baseado em memória e 
Baseado em modelo. Na abordagem em memória, todoo conjunto de dados do usuário 
é usado para gerar recomendação. Já na abordagem em modelo, um novo modelo é 
desenvolvido na tentativa de aprender as referencias. 
 
 
 
UNIVERSIDADE FEDERAL FLUMINENSE – UFF 
Estudo Orientado: Inteligência Artificial Aplicada à Seguranca de Redes de Computadores 
 
Sistemas de Recomendação Baseados em Conteúdo 
 
Sistema de recomendações baseado em conteúdo está diretamente ligado nas 
ações dos perfis. Neles contém informações como preferências e gostos dos usuários. 
Assim, número de cliques e avaliações, são critérios importantíssimos para modelar o 
sistemas, ou seja, a similaridade e ou semelhança entre esses itens é essencial para esse 
modelo. 
 
Etapas da Lógica de Sistema de Recomendações Baseados em Conteúdo 
 
I. Criar o perfil do usuário, que seria um vetor para mostrar as classificações do 
usuário pelo conteúdo já consumido; 
II. Codificar os itens através do One Hot Encoding (com um recurso X); 
III. Usar um recurso Y para criar outra matriz; 
IV. Multiplicar as duas matrizes para obter o conjunto de recursos ponderados; 
V. Dada a matriz de recurso ponderado, moldar o perfil do usuário ativo; 
VI. Multiplicar a matriz de perfil de usuário pela matriz de filmes candidatos, o que 
resulta na matriz do conteúdo ponderado. Ele mostra o peso de cada recurso X, 
em relação ao perfil do usuário. 
 
Porém para alguns casos este sistema não funciona. Se um recurso X nunca foi 
consumido pelo usuário, este recurso não estra no perfil do mesmo, logo este tipo de 
recurso nunca será recomendado pelo sistema. 
 
 
Sistemas de recomendação baseados em Filtragem Colaborativa 
 
Sistema de recomendações baseado em filtragem colaborativa está diretamente 
associado no fato de existir interesse entre as pessoas. Desta forma, o sistema se 
apropria desses relacionamentos com o intuito de fazzer uma recomendação mais 
acertiva. A filtragem colaborativa tem basicamente duas abordagens: baseada no 
usuário a qual se basea na semelhança da vizinhança do usuário, e baseada em itens a 
qual se basea na semelhança entre os itens. 
Na filtragem colaborativa baseada no usuário, temos um usuário ativo para quem a 
recomendação é direcionada. Este mecanismo procura primeiro usuários semelhantes, 
ou seja, usuários que compartilham os padrões de classificação do usuário ativo. 
Na filtragem colaborativa baseada no item, comportamento dos usuários vizinhos 
criam itens semelhantes. Portanto, as recomendações aqui são baseadas nos itens da 
vizinhança que um usuário pode preferir. 
 
 
Etapas da Lógica de Sistema de Recomendações Baseados em Filtragem Colaborativa 
 
I. Descobrir a semelhança entre o usuário ativo e os outros usuários, pode ser feito 
pelo caálculo da distância Euclediana; 
II. Averiguar o pesos de similaridade ou proximidade do usuário ativo com outros 
usuários no conjunto de dados; 
UNIVERSIDADE FEDERAL FLUMINENSE – UFF 
Estudo Orientado: Inteligência Artificial Aplicada à Seguranca de Redes de Computadores 
 
III. Criar uma matriz de classificação ponderada; 
IV. Assim como foi calculada a semelhança de usuários com o usuário ativo, pode-
se usar este para calcular a possível opinião do usuário ativo sobre os conteúdos-
alvo, basta multiplicar os pesos de semelhança com as classificações do usuário 
resultando em uma matriz de classificação ponerada; 
V. Gerar a matriz de recomendação agregando todas as taxas ponderadas; 
VI. Dividir os valores da classificação ponderada pela soma do índice de similaridade 
para os usuários. O resultado é a classificação potencial que o usuário ativo dará 
a esses filmes, com base em sua semelhança com outros usuários.

Continue navegando