SlideShare uma empresa Scribd logo
1 de 84
Baixar para ler offline
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
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.




                                                                                         i
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.




                                                                                           ii
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

                                                                                                                                   iii
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
                                                                                                                           iv
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
                                                                                                                                     v
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




                                                                                                                           vi
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




                                                                                                                               vii
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




                                                                                                                                  viii
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




                                                                                                                                       ix
1                                                                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)
CAPÍTULO 1 -




   2       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
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).




                                                                                          3
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.

                                                                                             4
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).




                                                                                       5
3                                             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




                                                                                           6
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-         44              45              39          32               60          36
     casa
   Grau de
 instrução do     Primário       Ginasial          Ginasial   Colegial          Colegial   Colegial
   chefe-de-     incompleto    incompleto        incompleto   completo        incompleto   completo
     casa
   Sexo do
                 Feminino       Feminino          Feminino    Feminino        Feminino     Feminino
 indivíduo 1

  Idade do
                    44              45              39          32               60          36
 indivíduo 1

                                                                                                      7
Domicílio        1          2            3             4               5            6

   Sexo do
                Feminino   Masculino    Masculino     Masculino      Masculino     Masculino
 Indivíduo 2

  Idade do
                   8          48           40            30             77            38
 indivíduo 2

   Sexo do
                           Feminino     Feminino                                   Masculino
 indivíduo 3

  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.




      Figura 2 –
   Características dos
      domicílios




                                Figura 3 –
                              Características
                             socioeconômicas

                                                              Figura 4 – Conteúdo da tabela
                                                                         usuários
     Figura 5 – Tabela
         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

                                                                                               8
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,

                                                                                         9
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
                                                                     005                Código da emissora
       1.ª               005100PNREXXXXX
                                                                100PNREXXXXX                Descartado
                                                                   002645            Código do programa
       2.ª             002645RELIGIOSO MAT
                                                                RELIGIOSO MAT           Nome do programa
       3.ª                         000000                                    Descartado
       4.ª                         0000                                      Descartado
                                                                   060000            Início do programa
                                                                                           Fim do
       5.ª               060000080000DIA_05                        080000
                                                                                          programa
                                                                                            Dia do
                                                                   DIA_05
                                                                                          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

                                                                                                             10
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




                                                                                               11
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 11 – Tabela que contém os
  Figura 10 – Tabela que
                                   códigos das emissoras
contém os códigos originais
      das emissoras                                              Figura 12 – Tabela que contém os
                                                                            programas




                Figura 13 – Tabela que contém as informações da programação de TV




                                                                                                12
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
                                                                                          13
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 16 – Tabela para
                                                              armazenamento




                                                      Figura 17 – Tabela que resulta da
                                                                 Listagem 1

     Figura 15 – Planilhas após organização



       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.




                                                                                          14
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.




                                                                                                   15
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 ) )

                                                                                                                  16
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




                                                                                                   17
Figura 18 – Tabela que contém a     Figura 19 – Tabela com os novos    Figura 20 – Tabela com o
mescla do EPG com o histórico do     campos início e fim da sintonia   resultado de SUBTIME()
            usuário



       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';

                                                                                                  18
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');



                                                                                                       19
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');
                                                                                                  20
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
                                                                                                      21
Figura 25 – Tabela do
                                                                       histórico de visualização
                                                                            de cada usuário

 Figura 23 – Tabela que adiciona o   Figura 24 – Tabela que contém a
              período                     versão final dos dados




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.




                                                                                              22
Figura 26 – Tabela que armazena as avaliações de    Figura 27 – Tabela que armazena as informações
               todos os usuários                                 do usuário em análise




    Figura 28 – Tabela que            Figura 29 – Tabela que
  armazena os usuários que           armazena os usuários que      Figura 30 – Tabela que armazena
gostam de programas similares       gostam de gêneros similares           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
                                                                                                23
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';
                                                                                         24
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;


                                                                                              25
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.
                                                                                                     26
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.
                                                                                                                   27
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,
                                                                                              28
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.

                                                                                                         29
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.




                                                                                           30
4                                                         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




                                                                                               31
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%




                                                                                                            32
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

                                                                                                            33
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



                                                                                     34
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

                                                                                       35
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
                                                                                   36
Figura 38 - % de acerto programa usuário 33




Figura 39 - % de acerto programa usuário 41




                                              37
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
                                                                                          38
Figura 42 - % de acerto programa usuário 52




