Upload
elaine-cecilia-gatto
View
175
Download
2
Embed Size (px)
DESCRIPTION
Este relatório técnico apresenta os resultados dos estudos realizados com os dados de visualização de TV fornecidos pelo Ibope em um cenário específico. Simulou-se e avaliou-se o comportamento de alguns usuários que interagem com um sistema de recomendação baseado em Filtragem Colaborativa para televisão digital portátil. Os detalhes da simulação, desde a preparação e a organização dos dados, a geração dos perfis e das recomendações, o cálculo da porcentagem de acerto, além dos gráficos, análises e conclusões, são apresentados neste documento.
Citation preview
UNIVERSIDADE FEDERAL DE SÃO CARLOS
CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA
PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
Relatório Técnico
Aplicando Filtragem Colaborativa aos dados de TV fornecidos
pelo IBOPE
ALUNA: Elaine Cecília Gatto
ORIENTADOR: Prof. Dr. Sergio Donizetti Zorzo
São Carlos-SP
Julho/2010
i
AGRADECIMENTOS
Agradeço a Paulo Muniz Ávila e a Adriano Lucas pelo auxílio prestado durante a
realização deste trabalho, especificamente na parte de organização dos dados. Agradeço
também ao IBOPE por ter fornecido os dados de visualização necessários para os testes.
ii
RESUMO
Este relatório técnico apresenta os resultados dos estudos realizados com os dados de
visualização de TV fornecidos pelo Ibope em um cenário específico. Simulou-se e avaliou-se
o comportamento de alguns usuários que interagem com um sistema de recomendação
baseado em Filtragem Colaborativa para televisão digital portátil. Os detalhes da simulação,
desde a preparação e a organização dos dados, a geração dos perfis e das recomendações, o
cálculo da porcentagem de acerto, além dos gráficos, análises e conclusões, são apresentados
neste documento.
Palavras-Chave: Sistemas de Recomendação, Filtragem de Informação, Filtragem
Colaborativa, Televisão Digital, Knn.
iii
LISTA DE FIGURAS
Figura 1 – Contexto do Estudo de Caso ..................................................................................... 6
Figura 2 – Características dos domicílios .................................................................................. 8
Figura 3 – Características socioeconômicas............................................................................... 8
Figura 4 – Conteúdo da tabela usuários ..................................................................................... 8
Figura 5 – Tabela usuários ......................................................................................................... 8
Figura 6 – Amostra dos arquivos TXT....................................................................................... 9
Figura 7 – Tabela que contém os descritores de gênero .......................................................... 12
Figura 8 – Tabela que contém os descritores de subgênero ..................................................... 12
Figura 9 – Tabela que contém os descritores de gênero com seus respectivos subgêneros ..... 12
Figura 10 – Tabela que contém os códigos originais das emissoras ........................................ 12
Figura 11 – Tabela que contém os códigos das emissoras ....................................................... 12
Figura 12 – Tabela que contém os programas.......................................................................... 12
Figura 13 – Tabela que contém as informações da programação de TV ................................. 12
Figura 14 – Amostra das planilhas de sintonia ........................................................................ 13
Figura 15 – Planilhas após organização ................................................................................... 14
Figura 16 – Tabela para armazenamento ................................................................................. 14
Figura 17 – Tabela que resulta da Listagem 1 ......................................................................... 14
Figura 18 – Tabela que contém a mescla do EPG com o histórico do usuário ........................ 18
Figura 19 – Tabela com os novos campos início e fim da sintonia ......................................... 18
Figura 20 – Tabela com o resultado de SUBTIME() ............................................................... 18
Figura 21 – Tabela que adiciona o campo de duração do tipo inteiro ..................................... 21
Figura 22 – Tabela que adiciona o dia da semana.................................................................... 21
Figura 23 – Tabela que adiciona o período .............................................................................. 22
Figura 24 – Tabela que contém a versão final dos dados......................................................... 22
Figura 25 – Tabela do histórico de visualização de cada usuário ............................................ 22
Figura 26 – Tabela que armazena as avaliações de todos os usuários ..................................... 23
Figura 27 – Tabela que armazena as informações do usuário em análise ................................ 23
iv
Figura 28 – Tabela que armazena os usuários que gostam de programas similares ................ 23
Figura 29 – Tabela que armazena os usuários que gostam de gêneros similares..................... 23
Figura 30 – Tabela que armazena as recomendações (gêneros/programas) obtidas ................ 23
Figura 31 - % de acerto programa usuário 11 .......................................................................... 33
Figura 32 - % de acerto programa usuário 12 .......................................................................... 34
Figura 33 - % de acerto programa usuário 21 .......................................................................... 34
Figura 34 - % de acerto programa usuário 22 .......................................................................... 35
Figura 35 - % de acerto programa usuário 23 .......................................................................... 35
Figura 36 - % de acerto programa usuário 31 .......................................................................... 36
Figura 37 - % de acerto programa usuário 32 .......................................................................... 36
Figura 38 - % de acerto programa usuário 33 .......................................................................... 37
Figura 39 - % de acerto programa usuário 41 .......................................................................... 37
Figura 40 - % de acerto programa usuário 42 .......................................................................... 38
Figura 41 - % de acerto programa usuário 51 .......................................................................... 38
Figura 42 - % de acerto programa usuário 52 .......................................................................... 39
Figura 43 - % de acerto programa usuário 61 .......................................................................... 39
Figura 44 - % de acerto programa usuário 62 .......................................................................... 40
Figura 45 - % de acerto programa usuário 63 .......................................................................... 40
Figura 46 - % de acerto gênero usuário 11............................................................................... 42
Figura 47 - % de acerto gênero usuário 12............................................................................... 43
Figura 48 - % de acerto gênero usuário 21............................................................................... 43
Figura 49 - % de acerto gênero usuário 22............................................................................... 44
Figura 50 - % de acerto gênero usuário 23............................................................................... 44
Figura 51 - % de acerto gênero usuário 31............................................................................... 45
Figura 52 - % de acerto gênero usuário 32............................................................................... 45
Figura 53 - % de acerto gênero usuário 33............................................................................... 46
Figura 54 - % de acerto gênero usuário 41............................................................................... 46
Figura 55 - % de acerto gênero usuário 42............................................................................... 47
Figura 56 - % de acerto gênero usuário 51............................................................................... 47
Figura 57 - de acerto gênero usuário 52 ................................................................................... 48
Figura 58 - % de acerto gênero usuário 61............................................................................... 48
v
Figura 59 - % de acerto gênero usuário 62............................................................................... 49
Figura 60 - % de acerto gênero usuário 63............................................................................... 49
Figura 61 – Comparação de gêneros entre os usuários 11 e 12 ............................................... 51
Figura 62 – Comparação de gêneros entre os usuários 21, 22 e 23 ......................................... 51
Figura 63 – Comparação de gêneros entre os usuários 31, 32 e 33 ......................................... 52
Figura 64 – Comparação de gêneros entre os usuários 41 e 42 ............................................... 52
Figura 65 – Comparação de gêneros entre os usuários 51 e 52 ............................................... 53
Figura 66 – Comparação de gêneros entre os usuários 61, 62 e 63 ......................................... 53
Figura 67 – Comparação de programas entre os usuários 11 e 12 ........................................... 54
Figura 68 – Comparação de programas entre os usuários 21, 22 e 23 ..................................... 54
Figura 69 – Comparação de programas entre os usuários 31, 32 e 33 ..................................... 55
Figura 70 – Comparação de programas entre os usuários 41 e 42 ........................................... 55
Figura 71 – Comparação de programas entre os usuários 51 e 52 ........................................... 56
Figura 72 – Comparação de programas entre os usuários 61, 62 e 63 ..................................... 56
Figura 73 – Comparação entre programas e gêneros usuário 11 ............................................. 60
Figura 74 – Comparação entre programas e gêneros usuário 12 ............................................. 60
Figura 75 – Comparação entre programas e gêneros usuário 21 ............................................. 61
Figura 76 – Comparação entre programas e gêneros usuário 22 ............................................. 61
Figura 77 – Comparação entre programas e gêneros usuário 23 ............................................. 62
Figura 78 – Comparação entre programas e gêneros usuário 31 ............................................. 62
Figura 79 – Comparação entre programas e gêneros usuário 32 ............................................. 63
Figura 80 – Comparação entre programas e gêneros usuário 33 ............................................. 63
Figura 81 – Comparação entre programas e gêneros usuário 41 ............................................. 64
Figura 82 – Comparação entre programas e gêneros usuário 42 ............................................. 64
Figura 83 – Comparação entre programas e gêneros usuário 51 ............................................. 65
Figura 84 – Comparação entre programas e gêneros usuário 52 ............................................. 65
Figura 85 – Comparação entre programas e gêneros usuário 61 ............................................. 66
Figura 86 – Comparação entre programas e gêneros usuário 62 ............................................. 66
Figura 87 – Comparação entre programas e gêneros usuário 63 ............................................. 67
Figura 88 – Média 1 ................................................................................................................. 69
Figura 89 – Média 2 ................................................................................................................. 69
vi
LISTA DE TABELAS
Tabela 1 – Características dos domicílios .................................................................................. 7
Tabela 2 – Características socioeconômicas dos domicílios ...................................................... 7
Tabela 3 – Identificando os campos nos arquivos TXT ........................................................... 10
Tabela 4 – Layout dos arquivos TXT....................................................................................... 10
Tabela 5 – Relação quantidade de programas/categoria .......................................................... 11
Tabela 6 – % de Acerto de programas dos usuários 11, 12, 21, 22 e 23 .................................. 32
Tabela 7 – % de Acerto de programas dos usuários 31, 32, 33, 41 e 42 .................................. 32
Tabela 8 – % de Acerto de de programas dos usuários 51, 52, 61, 62 e 63 ............................. 33
Tabela 9 – % de Acerto dos gêneros dos usuários 11, 12, 21, 22, 23 ...................................... 41
Tabela 10 – % de Acerto dos gêneros dos usuários 31, 32, 33, 41 e 42 .................................. 41
Tabela 11 – % de Acerto dos gêneros dos usuários 51, 52, 61, 62 e 63 .................................. 42
Tabela 12 – Comparação entre gêneros e programas dos usuários 11, 12 e 21. ...................... 57
Tabela 13 – Comparação entre gêneros e programas dos usuários 22, 23 e 31. ...................... 57
Tabela 14 – Comparação entre gêneros e programas dos usuários 32, 33 e 41. ...................... 58
Tabela 15 – Comparação entre gêneros e programas dos usuários 41, 42 e 51. ...................... 58
Tabela 16 – Comparação entre gêneros e programas dos usuários 52 e 61. ............................ 59
Tabela 17 – Comparação entre gêneros e programas dos usuários 62 e 63. ............................ 59
Tabela 18 – Média 1 programas e gêneros ............................................................................... 68
Tabela 19 – Média 2 programas e gêneros ............................................................................... 68
vii
LISTAGENS
Listagem 1 – Consulta SQL para descobrir qual emissora o usuário está assistindo ............... 15
Listagem 2 – Consulta SQL para mesclar as informações do EPG com as do usuário ........... 15
Listagem 3 – Cálculo do horário de início e de fim da sintonia............................................... 16
Listagem 4 – Cálculo do tempo de visualização ...................................................................... 16
Listagem 5 – Cálculo da conversão do tempo do formato hora para inteiro ........................... 17
Listagem 6 – Cálculo do dia da semana ................................................................................... 17
Listagem 7 – Cálculo do período do dia .................................................................................. 19
Listagem 8 – Separando os usuários de cada domicílio ........................................................... 21
Listagem 9 – Inserindo os dados nas tabelas ratings e myprofile ............................................ 25
Listagem 10 – Melhores programas e gêneros ......................................................................... 25
Listagem 11 – Programas e gêneros mais visualizados ........................................................... 25
Listagem 12 – Cálculo da distância.......................................................................................... 26
Listagem 13 – Cálculo da norma.............................................................................................. 26
Listagem 14 – Knn usuários ..................................................................................................... 26
Listagem 15 – Cálculo da similaridade entre usuários ............................................................. 28
Listagem 16 – Inserção dos usuários parecidos nas tabelas correspondentes .......................... 28
Listagem 17 – Inserção das recomendações geradas na tabela resultProgramas ..................... 29
Listagem 18 – Comparação entre o que foi assistido e recomendado ..................................... 30
viii
LISTA DE EQUAÇÕES
Equação 1 – Cálculo dos Knn usuários .................................................................................... 27
Equação 2 – Cálculo da porcentagem de acerto de acordo com o número de recomendações
geradas ................................................................................................................ 31
Equação 3 – Cálculo da média da porcentagem de acerto de acordo com o número de
recomendações .................................................................................................... 31
Equação 4 – Cálculo da média da porcentagem de acerto de acordo com o número de dias
monitorados ......................................................................................................... 31
ix
SUMÁRIO
CAPÍTULO 1 - INTRODUÇÃO ............................................................................................. 1
CAPÍTULO 2 - SISTEMAS DE RECOMENDAÇÃO ......................................................... 2
2.1 Filtragem de Informação .......................................................................................... 2
2.1.1 Filtragem Baseada em Conteúdo ............................................................... 3
2.1.2 Filtragem Colaborativa .............................................................................. 4
2.1.3 Filtragem Híbrida ...................................................................................... 4
CAPÍTULO 3 - ESTUDO DE CASO ..................................................................................... 6
3.1 Conhecendo e Preparando os Dados ........................................................................ 7
3.1.1 EPG ............................................................................................................ 8
3.1.2 Histórico dos usuários ............................................................................. 13
3.2 Metodologia ............................................................................................................ 22
3.3 Simulação ............................................................................................................... 24
CAPÍTULO 4 - RESULTADOS ........................................................................................... 31
4.1 Porcentagem de Acerto: programas por usuários ................................................... 32
4.2 Porcentagem de Acerto: gêneros por usuário ......................................................... 41
4.3 Porcentagem de Acerto: comparação de gêneros e programas entre usuários do
mesmo domicílio .......................................................................................................... 50
4.4 Porcentagem de Acerto: comparação entre programas e gêneros por usuário ....... 57
4.5 Porcentagem de Acerto: médias dos programas e gêneros .................................... 68
CAPÍTULO 5 - CONCLUSÕES ........................................................................................... 70
REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................. 71
INTRODUÇÃO
Sistemas de recomendação fornecem recomendações com base em informações sobre
as preferências dos usuários. A Filtragem de Informação é utilizada pelos sistemas de
recomendação para o processamento e sugestão das informações aos usuários. A Filtragem
Colaborativa é uma abordagem de Filtragem de Informação muito utilizada em sistemas de
recomendação e tenta prever a utilidade de itens para um determinado usuário com base nos
itens previamente avaliados por outros usuários, sugerindo itens relevantes e descartando os
irrelevantes. Muito utilizados na Internet, os sistemas de recomendação têm sido empregados
no contexto de TVD (TV Digital), como por exemplo, (Ávila, 2010), (Lucas, 2009), (Uribe,
2009), (Solla et al, 2008), (Bar et al, 2008), (Einarsson, 2007), (Chorianopoulus, 2007), (Choi,
Koh and Lee, 2007), (Yu et al, 2006), (Silva, 2005), (Bozios et al, 2001), (Gutta et al, 2000),
(Das and Horst, 1998), entre outros. Da mesma forma que ocorre na Internet, os sistemas de
recomendação poderão ser utilizados na TVD para a recomendação de programas de TV,
publicidade e propaganda e também para comércio eletrônico. Em sistemas de recomendação
item é tudo aquilo que pode ser visualizado ou avaliado pelo usuário. Em uma loja virtual, por
exemplo, os itens são os produtos que são vendidos, em uma biblioteca, livros, em uma
locadora de DVDs, os filmes, e assim por diante. Assim, os itens no contexto de TVD podem
ser os programas, a propaganda e os produtos a serem vendidos.
Este Relatório Técnico apresenta os estudos realizados com a Filtragem Colaborativa
aplicada aos dados de TV Digital fornecidos pelo IBOPE1 e está estruturado da seguinte
forma: o Capítulo 1 introduz o trabalho, o Capítulo 2 contém uma breve revisão bibliográfica
sobre sistemas de recomendação, o Capítulo 3 apresenta o estudo de caso, o Capítulo 4, os
resultados obtidos e o Capítulo 5, as conclusões. Os estudos visaram observar e avaliar como
a Filtragem Colaborativa pode ser utilizada em sistemas de recomendação no contexto da TV
Digital.
1 Multinacional brasileira de capital privado, o IBOPE é uma das maiores empresas de pesquisa de mercado da
América Latina. Há 67 anos fornece um amplo conjunto de informações e estudos sobre mídia, opinião pública,
intenção de voto, consumo, marca, comportamento e mercado. (www.ibope.com.br)
1
2
CAPÍTULO 1 -
CAPÍTULO 2 - SISTEMAS DE RECOMENDAÇÃO
Os sistemas de recomendação envolvem várias tecnologias como: a ciência cognitiva, a
teoria da aproximação, a recuperação de informação, a filtragem de informação, teorias de
previsão, entre outras, e podem ser aplicados a diversos domínios. Essas técnicas
fundamentam o funcionamento dos sistemas de recomendação e as mais aplicadas são as de
Filtragem de Informação, as quais são basicamente divididas em Filtragem Colaborativa e
Filtragem Baseada em Conteúdo. Um sistema de recomendação pode utilizar uma única
técnica de Filtragem de Informação ou as duas em conjunto, tornando-se, assim, um sistema
híbrido. Essas técnicas também possuem algoritmos desenvolvidos particularmente para o seu
tipo (TORRES, 2004; REATEGUI, 2005). As subseções a seguir contêm mais detalhes sobre
os dois principais tipos de Filtragem de Informação.
2.1 Filtragem de Informação
Uma das primeiras formas de Filtragem de Informação é proveniente do trabalho
Disseminação Seletiva da Informação (SDI), concebido como uma forma automática para que
cientistas se mantivessem informados sobre novos documentos publicados em suas áreas de
especialização. O cientista podia criar e modificar um perfil de usuário de palavras-chave que
descrevessem os seus interesses. A SDI foi implementado em larga escala, entretanto,
utilizou-se muito menos que o previsto. (FOLTZ, 1992)
Filtragem da Informação é o nome usado para descrever uma variedade de processos
que envolvem a prestação de informações a pessoas que delas necessitam. Sistemas de
Filtragem de Informação são projetados para a filtragem de dados não estruturados ou semi-
estruturados, em oposição às aplicações de banco de dados, que utilizam dados bem
estruturados. Os sistemas tratam, principalmente, informações textuais, mas também podem
2
3
tratar imagens, voz, vídeo ou outros tipos de dados que fazem parte dos sistemas de
informação multimídia.
A Filtragem também pode ser baseada em descrições de preferências individuais ou de
grupo, chamadas de perfis, os quais geralmente representam interesses de longo prazo. Além
disso, também tem sido usada para descrever o processo de acesso e recuperação de
informações de bancos de dados remotos, caso em que os dados de entrada são os resultado
das pesquisas nos bancos de dados (BELKIN, 1992).
2.1.1 Filtragem Baseada em Conteúdo
O objetivo da Filtragem Baseada em Conteúdo é gerar descrições dos conteúdos dos
itens automaticamente e compará-las com a descrição do interesse do usuário, verificando,
dessa forma, se o item é ou não relevante para o mesmo baseando-se na análise do conteúdo
do item e no perfil do usuário (MARCHI, 2008; TORRES, 2004).
Podem ser aplicadas técnicas, entre elas, índices de busca booleana, filtragem
probabilística e modelos vetoriais. Nos índices de busca booleana, a consulta é formada por
um conjunto de palavras-chave unidas por operadores booleanos, ao passo que, na filtragem
probabilística, aplica-se o raciocínio probabilístico para determinar a probabilidade que um
documento apresenta para atender as necessidades de informações de um usuário. (FOLTZ,
1992; MARCHI, 2008; REATEGUI, 2005; TORRES, 2004)
O modelo vetorial é o mais aplicado e a técnica TF-IDF (Term Frequency - Inverse-
Document Frequency) é baseada nesse modelo. Essa técnica considera o peso que uma
palavra possui dentro da coleção de documentos e indica que a frequência das palavras
comuns em dois textos evidencia a semelhança entre eles. Por último, o tamanho de um
documento também é analisado, pois um texto longo tem maior possibilidade de semelhança
que um texto curto, visto que esse possui menos palavras que o outro (MARCHI, 2008;
TORRES, 2004).
4
2.1.2 Filtragem Colaborativa
A Filtragem Colaborativa remete a situações em que certas pessoas pedem a outras
opiniões ou recomendações sobre determinado assunto, como por exemplo, que filme assistir,
que livro ler, etc. Essa técnica é assim chamada, pois existe um processo de seleção no
momento de geração das recomendações e, para isso, as pessoas colaboram entre si,
utilizando algumas estratégias de recomendação como, por exemplo, a avaliação de um
produto.
Tecnicamente, a Filtragem Colaborativa ocorre em três passos: no armazenamento das
opiniões das pessoas, no agrupamento de pessoas com perfis semelhantes (vizinhos) e, por
fim, na recomendação propriamente dita de algo que foi altamente avaliado pelos vizinhos.
Essa técnica é muito utilizada em lojas virtuais como Submarino, Americanas, Amazon, entre
outras. (TORRES, 2004)
O Coeficiente de Pearson e o Cosseno são duas formas matemáticas muito utilizadas
para medir a similaridade em Filtragem Colaborativa. O Coeficiente de Correlação de Pearson
mede a força da relação entre duas variáveis e o valor zero indica que não existe nenhuma
relação entre as mesmas. Isso ocorre quando duas variáveis são absolutamente independentes
entre si. O valor máximo de + 1,00 ocorre quando a associação for positiva e a mais forte
possível. O valor máximo de -1,00 ocorre quando a associação for negativa e a menos forte
possível. Já o Cosseno é uma métrica para medir o cosseno do ângulo entre dois vetores num
espaço vetorial, sendo que esses representam os usuários, e retorna valores entre 0 e 1. Quanto
mais próximo de 1 for o valor, mais similares são os dois vetores (SILVA, 2008; MAIA,
2008).
2.1.3 Filtragem Híbrida
A Filtragem Híbrida mistura a Filtragem Baseada em Conteúdo e a Filtragem
Colaborativa em um único sistema, melhorando as recomendações oferecidas aos usuários e,
dessa forma, procura resolver alguns dos problemas introduzidos por ambas as técnicas.
5
Assim, os métodos de recomendação nessa categoria podem se combinar de diversas
formas: a) Filtragem Colaborativa processada sequencialmente após a Filtragem Baseada em
Conteúdo; b) Filtragem Baseada em Conteúdo processada sequencialmente após a Filtragem
Colaborativa e; c) Filtragem Baseada em Conteúdo processada paralelamente com a Filtragem
Colaborativa (ADOMAVICIUS, 2005; EINARSSON, 2007).
6
CAPÍTULO 3 - ESTUDO DE CASO
Este estudo de caso teve como objetivo avaliar o processo e as implicações que a
Filtragem Colaborativa gera ao ser utilizada no contexto da TVD Portátil. A necessidade de se
gerar recomendações melhores que as baseadas apenas em Filtragem de Conteúdo também
motivou o desenvolvimento deste estudo de caso. As seções deste capítulo descrevem com
detalhes como o estudo de caso foi realizado.
Considera-se, para os testes, o contexto apresentado na Figura 1. O usuário interage com
a TVD disponível em seu aparelho celular. A rede broadcast transmite áudio, vídeo e dados
(como o EPG – Guia Eletrônico de Programação) para o celular. O celular captura e armazena
tudo o que o usuário visualiza. Quando o usuário solicita a recomendação, o celular envia os
dados do EPG e do seu histórico para o servidor de recomendações. O servidor faz todo o
processamento de geração das recomendações utilizando a Filtragem Colaborativa e envia a
lista de recomendações para o usuário. O usuário, então, visualiza a lista no display do
dispositivo e pode selecionar alguma delas ou não.
Figura 1 – Contexto do Estudo de Caso
3
7
3.1 Conhecendo e Preparando os Dados
Os dados fornecidos pelo IBOPE continham as informações do EPG, histórico de
visualização do usuário (o que o telespectador assistiu) e também as informações
socioeconômicas dos indivíduos de cada domicilio. Todos esses dados do IBOPE foram
separados e armazenados no banco de dados MySQL. Os dados compreendem 15 dias de
programação e monitoramento de 6 domicílios brasileiros com a programação da TV Aberta.
Esses domicílios foram monitorados minuto a minuto, assim como cada indivíduo foi
monitorado separadamente. A Tabela 1 ilustra a quantidade de indivíduos e de TVs por
domicílio e a Tabela 2 apresenta as informações socioeconômicas dos domicílios.
Tabela 1 – Características dos domicílios
Qtde domicílios Qtde TVs Qtde indivíduos
1 1 2
2 1 3
3 2 3
4 2 2
5 1 2
6 2 3
Total 15
Tabela 2 – Características socioeconômicas dos domicílios
Domicílio 1 2 3 4 5 6
Classe Social DE C C AB C AB
Idade da
dona-de-
casa
44 45 39 32 60 36
Grau de
instrução do
chefe-de-
casa
Primário
incompleto
Ginasial
incompleto
Ginasial
incompleto
Colegial
completo
Colegial
incompleto
Colegial
completo
Sexo do
indivíduo 1 Feminino Feminino Feminino Feminino Feminino Feminino
Idade do
indivíduo 1 44 45 39 32 60 36
8
Domicílio 1 2 3 4 5 6
Sexo do
Indivíduo 2 Feminino Masculino Masculino Masculino Masculino Masculino
Idade do
indivíduo 2 8 48 40 30 77 38
Sexo do
indivíduo 3 Feminino Feminino Masculino
Idade do
indivíduo 3
Em seguida, foram criadas as tabelas no banco de dados para armazenar essas
informações, como ilustram as Figuras 2, 3 e 5. A Figura 4 indica a captura de tela da tabela
users, que contém informações básicas dos usuários.
3.1.1 EPG
O EPG é composto por 15 arquivos TXT, denominados arquivos de programação,
sendo um para cada dia (de 05/03/2008 à 19/03/2008), com a grade de 10 emissoras de TV
Figura 2 –
Características dos
domicílios
Figura 3 –
Características
socioeconômicas
Figura 5 – Tabela
usuários
Figura 4 – Conteúdo da tabela
usuários
9
Aberta, com início às 00:00:00 e término às 05:59:00. A Figura 6 ilustra uma amostra do
layout inicial desses arquivos e a Tabela 3 apresenta como esse layout foi organizado.
Figura 6 – Amostra dos arquivos TXT
Tomando-se como exemplo a primeira linha da Figura 2, identificam-se os campos,
conforme indicados na Tabela 3. Após o entendimento dos arquivos que compõem o EPG, os
dados foram copiados dos arquivos de programação para uma planilha do BrOffice com o
auxílio do recurso colar especial. Esse recurso permitiu que os dados fossem exportados
exatamente como foram construídos no layout, separando os campos em colunas. No
momento da exportação, os dados numéricos perderam seu formato e foram, então,
10
reformatados de acordo com a Tabela 4. Após a exportação, foi feita a limpeza dos dados
desnecessários.
Tabela 3 – Identificando os campos nos arquivos TXT
Coluna Conteúdo Identificação
1.ª 005100PNREXXXXX 005 Código da emissora
100PNREXXXXX Descartado
2.ª 002645RELIGIOSO MAT 002645 Código do programa
RELIGIOSO MAT Nome do programa
3.ª 000000 Descartado
4.ª 0000 Descartado
5.ª 060000080000DIA_05
060000 Início do programa
080000 Fim do
programa
DIA_05 Dia do
programa
6.ª 111111100000000000000003XX Descartado
Tabela 4 – Layout dos arquivos TXT
Descrição Tipo Posição Inicial
Código da emissora Numérico (03) 1
Código do programa Numérico (06) 24
Nome do programa Caractere (30) 30
Início do programa Numérico (06) 160
Fim do programa Numérico (06) 166
Em seguida, perceberam-se algumas inconsistências de horários, que foram
imediatamente corrigidas para que a análise futura não gerasse resultados errôneos. O
processo acima descrito se repetiu para cada um dos 15 arquivos de programação e os dados
foram agrupados em uma única planilha que continha o EPG dos 15 dias.
O comportamento do usuário é composto por várias planilhas, denominadas planilhas
de sintonia, que possuem muito mais informações que o EPG. As planilhas de sintonia e o
EPG contêm códigos que identificam as emissoras da TV Aberta. Foi necessário padronizar
esses códigos, pois o número de identificação foi registrado diferentemente nesses arquivos.
Para evitar a inconsistência de dados, foi adicionada uma coluna ao EPG com o nome da
Emissora e, em seguida, os códigos das emissoras de TV Aberta foram padronizados, pois
havia conflitos de códigos entre as emissoras Bandeirantes, Record, Rede TV! e TV Cultura.
Também foram adicionados no EPG o dia da semana e a duração do programa. O
EPG, nessa etapa, ainda não estava completo, pois faltavam o gênero e o subgênero de cada
11
programa. Para isso, procurou-se, nos sites oficiais de cada emissora, o gênero dos Programas
transmitidos e, em seguida, foram identificados de acordo com a norma brasileira ABNT
NBR 15603-2:2007 e constam do Anexo C - “Descritor de gênero no descritor de conteúdo”.
Para facilitar essa identificação, foi utilizado o recurso de filtro para classificar o EPG
de acordo com o nome do programa. Caso esse se repetisse dos 15 dias do intervalo
considerado, não era necessário procurar novamente no site da emissora. Ressalta-se que a
planilha do EPG totalizou cerca de 4.500 linhas com identificação de aproximadamente 800
programas diferentes. A Tabela 5 ilustra a relação quantidade de programas/categorias
encontrada no EPG. No MySQL também foram criadas tabelas para guardar as informações
do EPG. As Figuras de 7 a 13 apresentam essas tabelas.
Tabela 5 – Relação quantidade de programas/categoria
Gênero Quantidade
Minissérie 0
Erótico 1
Novela 15
Reality Show 15
Filme 24
Humorístico 25
Informação 32
Educativo 33
Esporte 40
Sorteio, televendas, premiação 42
Debate/Entrevista 52
Série/Seriado 56
Outros 62
Infantil 63
Jornalismo 146
Variedade 203
TOTAL 812
12
Figura 7 – Tabela que
contém os descritores de
gênero
Figura 8 – Tabela que contém os
descritores de subgênero
Figura 9 – Tabela que contém os
descritores de gênero com seus
respectivos subgêneros
Figura 10 – Tabela que
contém os códigos originais
das emissoras
Figura 11 – Tabela que contém os
códigos das emissoras
Figura 12 – Tabela que contém os
programas
Figura 13 – Tabela que contém as informações da programação de TV
13
3.1.2 Histórico dos usuários
As planilhas de sintonia que contêm os dados dos usuários, foram modificadas de
forma que técnicas de Filtragem Colaborativa pudessem ser aplicadas. Cada domicílio possui
uma quantidade de usuários, que foram monitorados separadamente. Esses dados vieram
todos juntos nas planilhas de sintonia e foi necessário separá-los. A Figura 14 apresenta uma
captura de tela de como as planilhas de sintonia estão organizadas. DOMIC_0x indica o
número do domicílio (X é o número do domicílio). DIA_0x indica o dia do monitoramento.
Inds indica o número do indivíduo (usuário). Tvs indica o número da TV. 06:00 em diante
indica o horário do monitoramento. Assim, a planilha é preenchida com o número do canal
que aquele indivíduo está assistindo naquela TV, naquele horário, naquele dia e naquele
domicílio.
Figura 14 – Amostra das planilhas de sintonia
Os dados foram, então, separados por domicílios e, em seguida, por usuários de cada
domicílio. Apesar de alguns domicílios possuírem mais de uma TV, percebeu-se que não há
registros de monitoramento em mais de uma TV ao mesmo tempo e, portanto, considera-se
que o domicílio tem apenas uma TV. A Figura 15 apresenta como os dados foram
organizados no momento da separação. A coluna Domicílio indica o domicílio ao qual aquele
indivíduo pertence. A coluna Dia indica o dia da visualização do programa. A coluna Horário
14
indica a hora de visualização. A coluna Indivíduo indica qual é o usuário que está vendo
aquele programa. A coluna TV indica o canal que o usuário está assistindo. Observa-se que os
dados também foram formatados: data no formato AAAA-mm-dd, hora no formato
HH:mm:ss e TV no formato 00X. As planilhas resultantes foram convertidas em arquivos
CSV, que em seguida foram inseridos no MySQL. Para tanto, criou-se uma tabela para cada
domicílio, chamada dx_cru (Cru por conter os dados originais), que armazena essas
informações, conforme ilustra a Figura 16.
Figura 15 – Planilhas após organização
Figura 16 – Tabela para
armazenamento
Figura 17 – Tabela que resulta da
Listagem 1
A partir do campo codigoEmissora, foi possível buscar na tabela codigos_emissoras
qual emissora o usuário estava assistindo. A consulta SQL da Listagem 1 fez essa mescla e,
então, inseriu o resultado em outra tabela, chamada dx_v2, na qual x indica o número do
domicílio. A consulta seleciona os campos da tabela dx_cru quando o código da emissora
nessa tabela for igual ao da tabela codigos_emissoras, ordenando pelo código da emissora da
tabela dx_cru. A Figura 14 apresenta os campos da tabela criada no MySQl.
15
INSERT INTO d1_v2
SELECT d.id_d1, d.domicílio, d.dia, d.Horário, d.id_users, d.codigoEmissora, d.nomeEmissora
FROM d1_cru d, codigos_emissoras c
WHERE d.codigoEmissora = c.codigo_p
ORDER BY d.codigoEmissora;
Listagem 1 – Consulta SQL para descobrir qual emissora o usuário está assistindo
No passo seguinte, fez-se a mescla com o EPG, obtendo todas as informações
referentes ao programa visualizado. A Listagem 2 apresenta a consulta SQL utilizada para
fazer a mescla. O resultado da consulta também foi armazenado em outra tabela, chamada
dx_v3. A Figura 15 apresenta os campos dessa tabela. A consulta seleciona alguns campos da
tabela dx_cru e da tabela EPG quando o dia e o código da emissora são iguais em ambas e
quando o horário da tabela dx_cru é maior ou igual à hora do início do programa e menor ou
igual à hora do fim do programa. Sem informar essas condições, o resultado gerado estará
incorreto. Novamente, isso é repetido para todos os domicílios.
INSERT INTO d1_v3
SELECT d.domicilio, d.id_d1, d.id_users, e.id_epg, d.dia as ddia, e.dia as edia, d.Horario,
e.horaInicio, e.horaFim, e.inicioPrograma, e.fimPrograma, e.duracaoPrograma,
e.codigoPrograma, e.nomePrograma, d.codigoEmissora as dce, e.codigoEmissora as ece,
e.nomeEmissora, e.genero, e.descritorGenero, e.subgenero, e.descritorSubgenero,
e.generoSubgenero, e.descritorGeneroSubgenero
FROM d1_cru d, matrixepg e
WHERE ((d.dia=e.dia) and (d.codigoEmissora = e.codigoEmissora)
and (d.Horário > = e.horaInicio) and (d.Horário <= e.horaFim))
ORDER BY d.id_users,d.dia,d.Horário;
Listagem 2 – Consulta SQL para mesclar as informações do EPG com as do usuário
O passo seguinte consistiu em encontrar os horários de início e de fim da sintonização
do usuário naqueles canais. Para tanto, usou-se uma consulta SQL, como ilustra a Listagem 3,
que usa os comandos MIN() e MAX() que retorna o valor mínimo ou máximo, e o campo
horário da tabela dx_v3 como base. A Figura 16 apresenta a tabela criada para armazenar o
resultado dessa consulta.
16
INSERT INTO d1_v4
SELECT d.domicilio, d.id_d1, d.id_users, d.id_epg, d.dia, d.Horario, min(d.Horario) AS
inicioSintonia, max(d.Horario) AS fimSintonia, d.horaInicio, d.horaFim, d.inicioPrograma,
d.fimPrograma, d.duracaoPrograma, d.codigoPrograma, d.nomePrograma, d.dce as
codigoEmissora, d.nomeEmissora, d.genero, d.descritorGenero, d.subgenero,
d.descritorSubgenero, d.generoSubgenero, d.descritorGS
FROM d1_v3 d
GROUP BY d.id_users, d.nomePrograma, d.dia
HAVING (d.Horário=min(d.Horario))
ORDER BY d.id_users, d.dia, d.Horario;
Listagem 3 – Cálculo do horário de início e de fim da sintonia
Em seguida, calculou-se o tempo em que o usuário permaneceu sintonizado nos
canais. A Listagem 4 demonstra a consulta SQL utilizada. O comando SUBTIME(), que
retorna a subtração entre as datas, foi utilizado para fazer o cálculo de subtração entre os
campos início e fim de sintonia. A Figura 17 apresenta a tabela criada para armazenar o
resultado dessa consulta.
INSERT INTO d1_v5
SELECT d.domicilio, d.id_d1, d.id_users, d.id_epg, d.dia, d.Horario, d.inicioSintonia,
d.fimSintonia, subtime(d.fimSintonia, d.inicioSintonia) as duracaoSintonia, d.horaInicio,
d.horaFim, d.inicioPrograma, d.fimPrograma, d.duracaoPrograma, d.codigoPrograma,
d.nomePrograma, d.codigoEmissora, d. nomeEmissora,d.genero, d.descritorGenero, d.subgenero,
d.descritorSubgenero, d.generoSubgenero, d.descritorGS
FROM d1_v4 d;
Listagem 4 – Cálculo do tempo de visualização
Após calcular o tempo de visualização, foi necessário converter esse tempo em
número inteiro, para a posterior utilização nos cálculos da Filtragem Colaborativa. A
Listagem 5 apresenta a consulta SQL utilizada. Utilizaram-se os comandos HOUR(), que
retorna a hora do tempo sendo o valor de retorno entre 0 a 23 e MINUTE(), que retorna o
minuto da hora, na faixa de 0 a 59, para realizar o seguinte cálculo:
duracao em inteiro = (hora * 60 ) + minuto
duracao em inteiro = ( hora ( fim sintonia – inicio sintonia ) * 60 ) + ( minuto ( fim sintonia – inicio sintonia ) )
17
A Figura 18 apresenta a tabela criada no MySQL para armazenar o resultado.
INSERT INTO d1_v6
SELECT d.domicilio, d.id_dx, d.id_users, d.id_epg, d.dia, d.Horario, d.inicioSintonia,
d.fimSintonia, d.duracaoSintonia, ((hour (subtime (d.fimSintonia,d.inicioSintonia)) * 60) +
minute(subtime(d.fimSintonia,d.inicioSintonia))) as duracaoS2, d.horaInicio,d.horaFim,
d.inicioPrograma, d.fimPrograma, d.duracaoPrograma, d.codigoPrograma, d.nomePrograma,
d.codigoEmissora, d.nomeEmissora, d.genero, d.descritorGenero, d.subgenero,
d.descritorSubgenero, d.generoSubgenero, d.descritorGS
FROM d1_v5 d;
Listagem 5 – Cálculo da conversão do tempo do formato hora para inteiro
Ainda faltavam algumas informações que podem ser úteis no momento de geração das
recomendações, o dia da semana e o período do dia. A Listagem 6 ilustra a consulta SQL
utilizada para encontrar o dia da semana e a Listagem 7 a consulta para o período. As Figuras
19 e 20 apresentam as tabelas criadas no banco de dados para armazenar os resultados dessas
consultas.
INSERT INTO d1_v7
SELECT d.domicilio, d.id_dx, d.id_users, d.id_epg, d.dia, d.Horario, d.inicioSintonia,
d.fimSintonia, d.duracaoSintonia, duracaoS2, DAYNAME(dia) as diaSemana, d.horaInicio,
d.horaFim, d.inicioPrograma, d.fimPrograma, d.duracaoPrograma, d.codigoPrograma,
d.nomePrograma, d.codigoEmissora as codigoEmissora,d.nomeEmissora, d.genero,
d.descritorGenero, d.subgenero, d.descritorSubgenero, d.generoSubgenero, d.descritorGS
FROM d1_v6 d;
Listagem 6 – Cálculo do dia da semana
18
Figura 18 – Tabela que contém a
mescla do EPG com o histórico do
usuário
Figura 19 – Tabela com os novos
campos início e fim da sintonia
Figura 20 – Tabela com o
resultado de SUBTIME()
O dia da semana é descoberto passando-se o campo dia para o comando DAYNAME()
do MySQL, que retorna o nome do dia da semana para a data. Faixas de horário foram
definidas para identificar o período do dia. Quando a faixa varia entre 06:00:00 e 11:59:00,
usa-se a variável manha, criando o campo período. Quando a faixa varia entre 12:00:00 e
17:59:00, usa-se a variável tarde, entre 18:00:00 e 23:59:00 usa-se a variável noite e entre
00:00:00 e 05:59:00, madrugada. Os dados são inseridos em outra tabela. Assim, finaliza-se a
organização dos dados.
set @manha='manha';
set @tarde='tarde';
set @noite='noite';
set @madrugada='madrugada';
19
INSERT INTO d1_v8
SELECT d.domicílio, d.id_d1, d.id_users, d.id_epg, d.dia, d.inicioSintonia, d.fimSintonia,
d.duracaoSintonia as duracaoS1, d.duracaoS2, d.diaSemana, @manha as periodo,
d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d1_v7 d
WHERE (inicioSintonia>='06:00:00' and fimSintonia<='11:59:00');
INSERT INTO d1_v8
SELECT d.domicílio, d.id_d1, d.id_users, d.id_epg, d.dia, d.inicioSintonia, d.fimSintonia,
d.duracaoSintonia as duracaoS1, d.duracaoS2, d.diaSemana, @tarde as periodo,
d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM dx_v7 d
WHERE (inicioSintonia>='12:00:00' and fimSintonia<='17:59:00');
INSERT INTO d1_v8
SELECT d.domicílio, d.id_d1, d.id_users, d.id_epg, d.dia, d.inicioSintonia, d.fimSintonia,
d.duracaoSintonia as duracaoS1, d.duracaoS2, d.diaSemana, @noite as periodo,
d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM dx_v7 d
WHERE (inicioSintonia>='18:00:00' and fimSintonia<='23:59:00');
INSERT INTO d1_v8
SELECT d.domicílio, d.id_d1, d.id_users, d.id_epg, d.dia, d.inicioSintonia, d.fimSintonia,
d.duracaoSintonia as duracaoS1, d.duracaoS2, d.diaSemana, @madrugada as periodo,
d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM dx_v7 d
WHERE (inicioSintonia>='00:00:00' and fimSintonia<='06:59:00');
Listagem 7 – Cálculo do período do dia
O último passo foi o de separar os usuários de cada domicílio em tabelas específicas.
A consulta fez uma comparação entre o domicílio e o usuário e cria o campo userid, que
identifica o usuário X que pertence ao domicílio X.
INSERT INTO user_11 SELECT '11' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d1_v8 d WHERE (domicílio='1' and id_users='1');
20
INSERT INTO user_12 SELECT '12' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d1_v8 d WHERE (domicílio='1' and id_users='2');
INSERT INTO user_21 SELECT '21' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d2_v8 d WHERE (domicílio='2' and id_users='1');
INSERT INTO user_22 SELECT '22' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d2_v8 d WHERE (domicílio='2' and id_users='2');
INSERT INTO user_23 SELECT '23' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d2_v8 d WHERE (domicílio='2' and id_users='3');
INSERT INTO user_31 SELECT '31' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d3_v8 d WHERE (domicílio='3' and id_users='1');
INSERT INTO user_32 SELECT '32' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d3_v8 d WHERE (domicílio='3' and id_users='2');
INSERT INTO user_33 SELECT '33' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d3_v8 d WHERE (domicílio='3' and id_users='3');
INSERT INTO user_41 SELECT '41' as userid, d.dia, d.inicioSintonia, d.fimSintonia,
d.duracaoS2, d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d4_v8 d WHERE (domicílio='4' and id_users='1');
INSERT INTO user_42 SELECT '42' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d4_v8 d WHERE (domicílio='4' and id_users='2');
INSERT INTO user_51 SELECT '51' as userid, d.dia, d.inicioSintonia, d.fimSintonia,
d.duracaoS2, d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d5_v8 d WHERE (domicílio='5' and id_users='1');
21
INSERT INTO user_52 SELECT '52' as userid, d.dia, d.inicioSintonia, d.fimSintonia,
d.duracaoS2, d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d5_v8 d WHERE (domicílio='5' and id_users='2');
INSERT INTO user_53 SELECT '53' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d5_v8 d WHERE (domicílio='5' and id_users='3');
INSERT INTO user_61 SELECT '61' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d6_v8 d WHERE (domicílio='6' and id_users='1');
INSERT INTO user_62 SELECT '62' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d6_v8 d WHERE (domicílio='6' and id_users='2');
INSERT INTO user_63 SELECT '63' as userid, d.dia, d.inicioSintonia, d.fimSintonia, d.duracaoS2,
d.diaSemana, d.periodo, d.nomePrograma, d.nomeEmissora, d.descritorGS
FROM d6_v8 d WHERE (domicílio='6' and id_users='3');
Listagem 8 – Separando os usuários de cada domicílio
Figura 21 – Tabela que adiciona o
campo de duração do tipo inteiro
Figura 22 – Tabela que adiciona o
dia da semana
22
Figura 23 – Tabela que adiciona o
período
Figura 24 – Tabela que contém a
versão final dos dados
Figura 25 – Tabela do
histórico de visualização
de cada usuário
3.2 Metodologia
Para aplicar a Filtragem Colaborativa foi necessário criar mais tabelas no banco. A
tabela ratings armazena o que todos os usuários visualizaram no dia analisado, além do
que foi visto no passado. A tabela myprofile armazena o que um usuário específico
visualizou no dia analisado, assim como as visualizações passadas desse usuário em
particular. A tabela similaruser armazena os usuários parecidos com o usuário analisado
levando em conta os programas, juntamente com a pontuação. A tabela similaruser2 faz o
mesmo, entretanto, está relacionada aos gêneros e seus subgêneros. A tabela
resultProgramas tem como função armazenar os resultados das recomendações geradas,
tanto para programas quanto para gêneros. Esse resultado é utilizado para calcular a
porcentagem de acerto. As Figuras de 26 a 30 apresentam as tabelas cridas no MySQL.
23
Figura 26 – Tabela que armazena as avaliações de
todos os usuários
Figura 27 – Tabela que armazena as informações
do usuário em análise
Figura 28 – Tabela que
armazena os usuários que
gostam de programas similares
Figura 29 – Tabela que
armazena os usuários que
gostam de gêneros similares
Figura 30 – Tabela que armazena
as recomendações
(gêneros/programas) obtidas
Os passos para a execução da Filtragem Colaborativa nesses dados são listados a
seguir:
1. Os dados são inseridos no banco, conforme o usuário e o dia a ser analisado;
2. Encontram-se os 10 melhores programas e gêneros para se recomendar, de
acordo com os outros usuários;
3. Encontram-se os 10 programas e gêneros mais visualizados, de acordo com os
outros usuários;
4. Calcula-se a distância dos programas e dos gêneros;
5. Calcula-se a norma dos usuários e do usuário em análise;
6. Encontram-se os knn usuários para os programas e para os gêneros;
7. Calcula-se o quanto cada usuário é parecido com o outro;
8. Os Knn usuários são salvos nas tabelas similaruser e similaruser2;
9. Encontram-se as sugestões para programas e gêneros;
10. As recomendações geradas são comparadas ao programa/gênero assistido pelo
24
usuário no dia seguinte e calcula-se, dessa forma, a porcentagem de acerto das
recomendações, tanto para os programas, quanto para os gêneros.
Esses passos se repetem de forma iterativa. Após seguir os passos para o primeiro
usuário e para o primeiro dia, aplica-se novamente ao primeiro usuário e ao segundo dia e
assim por diante. Vale ressaltar que sempre é levado em consideração o que foi visto no dia
da pesquisa e nos dias anteriores.
3.3 Simulação
Nesta seção descreve-se a aplicação dos passos citados na seção 3.2. Após a criação
de todas as tabelas necessárias, iniciou-se o processo de simulação. Como existem 15
usuários e a simulação foi feita para todos, apresenta-se aqui apenas a simulação para um
usuário.
Usuário 11 – Dia 1:
No primeiro passo, os dados correspondentes ao primeiro dia são inseridos nas tabelas
ratings e myprofile, conforme ilustra a Listagem 9.
insert into myprofile select * from user_11 where dia='2008-03-05';
insert into ratings select * from user_11 where dia='2008-03-05';
insert into ratings select * from user_12 where dia='2008-03-05'
insert into ratings select * from user_21 where dia='2008-03-05';
insert into ratings select * from user_22 where dia='2008-03-05';
insert into ratings select * from user_23 where dia='2008-03-05';
insert into ratings select * from user_31 where dia='2008-03-05';
insert into ratings select * from user_32 where dia='2008-03-05';
insert into ratings select * from user_33 where dia='2008-03-05';
insert into ratings select * from user_41 where dia='2008-03-05';
insert into ratings select * from user_42 where dia='2008-03-05';
insert into ratings select * from user_51 where dia='2008-03-05';
insert into ratings select * from user_52 where dia='2008-03-05';
25
insert into ratings select * from user_61 where dia='2008-03-05';
insert into ratings select * from user_62 where dia='2008-03-05';
insert into ratings select * from user_63 where dia='2008-03-05';
Listagem 9 – Inserindo os dados nas tabelas ratings e myprofile
No passo seguinte, os 10 melhores programas e gêneros da base foram recomendados,
de acordo com os outros usuários. Calculou-se a média e a quantidade de vezes que o
programa/gênero foi visualizado agrupando-se, na primeira consulta, pelo nome do
programa e, na segunda, pelo gênero. A Listagem 10 apresenta a consulta SQL.
SELECT round(avg(duracao),1) AS avgrating, count(userid) AS nbratings, r.descritorGS,
r.nomePrograma FROM ratings r GROUP BY r.nomePrograma ORDER BY avgrating
DESC LIMIT 10;
SELECT round(avg(duracao),1) AS avgrating, count(userid) AS nbratings, r.descritorGS,
r.nomePrograma FROM ratings r GROUP BY r.descritorGS ORDER BY avgrating
DESC LIMIT 10;
Listagem 10 – Melhores programas e gêneros
No terceiro passo, os programas e gêneros mais visualizados são encontrados,
conforme demonstra a Listagem 11. A consulta SQL é a mesma utilizada na Listagem 10,
entretanto, a ordem dos dados na Listagem 11 é dada pelo número de visualizações.
SELECT round(avg(duracao),1) AS avgrating, count(userid) AS nbratings, nomePrograma,
descritorGS FROM ratings GROUP BY nomePrograma ORDER BY nbratings DESC;
SELECT round(avg(duracao),1) AS avgrating, count(userid) AS nbratings, descritorGS,
nomePrograma FROM ratings GROUP BY descritorGS ORDER BY nbratings DESC;
Listagem 11 – Programas e gêneros mais visualizados
No passo 4, calcula-se a distância dos programas e dos gêneros. Soma-se a duração da
tabela myprofile com a duração da tabela ratings, quando os nomes de programas/gêneros
em ambas são iguais (Listagem 12).
SELECT r.userid, sum((m.duracao)*(r.duracao)) AS dist FROM ratings r, myprofile m WHERE
m.nomePrograma = r.nomePrograma GROUP BY r.userid;
26
SELECT r.userid, sum((m.duracao)*(r.duracao)) AS dist FROM ratings r, myprofile m WHERE
m.descritorGS = r.descritorGS GROUP BY r.userid;
Listagem 12 – Cálculo da distância
No passo 5, calcula-se a norma da tabela ratings e da tabela myprofile. Multiplica-se a
duração e, em seguida, faz-se a soma (Listagem 13).
SELECT userid, sum((duracao)*(duracao)) AS norm FROM ratings r GROUP BY userid;
SELECT sum((duracao)*(duracao)) AS norm FROM myprofile;
Listagem 13 – Cálculo da norma
Assim, os knn usuários para os programas e para os gêneros são calculados. A
Listagem 14 apresenta a consulta SQL utilizada. São necessárias três subconsultas para
calcular os knn usuários.
SELECT distances.userid AS userid, dist/(sqrt(my.norm)*sqrt(users.norm)) AS score FROM
(SELECT r.userid, sum((m.duracao)*(r.duracao)) AS dist FROM ratings r, myprofile m
WHERE m.nomePrograma = r.nomePrograma GROUP BY r.userid) AS distances,
(SELECT userid, sum((duracao)*(duracao)) AS norm
FROM ratings r GROUP BY userid) AS users,
(SELECT sum((duracao)*(duracao)) AS norm FROM myprofile) AS my
WHERE users.userid = distances.userid ORDER BY score DESC;
Listagem 14 – Knn usuários
Para o melhor entendimento, as consultas são explicadas mais detalhadamente a
seguir:
1. Primeiro subselect:
a) sum((m.duracao)*(r.duracao)) AS dist FROM ratings r, myprofile m: Cálculo da norma das
tabelas myprofile e ratings. A consulta recebe o nome dist, para que o seu
resultado possa ser manipulado.
b) (SELECT r.userid, sum((m.duracao)*(r.duracao)) AS dist FROM ratings r, myprofile m WHERE
m.nomePrograma = r.nomePrograma GROUP BY r.userid) AS distances: Cálculo da norma das
tabelas myprofile e ratings quando os nomes dos programas em ambas as
tabelas são iguais. Agrupa-se pelo número de usuários da tabela ratings. A
consulta recebe o nome distances, para que o seu resultado possa ser
manipulado.
27
2. Segundo subselect:
a) sum((duracao)*(duracao)) AS norm FROM ratings r: Cálculo da norma da tabela ratings.
b) (SELECT userid, sum((duracao)*(duracao)) AS norm FROM ratings r GROUP BY userid) AS users:
Cálculo da norma da tabela ratings agrupada pelo número de usuário. A
consulta recebe o nome users, para que o seu resultado possa ser manipulado.
3. Terceiro subselect:
a. (SELECT sum((duracao)*(duracao)) AS norm FROM myprofile) AS my: O Cálculo da norma
da tabela myprofile recebe o nome my, para ser manipulada.
b. (SELECT sum((duracao)*(duracao)) AS norm FROM myprofile) AS my WHERE users.userid =
distances.userid ORDER BY score DESC: Cálculo da norma da tabela myprofile
quando o campo userid do alias users for igual ao campo userid do alias
distances colocando a pontuação em ordem decrescente.
4. Select principal: SELECT distances.userid AS userid, dist/(sqrt(my.norm) * sqrt(users.norm)) AS
score FROM: Selecionar os usuários da consulta distances. Cálculo da pontuação a partir das
consultas em seguida.
Resumindo, essa consulta faz o cálculo das normas, usando o campo duração como
parâmetro, conforme ilustra a Equação 1:
∑( )
(√(∑ ) √(∑ ))
Equação 1 – Cálculo dos Knn usuários
O passo 7 consiste em calcular o quanto cada usuário é parecido com outro, tanto em
gênero, quanto em programa. A consulta SQL determina myrating para o campo duração da
tabela myprofile (visualização do usuário em análise) e herrating (visualização do outro
usuário) para o campo duração da tabela ratings. A seleção é feita quando o usuário em
análise e os nomes dos programas/gêneros nas tabelas ratings, myprofile e EPG são iguais e
esses são agrupados e ordenados pelo nome do programa/gênero da tabela myprofile. Isso é
feito para todos os usuários, sendo que é apenas necessário trocar o userid.
28
SELECT m.nomePrograma, r.descritorGS, m.duracao AS myrating, r.duracao AS herrating
FROM ratings r, myprofile m, matrixepg e WHERE r.userid=11 AND
r.nomePrograma=m.nomePrograma AND r.nomePrograma=e.nomePrograma GROUP BY
m.nomePrograma ORDER BY m.nomePrograma;
SELECT m.descritorGS, m.nomePrograma, m.duracao AS myrating, r.duracao AS herrating
FROM ratings r, myprofile m, matrixepg e WHERE r.userid=11 AND
r.descritorGS=m.descritorGS AND r.descritorGS=e.descritorGeneroSubgenero GROUP BY
m.descritorGS ORDER BY m.descritorGS;
Listagem 15 – Cálculo da similaridade entre usuários
Os Knn usuários são salvos nas tabelas similaruser e similaruser2.
insert into similaruser
SELECT distances.userid AS userid, dist/(sqrt(my.norm)*sqrt(users.norm)) AS score FROM
(SELECT r.userid, sum((m.duracao)*(r.duracao)) AS dist FROM ratings r, myprofile m
WHERE m.nomePrograma = r.nomePrograma GROUP BY r.userid) AS distances,
(SELECT r.userid, sum((duracao)*(duracao)) AS norm FROM ratings r
GROUP BY userid) AS users,
(SELECT sum((duracao)*(duracao)) AS norm FROM myprofile) AS my
WHERE users.userid = distances.userid ORDER BY score DESC LIMIT 30;
insert into similaruser2
SELECT distances.userid AS userid, dist/(sqrt(my.norm)*sqrt(users.norm)) AS score FROM
(SELECT r.userid, sum((m.duracao)*(r.duracao)) AS dist FROM ratings r, myprofile m
WHERE m.descritorGS = r.descritorGS GROUP BY r.userid) AS distances,
(SELECT r.userid, sum((duracao)*(duracao)) AS norm FROM ratings r
GROUP BY userid) AS users,
(SELECT sum((duracao)*(duracao)) AS norm FROM myprofile) AS my
WHERE users.userid = distances.userid ORDER BY score DESC LIMIT 30;
Listagem 16 – Inserção dos usuários parecidos nas tabelas correspondentes
No penúltimo passo, encontram-se as sugestões para programas e gêneros, as quais são
inseridas na tabela resultProgramas.
insert into resultProgramas
SELECT m.nomePrograma, m.descritorGeneroSubgenero, score, nbratings FROM epg m,
(SELECT nomePrograma, sum(r.duracao*similaruser.score) AS score,
29
count(similaruser.userid) AS nbratings FROM similaruser, ratings r
WHERE similaruser.userid = r.userid GROUP BY nomePrograma ORDER BY score
DESC LIMIT 10) AS scores WHERE m.nomePrograma = scores.nomePrograma
GROUP BY nomePrograma ORDER BY score DESC;
insert into resultProgramas
SELECT r.nomePrograma, r.descritorGS, sum(r.duracao*s.score) AS score, count(s.userid) AS
nbratings FROM similaruser2 s, ratings r WHERE s.userid = r.userid GROUP BY r.descritorGS
ORDER BY score DESC LIMIT 10;
Listagem 17 – Inserção das recomendações geradas na tabela resultProgramas
Quebrando a primeira consulta SQL:
1. Subselect
a) sum(r.duracao*similaruser.score) AS score: Cálculo da pontuação. Somatório da
multiplicação do campo duração da tabela ratings pelo campo score da tabela
similaruser. Recebe o nome score, pontuação.
b) count(similaruser.userid) AS nbratings: O contador dos usuários da tabela similaruser
recebe o nome nbratings, número de visualizações.
c) (SELECT nomePrograma, sum(r.duracao*similaruser.score) AS score, count(similaruser.userid) AS
nbratings FROM similaruser, ratings r WHERE similaruser.userid = r.userid GROUP BY nomePrograma
ORDER BY score DESC LIMIT 10) AS scores: Selecionar os nomes dos programas, a
pontuação e o número de visualizações quando os usuários (userid) são iguais,
agrupar pelo nome do programa, classificar a pontuação em ordem crescente,
limitar o retorno a 10 registros. Recebe o nome de scores.
2. Select principal: Selecionar o nome dos programas, os descritores de gêneros, a
pontuação, o número de avaliações quando os nomes dos programas são iguais nas tabelas
EPG e scores, agrupar pelo nome do programa e classificar a pontuação em ordem
decrescente.
Segunda consulta SQL: Selecionar os nomes dos programas, os descritores de gêneros, a
pontuação, o número de visualizações quando os usuários são iguais em ambas as tabelas.
Agrupar pelo descritor de gênero e classificar a pontuação em ordem decrescente, limitado a
10 registros.
30
As recomendações geradas são comparadas com o que o usuário assistiu no dia seguinte e
então é calculada a porcentagem de acerto das recomendações, tanto para os programas,
quanto para os gêneros. As consultas SQLs, ilustradas na Listagem 18, verificam se no dia
posterior, o nome do programa da tabela resultPrograms consta na tabela do usuário.
SELECT r.*, u.* FROM resultProgramas r, user_11 u
WHERE u.dia='2008-03-06' AND r.nomePrograma = u.nomePrograma
GROUP BY r.nomePrograma ORDER BY score DESC;
SELECT r.*, u.* FROM resultProgramas r, user_11 u
WHERE u.dia='2008-03-06‘ AND u.descritorGS = r.descritorGeneroSubgenero
GROUP BY r.descritorGeneroSubgenero ORDER BY score DESC;
Listagem 18 – Comparação entre o que foi assistido e recomendado
Ao fim desse ciclo, inicia-se o próximo dia de avaliação. Por exemplo, avaliando o
usuário 11 no dia 06: a tabela myprofile contém os dados do usuário 11 correspondentes ao
dia 05 e a tabela ratings os dados de todos os usuários correspondentes ao dia 05. No dia -6,
os dados correspondentes ao dia 06 são inseridos nas tabelas, juntando-se aos dados do dia 05,
na tabela myprofile os dados do usuário 11 e na tabela ratings os dados de todos os usuários,
ambos correspondentes ao dia 06. Assim, simulam-se recomendações diárias e para cada
usuário.
31
RESULTADOS
Neste capítulo, os resultados obtidos com a aplicação da técnica de Filtragem
Colaborativa nos dados de visualização de TV fornecidos pelo IBOPE são apresentados em
detalhes. A porcentagem de acerto de cada usuário é apresentada em forma de gráficos e o
modo como esses foram gerados também é explicitado.
Dois atributos alvos foram utilizados: os nomes dos programas e os descritores de
gêneros. Para todos os gráficos, foram feitas planilhas no Excel que contalibizaram quantos
programas/gêneros a consulta SQL de comparação acertou. Como o número de
recomendações geradas foi 10, então, a fórmula base para o cálculo da porcentagem de acerto
utilizada foi:
Equação 2 – Cálculo da porcentagem de acerto de acordo com o número de recomendações
geradas
Além disso, também se calculou a média da porcentagem de acerto, tanto para o número
de recomendações geradas, quanto para a quantidade de dias. Nesse caso, foram utilizadas as
seguintes equações indicadas abaixo:
∑( )
Equação 3 – Cálculo da média da porcentagem de acerto de acordo com o número de
recomendações
∑( )
Equação 4 – Cálculo da média da porcentagem de acerto de acordo com o número de dias
monitorados
4
32
4.1 Porcentagem de Acerto: programas por usuários
Nesta subseção, os gráficos para a porcentagem de acerto de programas para cada
usuário são apresentados, assim como as planilhas que computam essa porcentagem de acerto.
Tabela 6 – % de Acerto de programas dos usuários 11, 12, 21, 22 e 23
Usuário 11 Usuário 12 Usuário 21 Usuário 22 Usuário 23
Dia Recom. Acerto % Acerto % Acerto % Acerto % Acerto %
1 10 2 20% 2 20% 4 40% 0 0% 5 50%
2 10 2 20% 2 20% 2 20% 1 10% 0 0%
3 10 2 20% 2 20% 7 70% 6 60% 5 50%
4 10 4 40% 4 40% 4 40% 4 40% 6 60%
5 10 0 0% 0 0% 0 0% 3 30% 5 50%
6 10 0 0% 0 0% 0 0% 0 0% 0 0%
7 10 2 20% 1 10% 4 40% 3 30% 6 60%
8 10 0 0% 0 0% 6 60% 0 0% 3 30%
9 10 2 20% 2 20% 4 40% 0 0% 2 20%
10 10 4 40% 3 30% 7 70% 0 0% 6 60%
11 10 3 30% 3 30% 4 40% 6 60% 4 40%
12 10 0 0% 0 0% 0 0% 3 30% 1 10%
13 10 0 0% 0 0% 0 0% 0 0% 0 0%
14 10 0 0% 0 0% 4 40% 4 40% 7 70%
Soma 21 2,1 19 1,9 46 4,6 30 3 50 5
Média 1
21%
19%
46%
30%
50%
Média 2 15% 14% 33% 21% 36%
Tabela 7 – % de Acerto de programas dos usuários 31, 32, 33, 41 e 42
Usuário 31 Usuário 32 Usuário 33 Usuário 41 Usuário 42
Dia Recom. Acerto % Acerto % Acerto % Acerto % Acerto %
1 10 5 50% 0 0% 1 10% 0 0% 3 30%
2 10 0 0% 0 0% 1 10% 1 10% 3 30%
3 10 0 0% 0 0% 0 0% 0 0% 4 40%
4 10 2 20% 0 0% 0 0% 2 20% 0 0%
5 10 0 0% 0 0% 0 0% 0 0% 0 0%
6 10 0 0% 0 0% 0 0% 0 0% 0 0%
7 10 5 50% 1 10% 0 0% 0 0% 6 60%
8 10 4 40% 3 30% 0 0% 0 0% 3 30%
9 10 0 0% 3 30% 1 10% 0 0% 5 50%
10 10 1 10% 0 0% 1 10% 1 10% 0 0%
11 10 1 10% 1 10% 0 0% 0 0% 3 30%
12 10 0 0% 0 0% 0 0% 0 0% 4 40%
13 10 0 0% 0 0% 0 0% 0 0% 0 0%
14 10 1 10% 2 20% 0 0% 3 30% 5 50%
Soma 19 1,9 10 1 4 0,4 7 0,7 36 3,6
Média 1
19%
10%
4%
7%
36%
Média 2 14% 7% 3% 5% 26%
33
Tabela 8 – % de Acerto de de programas dos usuários 51, 52, 61, 62 e 63
Usuário 51 Usuário 52 Usuário 61 Usuário 62 Usuário 63
Dia Recom. Acerto % Acerto % Acerto % Acerto % Acerto %
1 10 2 20% 4 40% 5 50% 0 0% 5 50%
2 10 3 30% 5 50% 2 20% 4 40% 6 60%
3 10 0 0% 2 20% 5 50% 3 30% 6 60%
4 10 4 40% 5 50% 4 40% 0 0% 2 20%
5 10 2 20% 3 30% 0 0% 2 20% 0 0%
6 10 0 0% 0 0% 0 0% 0 0% 0 0%
7 10 3 30% 3 30% 6 60% 2 20% 4 40%
8 10 3 30% 3 30% 7 70% 0 0% 4 40%
9 10 1 10% 1 10% 4 40% 2 20% 6 60%
10 10 3 30% 4 40% 0 0% 0 0% 7 70%
11 10 3 30% 4 40% 5 50% 0 0% 8 80%
12 10 4 40% 4 40% 2 20% 3 30% 5 50%
13 10 0 0% 0 0% 0 0% 1 10% 0 0%
14 10 3 30% 3 30% 4 40% 1 10% 5 50%
Soma 31 3,1 41 4,1 44 4,4 18 1,8 58 5,8
Média 1
31%
41%
44%
18%
58%
Média 2 22% 29% 31% 13% 41%
Figura 31 - % de acerto programa usuário 11
Observa-se que os usuários 11 e 12 tiveram uma baixa porcentagem de acerto, atingindo
40% no máximo. Isso indica que as recomendações de programas sugeridas ao usuário não
foram satisfatórias. Nesse caso, pode-se utilizar as recomendações de gêneros para tentar
encontrar mais programas que estejam de acordo com as preferências do usuário. Os usuários
21 e 22 têm uma porcentagem de acerto maior, que atinge aproximadamente 70%. Esse valor
indica que as recomendações de programas encontradas são adequadas. Entretanto, vale
34
observar que em alguns dias a porcentagem de acerto foi zero. O usuário 23 também obteve
boas recomendações, atingindo aproximadamente 75% de acerto.
Figura 32 - % de acerto programa usuário 12
Figura 33 - % de acerto programa usuário 21
35
Figura 34 - % de acerto programa usuário 22
Figura 35 - % de acerto programa usuário 23
Já o usuário 31, durante vários dias, teve uma baixa porcentagem de acerto, atingindo
aproximadamente 50%. Os usuários 32 e 33 obtiveram porcentagem de acerto baixa, o que
36
não é adequado. Isso indica que a Filtragem Colaborativa não acertou os programas
recomendados para esses usuários. O usuário 41 também obteve uma baixa porcentagem de
acerto, enquanto que, para o usuário 42, a Filtragem Colaborativa conseguiu sugerir os
programas, atingindo aproximadamente 60% de acerto.
Figura 36 - % de acerto programa usuário 31
Figura 37 - % de acerto programa usuário 32
37
Figura 38 - % de acerto programa usuário 33
Figura 39 - % de acerto programa usuário 41
38
Figura 40 - % de acerto programa usuário 42
O usuário 51 atingiu aproximadamente 40% de acerto e o usuário 52, 50%. O usuário
61 obteve uma boa porcentagem de acerto, aproximadamente 70%, enquanto o usuário 62
atingiu aproximadamente 40%. O usuário 63 obteve a melhor porcentagem de acerto,
aproximando-se de 80%. Os resultados acima podem ser visualizados nas figuras de X a Y.
Figura 41 - % de acerto programa usuário 51
39
Figura 42 - % de acerto programa usuário 52
Figura 43 - % de acerto programa usuário 61
40
Figura 44 - % de acerto programa usuário 62
Figura 45 - % de acerto programa usuário 63
41
4.2 Porcentagem de Acerto: gêneros por usuário
Nesta subseção são apresentados as planilhas e os gráficos que ilustram a porcentagem
de acerto de gêneros para cada usuário.
Tabela 9 – % de Acerto dos gêneros dos usuários 11, 12, 21, 22, 23
Usuário 11 Usuário 12 Usuário 21 Usuário 22 Usuário 23
Dia Recom. Acerto % Acerto % Acerto % Acerto % Acerto %
1 10 4 40% 4 40% 6 60% 0 0% 7 70%
2 10 2 20% 2 20% 9 90% 4 40% 6 60%
3 10 2 20% 2 20% 6 60% 8 80% 5 50%
4 10 5 50% 5 50% 7 70% 5 50% 8 80%
5 10 0 0% 2 20% 0 0% 4 40% 6 60%
6 10 2 20% 2 20% 3 30% 4 40% 5 50%
7 10 2 20% 2 20% 7 70% 3 30% 8 80%
8 10 1 10% 1 10% 6 60% 0 0% 5 50%
9 10 3 30% 3 30% 6 60% 0 0% 6 60%
10 10 7 70% 7 70% 8 80% 0 0% 8 80%
11 10 4 40% 4 40% 6 60% 7 70% 6 60%
12 10 3 30% 3 30% 1 10% 7 70% 2 20%
13 10 2 20% 2 20% 0 0% 4 40% 8 80%
14 10 4 40% 5 50% 5 50% 7 70% 7 70%
Soma 41 4,1 44 4,4 70 7 53 5,3 87 8,7
Média 1
41%
44%
70%
53%
87%
Média 2 29% 31% 50% 38% 62%
Tabela 10 – % de Acerto dos gêneros dos usuários 31, 32, 33, 41 e 42
Usuário 31 Usuário 32 Usuário 33 Usuário 41 Usuário 42
Dia Recom. Acerto % Acerto % Acerto % Acerto % Acerto %
1 10 5 50% 0 0% 1 10% 0 0% 4 40%
2 10 2 20% 0 0% 2 20% 1 10% 5 50%
3 10 6 60% 2 20% 0 0% 1 10% 4 40%
4 10 2 20% 3 30% 0 0% 3 30% 3 30%
5 10 6 60% 0 0% 0 0% 3 30% 2 20%
6 10 1 10% 2 20% 0 0% 0 0% 6 60%
7 10 5 50% 2 20% 0 0% 0 0% 8 80%
8 10 2 20% 2 20% 0 0% 0 0% 6 60%
9 10 0 0% 3 30% 2 20% 1 10% 6 60%
10 10 3 30% 2 20% 0 0% 2 20% 3 30%
11 10 2 20% 4 40% 0 0% 0 0% 7 70%
12 10 3 30% 3 30% 1 10% 1 10% 5 50%
13 10 0 0% 4 40% 0 0% 0 0% 5 50%
14 10 1 10% 4 40% 2 20% 3 30% 5 50%
Soma 38 3,8 31 3,1 8 0,8 15 1,5 69 6,9
Média 1
38%
31%
8%
15%
69%
Média 2 27% 22% 6% 11% 49%
42
Tabela 11 – % de Acerto dos gêneros dos usuários 51, 52, 61, 62 e 63
Usuário 51 Usuário 52 Usuário 61 Usuário 62 Usuário 63
Dia Recom. Acerto % Acerto % Acerto % Acerto % Acerto %
1 10 2 20% 2 20% 3 30% 0 0% 7 70%
2 10 5 50% 3 30% 1 10% 3 30% 7 70%
3 10 1 10% 2 20% 5 50% 2 20% 5 50%
4 10 3 30% 5 50% 6 60% 0 0% 2 20%
5 10 4 40% 2 20% 4 40% 3 30% 0 0%
6 10 3 30% 4 40% 3 30% 4 40% 0 0%
7 10 5 50% 3 30% 7 70% 2 20% 5 50%
8 10 3 30% 4 40% 8 80% 0 0% 7 70%
9 10 4 40% 7 70% 3 30% 3 30% 7 70%
10 10 2 20% 3 30% 0 0% 0 0% 6 60%
11 10 4 40% 4 40% 7 70% 2 20% 6 60%
12 10 1 10% 2 20% 5 50% 2 20% 5 50%
13 10 2 20% 2 20% 3 30% 2 20% 1 10%
14 10 2 20% 2 20% 4 40% 1 10% 5 50%
Soma 41 4,1 45 4,5 59 5,9 24 2,4 63 6,3
Média 1
41%
45%
59%
24%
63%
Média 2 29% 32% 42% 17% 45%
Figura 46 - % de acerto gênero usuário 11
O usuário 11 e 12 atingiram uma boa porcentagem de acerto, aproximadamente 75%.
Conforme mostram os gráficos 46 e 47, os dias de 6 à 14 apresentam uma variação bem
parecida. Isso ocorre porque esses usuários pertencem ao mesmo domicílio. O usuário 21 e o
22 atingiram uma ótima porcentagem de acerto, aproximadamente 90% e 80%
respectivamente. Em alguns dias, como é possível observar, a porcentagem de acerto foi zero.
43
O usuário 23 manteve uma boa porcentagem durante os dias monitorados, entre 40% e 80%.
Para o usuário 31, o acerto é melhores nos primeiros dias.
Figura 47 - % de acerto gênero usuário 12
Figura 48 - % de acerto gênero usuário 21
44
Figura 49 - % de acerto gênero usuário 22
Figura 50 - % de acerto gênero usuário 23
45
Como mostram os gráficos, os usuários 32 e 33 tiveram valores baixos, atingindo no
máximo 40% e 20% de acerto, respectivamente. O usuário 41 também obteve uma baixa
porcentagem. Já para o usuário 42, a Filtragem Colaborativa obteve uma boa porcentagem de
acerto, atingindo no máximo 80%.
Figura 51 - % de acerto gênero usuário 31
Figura 52 - % de acerto gênero usuário 32
46
Figura 53 - % de acerto gênero usuário 33
Figura 54 - % de acerto gênero usuário 41
47
Figura 55 - % de acerto gênero usuário 42
Os usuários 51 e 52 também apresentaram bons resultados. Ainda assim, o usuário 51
teve um desempenho um pouco abaixo comparado ao do apresentado pelo usuário 52. Os
usuários 61 e 63 obtiveram uma boa porcentagem, enquanto o usuário 62 apresentou valores
baixos.
Figura 56 - % de acerto gênero usuário 51
48
Figura 57 - de acerto gênero usuário 52
Figura 58 - % de acerto gênero usuário 61
49
Figura 59 - % de acerto gênero usuário 62
Figura 60 - % de acerto gênero usuário 63
50
4.3 Porcentagem de Acerto: comparação de gêneros e programas entre
usuários do mesmo domicílio
Nesta subseção são apresentados os gráficos que comparam a porcentagem de acerto
entre os usuários do mesmo domicílio. Para esses usuários, a Filtragem Colaborativa
apresentou porcentagens parecidas, conforme se pode verificar pelos gráficos apresentados a
seguir, tanto em relação aos programas, quanto em relação aos gêneros.
Para os três usuários, a Filtragem Colaborativa atingiu uma boa porcentagem de acerto
tanto para os gêneros, quanto para os programas. O usuário 23 foi o que obteve melhor
porcentagem de acerto nos gêneros, ao passo que o usuário 21 obteve o melhor resultado nos
programas. Os gráficos demonstram que os usuários desse domicílio têm preferências
diferenciadas.
Como pode ser observado nos gráficos, o usuário 33 obteve uma baixíssima
porcentagem de acerto, tanto para os programas, quanto para os gêneros, se comparado aos
usuários 31 e 32. A Filtragem Colaborativa acertou mais para o usuário 31.
Nitidamente, a Filtragem Colaborativa acertou mais para o usuário 42 e o usuário 41
teve melhores porcentagens de acerto para os gêneros. Em relação aos programas, os usuários
51 e 52 obtiveram porcentages parecidas e, para os gêneros, as porcentagens se mantêm na
faixa de 20% à 40%. A Filtragem Colaborativa conseguiu bons acerto para esses usuários
tanto para os programas, quanto para os gêneros e vale ressaltar que o nível de acerto para
ambos se mantém semelhante.
51
Figura 61 – Comparação de gêneros entre os usuários 11 e 12
Figura 62 – Comparação de gêneros entre os usuários 21, 22 e 23
52
Figura 63 – Comparação de gêneros entre os usuários 31, 32 e 33
Figura 64 – Comparação de gêneros entre os usuários 41 e 42
53
Figura 65 – Comparação de gêneros entre os usuários 51 e 52
Figura 66 – Comparação de gêneros entre os usuários 61, 62 e 63
54
Figura 67 – Comparação de programas entre os usuários 11 e 12
Figura 68 – Comparação de programas entre os usuários 21, 22 e 23
55
Figura 69 – Comparação de programas entre os usuários 31, 32 e 33
Figura 70 – Comparação de programas entre os usuários 41 e 42
56
Figura 71 – Comparação de programas entre os usuários 51 e 52
Figura 72 – Comparação de programas entre os usuários 61, 62 e 63
57
4.4 Porcentagem de Acerto: comparação entre programas e gêneros por
usuário
Nesta subseção são apresentados as planilhas e os gráficos que comparam a
porcentagem de acerto entre gêneros e programas para cada usuário.
Tabela 12 – Comparação entre gêneros e programas dos usuários 11, 12 e 21.
D
Dia
Usuário 11 Usuário 12 Usuário 21
Recom. Programas Gêneros Programas Gêneros Programas Gêneros
1 10 2 20% 4 40% 2 20% 4 40% 4 40% 6 60%
2 10 2 20% 2 20% 2 20% 2 20% 2 20% 9 90%
3 10 2 20% 2 20% 2 20% 2 20% 7 70% 6 60%
4 10 4 40% 5 50% 4 40% 5 50% 4 40% 7 70%
5 10 0 0% 0 0% 0 0% 2 20% 0 0% 0 0%
6 10 0 0% 2 20% 0 0% 2 20% 0 0% 3 30%
7 10 2 20% 2 20% 1 10% 2 20% 4 40% 7 70%
8 10 0 0% 1 10% 0 0% 1 10% 6 60% 6 60%
9 10 2 20% 3 30% 2 20% 3 30% 4 40% 6 60%
10 10 4 40% 7 70% 3 30% 7 70% 7 70% 8 80%
11 10 3 30% 4 40% 3 30% 4 40% 4 40% 6 60%
12 10 0 0% 3 30% 0 0% 3 30% 0 0% 1 10%
13 10 0 0% 2 20% 0 0% 2 20% 0 0% 0 0%
14 10 0 0% 4 40% 0 0% 5 50% 4 40% 5 50%
Soma 21 2,1 41 4,1 19 1,9 44 4,4 46 4,6 70 7
Média 1
21%
41%
19%
44%
46%
70%
Média 2 15% 29% 14% 31% 33% 50%
Tabela 13 – Comparação entre gêneros e programas dos usuários 22, 23 e 31.
Dia Recom. Usuário 22 Usuário 23 Usuário 31
Programas Gêneros Programas Gêneros Programas Gêneros
1 10 0 0% 0 0% 5 50% 7 70% 5 50% 5 50%
2 10 1 10% 4 40% 0 0% 6 60% 0 0% 2 20%
3 10 6 60% 8 80% 5 50% 5 50% 0 0% 6 60%
4 10 4 40% 5 50% 6 60% 8 80% 2 20% 2 20%
5 10 3 30% 4 40% 5 50% 6 60% 0 0% 6 60%
6 10 0 0% 4 40% 0 0% 5 50% 0 0% 1 10%
7 10 3 30% 3 30% 6 60% 8 80% 5 50% 5 50%
8 10 0 0% 0 0% 3 30% 5 50% 4 40% 2 20%
9 10 0 0% 0 0% 2 20% 6 60% 0 0% 0 0%
10 10 0 0% 0 0% 6 60% 8 80% 1 10% 3 30%
11 10 6 60% 7 70% 4 40% 6 60% 1 10% 2 20%
12 10 3 30% 7 70% 1 10% 2 20% 0 0% 3 30%
13 10 0 0% 4 40% 0 0% 8 80% 0 0% 0 0%
14 10 4 40% 7 70% 7 70% 7 70% 1 10% 1 10%
Soma 30 3 53 5,3 50 5 87 8,7 19 1,9 38 3,8
Média 1
30%
53%
50%
87%
19%
38%
Média 2 21% 38% 36% 62% 14% 27%
58
Tabela 14 – Comparação entre gêneros e programas dos usuários 32, 33 e 41.
Usuário 32 Usuário 33 Usuário 41
Programas Gêneros Programas Gêneros Programas Gêneros
1 10 0 0% 0 0% 1 10% 1 10% 0 0% 0 0%
2 10 0 0% 0 0% 1 10% 2 20% 1 10% 1 10%
3 10 0 0% 2 20% 0 0% 0 0% 0 0% 1 10%
4 10 0 0% 3 30% 0 0% 0 0% 2 20% 3 30%
5 10 0 0% 0 0% 0 0% 0 0% 0 0% 3 30%
6 10 0 0% 2 20% 0 0% 0 0% 0 0% 0 0%
7 10 1 10% 2 20% 0 0% 0 0% 0 0% 0 0%
8 10 3 30% 2 20% 0 0% 0 0% 0 0% 0 0%
9 10 3 30% 3 30% 1 10% 2 20% 0 0% 1 10%
10 10 0 0% 2 20% 1 10% 0 0% 1 10% 2 20%
11 10 1 10% 4 40% 0 0% 0 0% 0 0% 0 0%
12 10 0 0% 3 30% 0 0% 1 10% 0 0% 1 10%
13 10 0 0% 4 40% 0 0% 0 0% 0 0% 0 0%
14 10 2 20% 4 40% 0 0% 2 20% 3 30% 3 30%
Soma 10 1 31 3,1 4 0,4 8 0,8 7 0,7 15 1,5
Média 1
10%
31%
4%
8%
7%
15%
Média 2 7% 22% 3% 6% 5% 11%
Tabela 15 – Comparação entre gêneros e programas dos usuários 41, 42 e 51.
Dia Recom. Usuário 41 Usuário 42 Usuário 51
Programas Gêneros Programas Gêneros Programas Gêneros
1 10 0 0% 0 0% 3 30% 4 40% 2 20% 2 20%
2 10 1 10% 1 10% 3 30% 5 50% 3 30% 5 50%
3 10 0 0% 1 10% 4 40% 4 40% 0 0% 1 10%
4 10 2 20% 3 30% 0 0% 3 30% 4 40% 3 30%
5 10 0 0% 3 30% 0 0% 2 20% 2 20% 4 40%
6 10 0 0% 0 0% 0 0% 6 60% 0 0% 3 30%
7 10 0 0% 0 0% 6 60% 8 80% 3 30% 5 50%
8 10 0 0% 0 0% 3 30% 6 60% 3 30% 3 30%
9 10 0 0% 1 10% 5 50% 6 60% 1 10% 4 40%
10 10 1 10% 2 20% 0 0% 3 30% 3 30% 2 20%
11 10 0 0% 0 0% 3 30% 7 70% 3 30% 4 40%
12 10 0 0% 1 10% 4 40% 5 50% 4 40% 1 10%
13 10 0 0% 0 0% 0 0% 5 50% 0 0% 2 20%
14 10 3 30% 3 30% 5 50% 5 50% 3 30% 2 20%
Soma 7 0,7 15 1,5 36 3,6 69 6,9 31 310% 41 4,1
Média 1
7%
15%
36%
69%
31%
41%
Média 2 5% 11% 26% 49% 22% 29%
59
Tabela 16 – Comparação entre gêneros e programas dos usuários 52 e 61.
Dia Recom. Usuário 52 Usuário 61
Programas Gêneros Programas Gêneros
1 10 4 40% 2 20% 5 50% 3 30%
2 10 5 50% 3 30% 2 20% 1 10%
3 10 2 20% 2 20% 5 50% 5 50%
4 10 5 50% 5 50% 4 40% 6 60%
5 10 3 30% 2 20% 0 0% 4 40%
6 10 0 0% 4 40% 0 0% 3 30%
7 10 3 30% 3 30% 6 60% 7 70%
8 10 3 30% 4 40% 7 70% 8 80%
9 10 1 10% 7 70% 4 40% 3 30%
10 10 4 40% 3 30% 0 0% 0 0%
11 10 4 40% 4 40% 5 50% 7 70%
12 10 4 40% 2 20% 2 20% 5 50%
13 10 0 0% 2 20% 0 0% 3 30%
14 10 3 30% 2 20% 4 40% 4 40%
Soma 41 410% 45 4,5 44 4,4 59 5,9
Média 1
41%
45%
44%
59%
Média 2 29% 32% 31% 42%
Tabela 17 – Comparação entre gêneros e programas dos usuários 62 e 63.
Dia Recom. Usuário 62 Usuário 63
Programas
Gêneros
Programas
Gêneros
1 10 0 0% 0 0% 5 50% 7 70%
2 10 4 40% 3 30% 6 60% 7 70%
3 10 3 30% 2 20% 6 60% 5 50%
4 10 0 0% 0 0% 2 20% 2 20%
5 10 2 20% 3 30% 0 0% 0 0%
6 10 0 0% 4 40% 0 0% 0 0%
7 10 2 20% 2 20% 4 40% 5 50%
8 10 0 0% 0 0% 4 40% 7 70%
9 10 2 20% 3 30% 6 60% 7 70%
10 10 0 0% 0 0% 7 70% 6 60%
11 10 0 0% 2 20% 8 80% 6 60%
12 10 3 30% 2 20% 5 50% 5 50%
13 10 1 10% 2 20% 0 0% 1 10%
14 10 1 10% 1 10% 5 50% 5 50%
Soma 18 1,8 24 2,4 58 5,8 63 6,3
Média 1
18%
24%
58%
63%
Média 2 13% 17% 41% 45%
60
Figura 73 – Comparação entre programas e gêneros usuário 11
Figura 74 – Comparação entre programas e gêneros usuário 12
61
Figura 75 – Comparação entre programas e gêneros usuário 21
Figura 76 – Comparação entre programas e gêneros usuário 22
62
Figura 77 – Comparação entre programas e gêneros usuário 23
Figura 78 – Comparação entre programas e gêneros usuário 31
63
Figura 79 – Comparação entre programas e gêneros usuário 32
Figura 80 – Comparação entre programas e gêneros usuário 33
64
Figura 81 – Comparação entre programas e gêneros usuário 41
Figura 82 – Comparação entre programas e gêneros usuário 42
65
Figura 83 – Comparação entre programas e gêneros usuário 51
Figura 84 – Comparação entre programas e gêneros usuário 52
66
Figura 85 – Comparação entre programas e gêneros usuário 61
Figura 86 – Comparação entre programas e gêneros usuário 62
67
Figura 87 – Comparação entre programas e gêneros usuário 63
Nota-se pelos gráficos, que a porcentagem de acerto dos gêneros foi maior que a dos
programas para praticamente todos os usuários e também apresentam resultados parecidos,
porém em níveis diferentes. Os usuários 11 e 12 têm comportamentos parecidos e isso se deve
ao fato de eles pertencerem ao mesmo domicílio. Os usuários 21 e 22 obtiveram uma alta
porcentagem de acerto, tanto para os gêneros, quanto para os programas. O usuário 23
também atingiu uma porcentagem de acerto adequada, tanto para programas, quanto para
gêneros. Já o usuário 31 obteve melhor resultado com os gêneros.
O usuário 33 teve uma porcentagem baixíssima de acerto, o que indica que a Filtragem
Colaborativa sozinha não atenderá corretamente a esse usuário e o usuário 32 teve melhoras
na porcentagem de acerto dos gêneros nos últimos dias da simulação. O usuário 41, em
relação ao usuário 42, teve sua porcentagem de acerto baixa, tanto para programas, quanto
para gêneros.
68
4.5 Porcentagem de Acerto: médias dos programas e gêneros
Nesta subseção, a planilha e os gráficos que comparam a média diária (média 1 e média
2) da porcentagem de acerto dos gêneros e dos programas para todos os usuários são
apresentados e também . Como pode ser visualizado através dos gráficos e da tabela abaixo, a
média 1 dos gêneros teve uma porcentagem de acerto maior que a dos programas e a média 2
dos Gêneros teve uma porcentagem de acerto maior que a dos programas.
Tabela 18 – Média 1 programas e gêneros
Média 1
Usuário Gêneros Programas
11 41% 21%
12 44% 19%
21 70% 46%
22 53% 30%
23 87% 50%
31 38% 19%
32 31% 10%
33 8% 4%
41 15% 7%
42 69% 36%
51 41% 31%
52 45% 41%
61 59% 44%
62 24% 18%
63 63% 58%
Tabela 19 – Média 2 programas e gêneros
Média 2
Usuário Gêneros Programas
11 29% 15%
12 31% 14%
21 50% 33%
22 38% 21%
23 62% 36%
31 27% 14%
32 22% 7%
33 6% 3%
41 11% 5%
42 49% 26%
51 29% 22%
52 32% 29%
61 42% 31%
62 17% 13%
63 45% 41%
69
Figura 88 – Média 1
Figura 89 – Média 2
70
CAPÍTULO 5 -
CONCLUSÕES
Pessoas que se conhecem e convivem entre si têm a capacidade de indicar textos,
filmes, livros ou locais mais adequadamente, justamente por ter conhecimento dos gostos
alheios. Além disso, pessoas com mais experiência em um determinado assunto, melhoram a
qualidade das sugestões. Os sistemas de recomendação que utilizam Filtragem Colaborativa
tentam imitar o que acontece na vida real, como citado acima.
Nos testes apresentados neste relatório, mesmo tentando imitar a sugestão pessoal de
programas de TV, percebeu-se que a Filtragem Colaborativa obteve bons resultados para
alguns usuários e para outros não. Isso ocorreu, principalmente, porque alguns usuários
possuem poucos dados para alguns dias e a quantidade de dados influencia fortemente na
qualidade das recomendações. Outro fator é a baixa quantidade de usuários – apenas 15. Em
um sistema de recomendação real, normalmente existem milhões de usuários, o que pode
torna a qualidade das recomendações melhor.
O processo utilizado aqui não gera um perfil específico, como nos testes realizados com
a Filtragem Baseada em Conteúdo, em que um perfil é gerado e atualizado constantemente
para as recomendações. Além disso, o processo foi aplicado para gerar recomendações de
programas como se fossem títulos de um filme e também recomendações de gêneros
diretamente.
Finalizando, os resultados apresentados neste relatório foram satisfatórios e a análise
reforçou o fato de que o desenvolvimento de um sistema de recomendação híbrido é uma
ótima solução para a geração de recomendações com maior qualidade.
5
71
REFERÊNCIAS BIBLIOGRÁFICAS
ABNT 15603-2. Norma Brasileira. Televisão Digital Terrestre – Multiplexação e
serviços de informação (SI) Parte 2: Estrutura de dados e definições da
informação básica de SI. Versão 3, 21/09/2009, 129 páginas.
ADOMAVICIUS, G.; Tuzhilin, A. Towards the Next Generation of
Recommenders Systems: A Survey of the State-of-the-Art and Possible
Extensions. IEEE Transactions on Knowledge and Data Engineering, vol. 17, Issue 6,
p. 734-749, June 2005.
ÁVILA, P. M. Recommender TV: Suporte ao Desenvolvimento de Aplicações de
Recomendação para o Sistema Brasileiro de TV Digital. Dissertação de Mestrado.
90 páginas, 2010.
BÄR, A. et al. A Lightweight Mobile TV Recommender: Towards a One-Click-to-
Watch Experience. In Proceedings 6th European Interactive TV Conference, p.142-
147, Salzburg, Áustria, 03-04/07/2008.
BELKIN, Nicholas J.; CROFT, W. Bruce. Information filtering nad information
retrieval: Two sides of the same coin? In Communications of the ACM, December
1992, vol. 35, Nº 12, p. 29-38.
BOZIOS, T. et al. Advanced Techniques for Personalized Advertising in a Digital
TV Environment: The iMedia System. In Proceedings of the eBusiness and eWork
Conference, p. 1025-1031, IOS press, 2001.
CHOI, J. Y.; KOH, D.; LEE, J. Ex-ante simulation of mobile TV market based on
consumers’ preference data. In Proceedings of the Technological Forecasting &
Social Change, p. 1043-1053, 2007.
72
CHORIANOPOULOS, K. Personalized and mobile digital TV applications. In
Proceedings of the Multimedia Tools and Aplications, p. 1- 10, vol.36, 27 January
2007.
DAS, D. and ter HORST, H. Recommder Systems for TV. In Proceedings of 15 th
AAAI Conference, Madison, Wisconsin, July 1998.
EINARSSON, O. P. Content Personalization for Mobile TV Combining Content-
Based and Collavorative Filtering. Master Thesis. Center for Information and
Communication Technologies. Technical Univesity of Denmark. August 22, 2007.
FOLTZ, W. Peter; Dumais, T. Susan. Personalized Information Delivery: Na
analysis of Information Filtering Methods. In Communications of the ACM,
December 1992, vol. 35, Nº 12, p. 51-60.
GUTTA, S. et al. TV Content Recommender System. In Proceedings of the 17th
National Conference of AAAI, Austin, TX, 2000.
LUCAS, A. Personalização para Televisão Digital utilizando a estratégia de
Sistema de Recomendação para ambientes multiusuário. Dissertação de Mestrado.
103 páginas. 2009.
MAIA, Luiz Cláudio Gomes; SOUZA, Renato Rocha. Medidas de similaridade em
documentos eletrônicos. In Encontro Nacional de Pesquisa em Ciência da
Informação, IX, 28/09-01/10/2008, São Paulo. Anais. USP, 2008. Disponível em:
<http://www.luizmaia.com.br/index2.php?
option=com_docman&task=doc_view&gid=3&Itemid=30>.
Acesso em: 03/10/2008.
73
MARCHI, Késsia Rita de Costa. Sistemas de Recomendação. Uma abordagem
geral. Paraná: UEM/DI/PPG-CC, 2008. 30 p. Seminário. Disponível em:
<http://kessia.blogs.unipar.br/files/2008/07/sistemas-de-recomendacao.pdf.>. Acesso
em: 10/10/2008.
REATEGUI, Eliseo Berni; CAZELLA, Sílvio César. Sistemas de Recomendação. In
25.° Congresso da Sociedade Brasileira de Computação, 22-29/06/2005, Rio Grande
do Sul. Anais do Encontro Nacional de Inteligência Artificial, São Leopoldo:
UNISINOS, 2005. p. 306-348. Disponível
em:<http://www.unisinos.br/_diversos/congresso/sbc2005/_dados/anais/
pdf/arq0287.pdf>. Acesso em: 04/10/2008.
RESNICK, P.; VARIAN, H. R. Recommender Systems. Communications of the ACM,
New York, vol. 40, n. 3, p. 77-87, March 1997.
SILVA, F. S. Personalização de Conteúdo na TVDI Através de um Sistema de
Recomendação Personalizada de Programas de TV (SRPTV). In III Fórum de
Oportunidades em Televisão Digital Interativa, Poços de Caldas, Minas Gerais, Brasil,
2005.
SILVA, S. P., Marcelino. Conceitos, Aplicações e Experimentos com Weka. In
ESCOLA REGIONAL DE INFORMÁTICA, IV, 2004, Rio de Janeiro. Livro da
Escola Regional de Informática Rio de Janeiro. Espírito Santo: 2004, 20p. Disponível
em: <www.dpi.inpe.br/~mpss/artigos/
MineracaoDeDados2004.pdf>. Acesso em: 5/10/2008.
SOLLA, A. G. et al. ZapTV: Personalized User-Generated Content for Handheld
Devices in DVB-H Mobile Newtorks. In Proceedings 6th European Interactive TV
Conference, p.193-203, Salzburg, Áustria, 03- 04/07/2008.
TORRES, Roberto. Personalização na Internet. São Paulo: Novatec Editora, 2004.
158p.
74
URIBE, S. et al. Mobile TV Targeted Advertisement and Content Personalization.
In 16th International Workshop Conference on Systems, Signals and Image
Processing, Chalkida, Greece, 18-19/06/2009.
YU, Z. et al. TV program recommendation for multiple viewers based on user
profile merging. In Proceedings of the User Model User-Adap Inter, p. 63-82, 2006.