Figura 43 - % de acerto programa usuário 61




                                              39
Figura 44 - % de acerto programa usuário 62




Figura 45 - % de acerto programa usuário 63




                                              40
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%




                                                                                                                41
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.

                                                                                                            42
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
                                                                                   43
Figura 49 - % de acerto gênero usuário 22




Figura 50 - % de acerto gênero usuário 23


                                            44
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
                                                                                      45
Figura 53 - % de acerto gênero usuário 33




Figura 54 - % de acerto gênero usuário 41




                                            46
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


                                                                                     47
Figura 57 - de acerto gênero usuário 52




Figura 58 - % de acerto gênero usuário 61




                                            48
Figura 59 - % de acerto gênero usuário 62




Figura 60 - % de acerto gênero usuário 63




                                            49
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07
Relatório técnico i   fc 29-07

Mais conteúdo relacionado

Mais procurados

Livro programacaoc
Livro programacaocLivro programacaoc
Livro programacaoc
Thiago Prado
 
Apostila primavera enterprise versão 6.0
Apostila primavera enterprise versão 6.0Apostila primavera enterprise versão 6.0
Apostila primavera enterprise versão 6.0
Thaiane Freire
 
Apostila informatica basica pronatec
Apostila informatica basica   pronatecApostila informatica basica   pronatec
Apostila informatica basica pronatec
Thales Menezes
 
Programando ooo b
Programando ooo bProgramando ooo b
Programando ooo b
vangney
 
Manual usuario positivo_ypy7_ypy10-1
Manual usuario positivo_ypy7_ypy10-1Manual usuario positivo_ypy7_ypy10-1
Manual usuario positivo_ypy7_ypy10-1
Aucione Aguiar
 

Mais procurados (17)

Apostila excel vba completa portugues
Apostila excel vba completa portuguesApostila excel vba completa portugues
Apostila excel vba completa portugues
 
Clp s7-avancado
Clp s7-avancadoClp s7-avancado
Clp s7-avancado
 
Livro programacaoc
Livro programacaocLivro programacaoc
Livro programacaoc
 
Apostila primavera enterprise versão 6.0
Apostila primavera enterprise versão 6.0Apostila primavera enterprise versão 6.0
Apostila primavera enterprise versão 6.0
 
LIVRO PROPRIETÁRIO - TECNOLOGIA DA INFORMAÇÃO E COMUNICAÇÃO
LIVRO PROPRIETÁRIO - TECNOLOGIA DA INFORMAÇÃO E COMUNICAÇÃOLIVRO PROPRIETÁRIO - TECNOLOGIA DA INFORMAÇÃO E COMUNICAÇÃO
LIVRO PROPRIETÁRIO - TECNOLOGIA DA INFORMAÇÃO E COMUNICAÇÃO
 
Apostila informatica basica pronatec
Apostila informatica basica   pronatecApostila informatica basica   pronatec
Apostila informatica basica pronatec
 
Apostila JSF 2.0 - K19
Apostila JSF 2.0 - K19Apostila JSF 2.0 - K19
Apostila JSF 2.0 - K19
 
[Manual] Frequência Escolar (Projeto Presença)
[Manual] Frequência Escolar (Projeto Presença)[Manual] Frequência Escolar (Projeto Presença)
[Manual] Frequência Escolar (Projeto Presença)
 
Manual word 2009
Manual word 2009Manual word 2009
Manual word 2009
 
Apostila informática
Apostila informáticaApostila informática
Apostila informática
 
Programando ooo b
Programando ooo bProgramando ooo b
Programando ooo b
 
Material LINUX
Material LINUXMaterial LINUX
Material LINUX
 
ManuaL do Usuário Tablet Positivo Yypy7"
ManuaL do Usuário Tablet Positivo Yypy7"ManuaL do Usuário Tablet Positivo Yypy7"
ManuaL do Usuário Tablet Positivo Yypy7"
 
Manual usuario positivo_ypy7_ypy10-1
Manual usuario positivo_ypy7_ypy10-1Manual usuario positivo_ypy7_ypy10-1
Manual usuario positivo_ypy7_ypy10-1
 
64805565 access-basico
64805565 access-basico64805565 access-basico
64805565 access-basico
 
K19 sql
K19 sqlK19 sql
K19 sql
 
Introdução à programação em R
Introdução à programação em RIntrodução à programação em R
Introdução à programação em R
 

Destaque

Presentación taller herram comprensión de textos
Presentación taller herram comprensión de textosPresentación taller herram comprensión de textos
Presentación taller herram comprensión de textos
Rocio Pabon
 
Unidad didáctica II jornada telesecundaria
Unidad didáctica II jornada telesecundariaUnidad didáctica II jornada telesecundaria
Unidad didáctica II jornada telesecundaria
Eduardo Reyes
 
Actividad 9 presentacion componentes de la tarjeta madre
Actividad 9 presentacion componentes de la tarjeta madreActividad 9 presentacion componentes de la tarjeta madre
Actividad 9 presentacion componentes de la tarjeta madre
Pipe Marin D
 
El papel comunicativo del docente en el aula virtual
El papel comunicativo del docente en el aula virtualEl papel comunicativo del docente en el aula virtual
El papel comunicativo del docente en el aula virtual
Eduardo Reyes
 
Aplicacion de una EDO de segundo grado a los circuitos en serie
Aplicacion de una EDO de segundo grado a los circuitos en serie Aplicacion de una EDO de segundo grado a los circuitos en serie
Aplicacion de una EDO de segundo grado a los circuitos en serie
Cabphialmen Boundless
 
Actividad viernes
Actividad viernesActividad viernes
Actividad viernes
fmmartinez2
 
Julio María Sanguinetti
Julio María SanguinettiJulio María Sanguinetti
Julio María Sanguinetti
Tulio Peralta
 
Portafolio de evaluación
Portafolio de evaluaciónPortafolio de evaluación
Portafolio de evaluación
Eduardo Reyes
 
Royal blue quadro_-_13.08.2010
Royal blue quadro_-_13.08.2010Royal blue quadro_-_13.08.2010
Royal blue quadro_-_13.08.2010
fabianorcorrea
 
Grenoble 3rd year transcript
Grenoble 3rd year transcriptGrenoble 3rd year transcript
Grenoble 3rd year transcript
Nadim Banna
 
2 articulos de la semana 4
2 articulos de la semana 42 articulos de la semana 4
2 articulos de la semana 4
ale_sifuentes
 

Destaque (20)

Presentación taller herram comprensión de textos
Presentación taller herram comprensión de textosPresentación taller herram comprensión de textos
Presentación taller herram comprensión de textos
 
Unidad didáctica II jornada telesecundaria
Unidad didáctica II jornada telesecundariaUnidad didáctica II jornada telesecundaria
Unidad didáctica II jornada telesecundaria
 
Socio
SocioSocio
Socio
 
Actividad 9 presentacion componentes de la tarjeta madre
Actividad 9 presentacion componentes de la tarjeta madreActividad 9 presentacion componentes de la tarjeta madre
Actividad 9 presentacion componentes de la tarjeta madre
 
Valores
ValoresValores
Valores
 
Arquitetura de Computadores: Assembly - Debug
Arquitetura de Computadores: Assembly - DebugArquitetura de Computadores: Assembly - Debug
Arquitetura de Computadores: Assembly - Debug
 
DIPJ 2013
DIPJ 2013DIPJ 2013
DIPJ 2013
 
El papel comunicativo del docente en el aula virtual
El papel comunicativo del docente en el aula virtualEl papel comunicativo del docente en el aula virtual
El papel comunicativo del docente en el aula virtual
 
Aplicacion de una EDO de segundo grado a los circuitos en serie
Aplicacion de una EDO de segundo grado a los circuitos en serie Aplicacion de una EDO de segundo grado a los circuitos en serie
Aplicacion de una EDO de segundo grado a los circuitos en serie
 
Actividad viernes
Actividad viernesActividad viernes
Actividad viernes
 
gestion de ciencia y tecnologia
gestion de ciencia y tecnologiagestion de ciencia y tecnologia
gestion de ciencia y tecnologia
 
Julio María Sanguinetti
Julio María SanguinettiJulio María Sanguinetti
Julio María Sanguinetti
 
Portafolio de evaluación
Portafolio de evaluaciónPortafolio de evaluación
Portafolio de evaluación
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Asys accounting system presentacion final
Asys accounting system presentacion finalAsys accounting system presentacion final
Asys accounting system presentacion final
 
Emenda ldo 2013 const. caps
Emenda ldo 2013 const. capsEmenda ldo 2013 const. caps
Emenda ldo 2013 const. caps
 
Royal blue quadro_-_13.08.2010
Royal blue quadro_-_13.08.2010Royal blue quadro_-_13.08.2010
Royal blue quadro_-_13.08.2010
 
Grenoble 3rd year transcript
Grenoble 3rd year transcriptGrenoble 3rd year transcript
Grenoble 3rd year transcript
 
2 articulos de la semana 4
2 articulos de la semana 42 articulos de la semana 4
2 articulos de la semana 4
 
Guitarra
GuitarraGuitarra
Guitarra
 

Semelhante a Relatório técnico i fc 29-07

Almeida marisley hirinea_de
Almeida marisley hirinea_deAlmeida marisley hirinea_de
Almeida marisley hirinea_de
mafrooos
 
Almeida marisley hirinea_de
Almeida marisley hirinea_deAlmeida marisley hirinea_de
Almeida marisley hirinea_de
Fares Mafros
 
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURAESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
Sabrina Mariana
 
Estudo de caso sobre business intelligence
Estudo de caso sobre business intelligenceEstudo de caso sobre business intelligence
Estudo de caso sobre business intelligence
Talita Lima
 

Semelhante a Relatório técnico i fc 29-07 (20)

Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
 
Condo master
Condo masterCondo master
Condo master
 
Almeida marisley hirinea_de
Almeida marisley hirinea_deAlmeida marisley hirinea_de
Almeida marisley hirinea_de
 
Almeida marisley hirinea_de
Almeida marisley hirinea_deAlmeida marisley hirinea_de
Almeida marisley hirinea_de
 
Plano de Projeto de Software - SIUR
Plano de Projeto de Software - SIURPlano de Projeto de Software - SIUR
Plano de Projeto de Software - SIUR
 
dissertacao_carmelito_2017.pdf
dissertacao_carmelito_2017.pdfdissertacao_carmelito_2017.pdf
dissertacao_carmelito_2017.pdf
 
Controladores programaveis--estudo-e-aplicacao
Controladores programaveis--estudo-e-aplicacaoControladores programaveis--estudo-e-aplicacao
Controladores programaveis--estudo-e-aplicacao
 
Automação residencial
Automação residencialAutomação residencial
Automação residencial
 
Hugocasatiferreiraguimaraes
HugocasatiferreiraguimaraesHugocasatiferreiraguimaraes
Hugocasatiferreiraguimaraes
 
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURAESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
 
TG TCC AUTOMAÇÃO UFABC - Operação Remota de Mesa Móvel utilizando Visão Compu...
TG TCC AUTOMAÇÃO UFABC - Operação Remota de Mesa Móvel utilizando Visão Compu...TG TCC AUTOMAÇÃO UFABC - Operação Remota de Mesa Móvel utilizando Visão Compu...
TG TCC AUTOMAÇÃO UFABC - Operação Remota de Mesa Móvel utilizando Visão Compu...
 
Estudo de caso sobre business intelligence
Estudo de caso sobre business intelligenceEstudo de caso sobre business intelligence
Estudo de caso sobre business intelligence
 
Monografia - Qualidade Afetiva de Elementos Visuais
Monografia - Qualidade Afetiva de Elementos VisuaisMonografia - Qualidade Afetiva de Elementos Visuais
Monografia - Qualidade Afetiva de Elementos Visuais
 
Manual de instalação do software emae setores público, comercial e servi‡os
Manual de instalação do software emae   setores público, comercial e servi‡osManual de instalação do software emae   setores público, comercial e servi‡os
Manual de instalação do software emae setores público, comercial e servi‡os
 
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
 
TCC-BrunoAzevedoCosta
TCC-BrunoAzevedoCostaTCC-BrunoAzevedoCosta
TCC-BrunoAzevedoCosta
 
Interconexão de Redes.pdf
Interconexão de Redes.pdfInterconexão de Redes.pdf
Interconexão de Redes.pdf
 
Plataforma Online para Ensino de Sistemas Elétricos de Potência
Plataforma Online para Ensino de Sistemas Elétricos de PotênciaPlataforma Online para Ensino de Sistemas Elétricos de Potência
Plataforma Online para Ensino de Sistemas Elétricos de Potência
 
Plano de Projeto - Grupo Ajax
Plano de Projeto - Grupo AjaxPlano de Projeto - Grupo Ajax
Plano de Projeto - Grupo Ajax
 
oitivas de crianças
oitivas de criançasoitivas de crianças
oitivas de crianças
 

Mais de Elaine Cecília Gatto

Mais de Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
 

Relatório técnico i fc 29-07

  • 1. 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
  • 2. 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. i
  • 3. 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. ii
  • 4. 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 iii
  • 5. 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 iv
  • 6. 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 v
  • 7. 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 vi
  • 8. 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 vii
  • 9. 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 viii
  • 10. 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 ix
  • 11. 1 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)
  • 12. CAPÍTULO 1 - 2 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
  • 13. 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). 3
  • 14. 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. 4
  • 15. 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). 5
  • 16. 3 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 6
  • 17. 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- 44 45 39 32 60 36 casa Grau de instrução do Primário Ginasial Ginasial Colegial Colegial Colegial chefe-de- incompleto incompleto incompleto completo incompleto completo casa Sexo do Feminino Feminino Feminino Feminino Feminino Feminino indivíduo 1 Idade do 44 45 39 32 60 36 indivíduo 1 7
  • 18. Domicílio 1 2 3 4 5 6 Sexo do Feminino Masculino Masculino Masculino Masculino Masculino Indivíduo 2 Idade do 8 48 40 30 77 38 indivíduo 2 Sexo do Feminino Feminino Masculino indivíduo 3 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. Figura 2 – Características dos domicílios Figura 3 – Características socioeconômicas Figura 4 – Conteúdo da tabela usuários Figura 5 – Tabela 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 8
  • 19. 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, 9
  • 20. 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 005 Código da emissora 1.ª 005100PNREXXXXX 100PNREXXXXX Descartado 002645 Código do programa 2.ª 002645RELIGIOSO MAT RELIGIOSO MAT Nome do programa 3.ª 000000 Descartado 4.ª 0000 Descartado 060000 Início do programa Fim do 5.ª 060000080000DIA_05 080000 programa Dia do DIA_05 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 10
  • 21. 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 11
  • 22. 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 11 – Tabela que contém os Figura 10 – Tabela que códigos das emissoras contém os códigos originais das emissoras Figura 12 – Tabela que contém os programas Figura 13 – Tabela que contém as informações da programação de TV 12
  • 23. 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 13
  • 24. 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 16 – Tabela para armazenamento Figura 17 – Tabela que resulta da Listagem 1 Figura 15 – Planilhas após organização 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. 14
  • 25. 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. 15
  • 26. 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 ) ) 16
  • 27. 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 17
  • 28. Figura 18 – Tabela que contém a Figura 19 – Tabela com os novos Figura 20 – Tabela com o mescla do EPG com o histórico do campos início e fim da sintonia resultado de SUBTIME() usuário 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'; 18
  • 29. 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'); 19
  • 30. 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'); 20
  • 31. 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 21
  • 32. Figura 25 – Tabela do histórico de visualização de cada usuário Figura 23 – Tabela que adiciona o Figura 24 – Tabela que contém a período versão final dos dados 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. 22
  • 33. Figura 26 – Tabela que armazena as avaliações de Figura 27 – Tabela que armazena as informações todos os usuários do usuário em análise Figura 28 – Tabela que Figura 29 – Tabela que armazena os usuários que armazena os usuários que Figura 30 – Tabela que armazena gostam de programas similares gostam de gêneros similares 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 23
  • 34. 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'; 24
  • 35. 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; 25
  • 36. 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. 26
  • 37. 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. 27
  • 38. 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, 28
  • 39. 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. 29
  • 40. 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. 30
  • 41. 4 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 31
  • 42. 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% 32
  • 43. 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 33
  • 44. 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 34
  • 45. 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 35
  • 46. 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 36
  • 47. Figura 38 - % de acerto programa usuário 33 Figura 39 - % de acerto programa usuário 41 37
  • 48. 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 38
  • 49. Figura 42 - % de acerto programa usuário 52 Figura 43 - % de acerto programa usuário 61 39
  • 50. Figura 44 - % de acerto programa usuário 62 Figura 45 - % de acerto programa usuário 63 40
  • 51. 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% 41
  • 52. 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. 42
  • 53. 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 43
  • 54. Figura 49 - % de acerto gênero usuário 22 Figura 50 - % de acerto gênero usuário 23 44
  • 55. 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 45
  • 56. Figura 53 - % de acerto gênero usuário 33 Figura 54 - % de acerto gênero usuário 41 46
  • 57. 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 47
  • 58. Figura 57 - de acerto gênero usuário 52 Figura 58 - % de acerto gênero usuário 61 48
  • 59. Figura 59 - % de acerto gênero usuário 62 Figura 60 - % de acerto gênero usuário 63 49