Relatório técnico ii fbc 29-07-10
-
Upload
elaine-cecilia-gatto -
Category
Documents
-
view
168 -
download
2
description
Transcript of Relatório técnico ii fbc 29-07-10
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 Baseada em Conteúdo aos dados de TV
fornecidos pelo IBOPE
ALUNA: Elaine Cecília Gatto
ORIENTADOR: Prof. Dr. Sergio Donizetti Zorzo
São Carlos-SP
Julho/2010
i
AGRADECIMENTOS
Agradeço a Paulo Muniz Ávila e a Adriano Lucas pelo auxílio prestado durante a
realização deste trabalho, especificamente na parte de organização dos dados. Agradeço
também ao IBOPE por ter fornecido os dados de visualização necessários para os testes.
ii
RESUMO
Este relatório técnico apresenta o resultado 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 domicílios que interagem em um sistema de recomendação que
utiliza Filtragem Baseada em Conteúdo para TV Digital Portátil Interativa. 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
Baseada em Conteúdo, Televisão Digital, Cosseno, Apriori.
iii
LISTA DE FIGURAS
Figura 1 – Contexto do estudo de caso ....................................................................................... 7
Figura 2 – Amostra dos arquivos TXT ..................................................................................... 10
Figura 3 – Tabela com os descritores de gêneros ..................................................................... 12
Figura 4 – Tabela com os descritores de subgênero ................................................................. 12
Figura 5 – Tabela com os descritores de gênero/subgênero ..................................................... 12
Figura 6 – Tabela com os códigos originais das emissoras ...................................................... 13
Figura 7 – Tabela com os códigos das emissoras ..................................................................... 13
Figura 8 – Tabela com os programas........................................................................................ 13
Figura 9 – Tabela com as informações da programação de TV ............................................... 13
Figura 10 – Tabela matrixepg no MySQL................................................................................ 15
Figura 11 – Amostra das planilhas de sintonia ......................................................................... 16
Figura 12 – Planilhas após organização ................................................................................... 17
Figura 13 – Tabela para armazenamento .................................................................................. 17
Figura 14 – Tabela que resulta da listagem 1 ........................................................................... 17
Figura 15 – Tabela que contém a mescla do EPG com o histórico do usuário ........................ 20
Figura 16 – Tabela com os novos campos início e fim da sintonia .......................................... 20
Figura 17 – Tabela com o resultado de Subtime().................................................................... 20
Figura 18 – Tabela com o campo duração ................................................................................ 22
Figura 19 – Tabela com o campo dia da semana. ..................................................................... 22
Figura 20 – Tabela com o campo ............................................................................................. 22
Figura 21 – Tabela com a versão final dos dados..................................................................... 22
Figura 22 – Configurações Apriori. .......................................................................................... 23
Figura 23 – Tabela profile ........................................................................................................ 25
Figura 24 – Tabela recomenda ................................................................................................. 25
Figura 25 – % de acerto Apriori Domicílio 1 ........................................................................... 31
Figura 26 – % de acerto Apriori Domicílio 2 ........................................................................... 32
Figura 27 – % de acerto Apriori Domicílio 3 ........................................................................... 32
Figura 28 – % de acerto Apriori Domicílio 4 ........................................................................... 33
Figura 29 – % de acertoApriori Domicílio 5 ............................................................................ 33
iv
Figura 30 – % de acertoApriori Domicílio 6 ............................................................................ 34
Figura 31 - % de acerto Apriori todos os domicílios ................................................................ 34
Figura 32 – % de acerto Cosseno domicílio 1 .......................................................................... 35
Figura 33 – % de acerto Cosseno domicílio 2 .......................................................................... 36
Figura 34 – % de acerto Cosseno domicílio 3 .......................................................................... 36
Figura 35 – % de acerto Cosseno domicílio 4 .......................................................................... 37
Figura 36 – % de acerto Cosseno domicílio 5 .......................................................................... 37
Figura 37 – % de acerto Cosseno domicílio 6 .......................................................................... 38
Figura 38 – % de acerto Cosseno todos os domicílios ............................................................. 38
Figura 39 – Comparação entre Apriori e Cosseno domicílio 1 ................................................ 40
Figura 40 – Comparação entre Apriori e Cosseno domicílio 2 ................................................ 40
Figura 41 – Comparação entre Apriori e Cosseno domicílio 3 ................................................ 41
Figura 42 – Comparação entre Apriori e Cosseno domicílio 4 ................................................ 41
Figura 43 – Comparação entre Apriori e Cosseno domicílio 5 ................................................ 42
Figura 44 – Comparação entre Apriori e Cosseno domicílio 6 ................................................ 42
Figura 45 – Comparação entre Apriori e Cosseno todos os domicílios ................................... 43
v
LISTA DE TABELAS
Tabela 1 – Características dos domicílios .................................................................................. 8
Tabela 2 – Características socioeconômicas dos domicílios ...................................................... 9
Tabela 3 – Identificação dos campos nos arquivos TXT.......................................................... 11
Tabela 4 – Layout dos arquivos TXT ....................................................................................... 11
Tabela 5 – Relação quantidade de programas/gênero .............................................................. 12
Tabela 6 – Resultados do Apriori ............................................................................................. 31
Tabela 7 – Resultados do Cosseno ........................................................................................... 35
Tabela 8 - Comparação entre Apriori e Cosseno domicílios 1-3. ............................................ 39
Tabela 9 – Comparação entre Apriori e Cosseno domicílios 4-6. ............................................ 39
vi
LISTA DE EQUAÇÕES
Equação 1 – Cálculo do perfil .................................................................................................. 25
Equação 2 – Cálculo da norma do perfil .................................................................................. 26
Equação 3 – Cálculo da norma da tabela matrizepg ................................................................. 27
Equação 4 – Cálculo de dot ...................................................................................................... 27
Equação 5 – Cálculo do Cosseno ............................................................................................. 28
Equação 6 – Fórmula que calcula a porcentagem de acerto de acordo com o número de
recomendações geradas ............................................................................................................ 30
Equação 7 – Fórmula que calcula a média da porcentagem de acerto de acordo com o número
de dias monitorados .................................................................................................................. 30
vii
LISTAGENS
Listagem 1 – Consulta SQL para descobrir qual emissora o usuário está assistindo. ............. 17
Listagem 2 – Consulta SQL para mesclar as informações do EPG com as do usuário. .......... 18
Listagem 3 – Cálculo do horário de início e de fim da sintonia. ............................................. 18
Listagem 4 – Cálculo do tempo de visualização. .................................................................... 19
Listagem 5 – Cálculo da conversão do tempo do formato hora para inteiro. .......................... 19
Listagem 6 – Cálculo do dia da semana. ................................................................................. 20
Listagem 7 – Cálculo do período do dia. ................................................................................. 21
Listagem 8 – Inserindo e apagando os dados para a correta avaliação ................................... 25
Listagem 9 – Cálculo do perfil ................................................................................................ 26
Listagem 10 – Configuração da variável mycprofilenorm ...................................................... 26
Listagem 11 – Cálculo da norma da matrizepg ....................................................................... 27
Listagem 12 – Cálculo da norma e dot ................................................................................... 27
Listagem 13 – Cálculo do Cosseno ......................................................................................... 28
Listagem 14 – Inserção do resultado na tabela recomenda ..................................................... 29
Listagem 15 – Comparação entre as tabelas recomenda e d1_vf ............................................ 29
viii
SUMÁRIO
1. INTRODUÇÃO ............................................................................................................... 1
2. SISTEMAS DE RECOMENDAÇÃO ............................................................................. 3
2.1. Filtragem e Informação ............................................................................................ 3
2.1.1. Filtragem Baseada em Conteúdo ...................................................................4
2.1.2. Filtragem Colaborativa....................................................................................5
2.1.3. Filtragem Híbrida............................................................................................5
3. ESTUDO DE CASO ...................................................................................................... 7
3.1. Conhecendo e Preparando os Dados ....................................................................... 8
3.1.1. EPG ................................................................................................................9
3.1.2. Histórico dos Usuários .................................................................................15
3.2. Metodologia e Simulação ....................................................................................... 23
4. RESULTADOS ............................................................................................................ 30
5. CONCLUSÃO .............................................................................................................. 44
6. REFERÊNCIAS ........................................................................................................... 46
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, que 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 Baseada em
Conteúdo (FBC) aplicada aos dados de TVD 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
1 Multinacional brasileira de capital privado, o IBOPE é uma das maiores empresas de pesquisa de mercado da
América Latina. Há 67 anos fornece um amplo conjunto de informações e estudos sobre mídia, opinião pública,
intenção de voto, consumo, marca comportamento e mercado. (www.ibope.com.br)
1
2
avaliar como a Filtragem Colaborativa pode ser utilizada em sistemas de recomendação no
contexto da TVD.
Em um sistema de recomendação típico, os usuários fornecem as recomendações como
entradas e essas são, então, agregadas e dirigidas aos destinatários adequados (RESNICK,
1997).
3
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-
2
4
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
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).
5
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.
6
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).
7
ESTUDO DE CASO
Este estudo de caso teve como objetivo avaliar o processo e as implicações que
algumas técnicas de Filtragem Baseada em Conteúdo geram ao serem utilizadas no contexto
da TVD Portátil. Nas seções deste capítulo constam os detalhes de como o estudo de caso foi
realizado.
A Figura 1 apresenta o contexto de utilização do sistema simulado descrito neste relatório
técnico. Os receptores fixos e móveis recebem áudio, vídeo e dados, sendo o middleware, no
caso o middleware Ginga-NCL, o responsável pela separação dos mesmos. O dispositivo deve
ser capaz de receber a transmissão de TVD com o auxílio de uma antena, interna ou externa,
compatível com o padrão de transmissão adotado no Brasil.
Figura 1 – Contexto do estudo de caso
3
8
O usuário interage com a TV no celular e todos os canais assistidos durante o período de
utilização são armazenados. A partir desses dados, o processo de identificação do perfil do
usuário tem início e, com base no horário e no canal assistido, é possível encontrar o gênero
do programa com o auxílio das informações contidas no EPG (Guia Eletrônico de
Programação) (ABNT NBR 15603-2).
O processamento tem início quando o usuário solicita a recomendação. Os dados do
histórico de visualização do usuário coletados até então passam por uma técnica de filtragem
de informação que permite encontrar o perfil do usuário, que é armazenado em uma base de
dados. Com o perfil do usuário atualizado, procuram-se os programas de TV compatíveis no
guia eletrônico de programação e gera-se uma lista com tais programas.
3.1 Conhecendo e Preparando os Dados
Os dados fornecidos pelo IBOPE continham as informações do EPG, o histórico de
visualização do usuário (o que o telespectador assistiu) e também as informações
socioeconômicas dos domicílios. Todos esse conjunto de dados do IBOPE foram separados e
armazenados no banco de dados MySQL. Os dados correspondiam a 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 indica 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
Quantidade de domicílios Quantidade de TVs Quantidade de indivíduos
1 1 2
2 1 3
3 2 3
4 2 2
5 1 2
6 2 3
Total 9 15
9
Tabela 2 – Características socioeconômicas dos domicílios
Domicílio 1 2 3 4 5 6
Classe Social DE C C AB C AB
Idade da
dona-de-
casa
44 45 39 32 60 36
Grau de
instrução do
chefe-de-
casa
Primário
incompleto
Ginasial
incompleto
Ginasial
incompleto
Colegial
completo
Colegial
incompleto
Colegial
completo
Sexo do
indivíduo 1 Feminino Feminino Feminino Feminino Feminino Feminino
Idade do
indivíduo 1 44 45 39 32 60 36
Sexo do
Indivíduo 2 Feminino Masculino Masculino Masculino Masculino Masculino
Idade do
indivíduo 2 8 48 40 30 77 38
Sexo do
indivíduo 3 Feminino Feminino Masculino
Idade do
indivíduo 3
3.1.1 EPG
O EPG fornecido pelo IBOPE é 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 Aberta, com início às 00:00:00 e término às 05:59:00. A Figura 2
ilustra uma amostra do layout inicial desses arquivos e a Tabela 3 apresenta como esse layout
foi organizado.
10
Figura 2 – 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,
reformatados de acordo com a Tabela 4. Após a exportação, foi feita a limpeza dos dados
desnecessários.
11
Tabela 3 – Identificação dos campos nos arquivos TXT
Coluna Conteúdo Identificação
1.ª 005100PNREXXXXX 005 Código da emissora
100PNREXXXXX Descartado
2.ª 002645RELIGIOSO MAT 002645 Código do programa
RELIGIOSO MAT Nome do programa
3.ª 000000 Descartado
4.ª 0000 Descartado
5.ª 060000080000DIA_05
060000 Início do programa
080000 Fim do
programa
DIA_05 Dia do
programa
6.ª 111111100000000000000003XX Descartado
Tabela 4 – Layout dos arquivos TXT
Descrição Tipo Posição Inicial
Código da emissora Numérico (03) 1
Código do programa Numérico (06) 24
Nome do programa Caractere (30) 30
Início do programa Numérico (06) 160
Fim do programa Numérico (06) 166
Em seguida, perceberam-se algumas inconsistências de horários, que foram
imediatamente corrigidas para que a análise futura não gerasse resultados errôneos. O
processo acima descrito se repetiu para cada um dos 15 arquivos de programação e os dados
foram agrupados em uma única planilha que continha o EPG dos 15 dias.
O comportamento do usuário é composto por várias planilhas, denominadas planilhas
de sintonia, que possuem muito mais informação 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 ao 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
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 e constam do Anexo C - “Descritor de gênero no descritor de conteúdo”.
12
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 nos 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 a identificação de aproximadamente 800
programas diferentes. A Tabela 5 ilustra a relação quantidade de programas/gênero
encontrada no EPG. No MySQL também foram criadas tabelas para guardar as informações
do EPG. As Figuras de 3 a 9 apresentam essas tabelas do banco de dados.
Tabela 5 – Relação quantidade de programas/gênero
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
Figura 3 – Tabela com os
descritores de gêneros
Figura 4 – Tabela com os
descritores de subgênero
Figura 5 – Tabela com os
descritores de gênero/subgênero
13
Figura 6 – Tabela com os
códigos originais das emissoras
Figura 7 – Tabela com os códigos
das emissoras
Figura 8 – Tabela com os
programas
Figura 9 – Tabela com as informações da programação de TV
O EPG precisou ainda de mais uma modificação para poder ser utilizado com a FBC.
Uma nova tabela foi criada, idêntica à tabela do EPG, mas acrescida de campos com os nomes
dos gêneros. Esses campos foram populados com 0 ou 1, conforme o programa se encaixava
ou não naquele gênero, transformando-se em uma matriz. Os gêneros receberam siglas, as
quais são listadas abaixo. Isso se fez necessário, pois nas seções de metodologia e de
simulação esses campos aparecerão em diversas consultas SQL. A Figura 10 ilustra a Tabela
criada no MySQL para a matriz do EPG.
Sigla ............ Gênero/Subgênero
DED ............ Debate Entrevista/Debate
DEE ............ Debate Entrevista/Entrevista
EDED ......... Educativo/Educativo
14
ERER .......... Erótico/Erótico
ESES ........... Esporte/Esporte
FF ................ Filme/Filme
FO ............... Filme/Outros
HH .............. Humorístico/Humorístico
II ................. Infantil/Infantil
IC ................ Informação/Culinária
IM ............... Informação/Moda
IO ................ Informação/Outros
IR ................ Informação/Rural
INS .............. Informação/Saúde
IT ................ Informação/Turismo
JD ................ Jornalismo/Documentário
JO ................ Jornalismo/Outros
JR ................ Jornalismo/Reportagem
JT ................ Jornalismo/Telejornais
NN .............. Novela/Novela
ODA ........... Outros/Desenho Adulto
OI ................ Outros/Interativo
OO .............. Outros/Outros
OP ............... Outros/Político
OUR ............ Outros/Religioso
RSRS .......... Reality Show/Reality Show
SSS ............. Série, Seriado/Série
STPO .......... Sorteio, Televendas, Premiação/Outros
STPS ........... Sorteio, Televendas, Premiação/Sorteio
STPT ........... Sorteio, Televendas, Premiação/Televendas
STPP ........... Sorteio, Televendas, Premiação/Premiação
VA .............. Variedade/Auditório
VF ............... Variedade/Feminino
VGS ............ Variedade/Game Show
VMO ........... Variedade/Making Of
VM .............. Variedade/Musical
15
VO .............. Variedade/Outros
VS ............... Variedade/Show
Figura 10 – Tabela matrixepg no MySQL
3.1.2 Histórico dos Usuários
As planilhas de sintonia enviadas pelo IBOPE contêm os dados dos usuários e foram
modificadas, de forma que técnicas de Filtragem Baseada em Conteúdo pudessem ser
aplicadas. A Figura 11 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 foi
preenchida com o número do canal que aquele indivíduo estava assistindo naquela TV,
naquele horário, naquele dia e naquele domicílio.
16
Figura 11 – Amostra das planilhas de sintonia
Os dados foram, então, separados por domicílios e, apesar de alguns possuírem mais
de uma TV, percebeu-se que não havia registros de monitoramento para mais de uma TV ao
mesmo tempo e, portanto, considerou-se apenas uma TV por domicílio. A Figura 12 apresenta
o modo como os dados foram organizados no momento da separação. A coluna Domicílio
indica o domicílio ao qual pertence aquele indivíduo. A coluna Dia indica o dia da
visualização do programa. A coluna Horário indica a hora de visualização. A coluna
Indivíduo indica qual é o usuário que está assistindo 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, os quais, 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 13.
17
Figura 12 – Planilhas após organização
Figura 13 – Tabela para
armazenamento
Figura 14 – Tabela que resulta da
listagem 1
A partir do campo codigoEmissora, foi possível buscar na tabela codigos_emissoras
qual emissora o usuário estava assistindo. A consulta SQL da Listagem 1 fez essa mescla e,
então, inseriu o resultado em outra tabela, chamada dx_v2, na qual x indica o número do
domicílio. A consulta seleciona os campos da tabela dx_cru quando o código da emissora
nessa tabela for igual ao da tabela codigos_emissoras, ordenando pelo código da emissora da
tabela dx_cru. A Figura 14 apresenta os campos da tabela criada no MySQl.
INSERT INTO d1_v2
SELECT d.id_d1, d.domicilio, d.dia, d.horario, 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
18
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.horario > = e.horaInício) and (d.horario <= e.horaFim))
ORDER BY d.id_users,d.dia,d.horario;
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.
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.horaInício, 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.horario=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
19
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.inícioSintonia) 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 ) )
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.inícioSintonia)) * 60) +
minute(subtime(d.fimSintonia,d.inícioSintonia))) as duracaoS2, d.horaInício,d.horaFim,
d.inícioPrograma, 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
20
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.
Figura 15 – Tabela que contém a
mescla do EPG com o histórico
do usuário
Figura 16 – Tabela com os novos
campos início e fim da sintonia
Figura 17 – Tabela com o
resultado de Subtime()
21
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';
INSERT INTO d1_v8
SELECT d.domicílio, d.id_d1, d.id_users, d.id_epg, d.dia, d.inícioSintonia, d.fimSintonia,
d.duracaoSintonia as duracaoS1, d.duracaoS2, d.diaSemana, @manha as periodo,
d.nomePrograma, d.nomeEmissora, d.descritorGS FROM d1_v7 d
WHERE (inícioSintonia>='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.inícioSintonia, d.fimSintonia,
d.duracaoSintonia as duracaoS1, d.duracaoS2, d.diaSemana, @tarde as periodo,
d.nomePrograma, d.nomeEmissora, d.descritorGS FROM dx_v7 d
WHERE (inícioSintonia>='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.inícioSintonia, d.fimSintonia,
d.duracaoSintonia as duracaoS1, d.duracaoS2, d.diaSemana, @noite as periodo,
d.nomePrograma, d.nomeEmissora, d.descritorGS FROM dx_v7 d
WHERE (inícioSintonia>='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.inícioSintonia, d.fimSintonia,
d.duracaoSintonia as duracaoS1, d.duracaoS2, d.diaSemana, @madrugada as periodo,
d.nomePrograma, d.nomeEmissora, d.descritorGS FROM dx_v7 d
WHERE (inícioSintonia>='00:00:00' and fimSintonia<='06:59:00');
Listagem 7 – Cálculo do período do dia.
22
Figura 18 – Tabela com o campo
duração
Figura 19 – Tabela com o campo dia
da semana.
Figura 20 – Tabela com o campo
período do dia.
Figura 21 – Tabela com a versão
final dos dados.
Em seguida, os dados de cada dia, para cada domicílio, foram salvos em planilhas
CSV para serem utilizados no software Weka (Witten, 2005). Foi necessário salvar os
dados separadamente devido ao processo iterativo que é utilizado na simulação do Weka,
conforme detalhado a seguir.
23
3.2 Metodologia e Simulação
Simulou-se a Filtragem Baseada em Conteúdo com duas técnicas diferentes, Apriori e
Cosseno, ambas usando como atributo alvo o gênero. No caso do Apriori, as
configurações apresentadas na Figura 21 foram aplicadas:
Figura 22 – Configurações Apriori.
Em seguida, começou-se a simulação para o Apriori. Para cada domicílio, o processo
foi o mesmo. Ao fim do primeiro dia, geravam-se recomendações para o segundo dia; no
segundo dia, com base no que foi visto no dia anterior e no dia atual, geravam-se
24
recomendações para o terceiro dia e, assim, consecutivamente. Os seguintes passos foram
executados:
1. Abrir arquivo CSV;
2. Converter alguns atributos de String para Nominal e outros de Numeric para
Nominal (aplicando-se os filtros);
3. Configurar o Apriori;
4. Executar o Apriori;
5. Salvar a saída.
Com os dados salvos, foi possível avaliar se, no dia seguinte àquele, alguém do
domicílio assistiu a algum dos gêneros encontrados pelo Apriori. Para o Cosseno, vários
passos foram necessários, pois esse foi simulado no MySQL. Além das tabelas já
existentes, foi necessário criar mais tabelas para armazenar os resultados gerados pelas
consultas. A tabela recomenda armazena as recomendações geradas, a tabela profile
armazena o perfil gerado e a tabela domicilio_teste, os dados do dia seguinte para a
comparação. Para garantir que os resultados não estivessem errados, sempre ao iniciar o
processo, os dados dessas tabelas eram apagados e, então, inseridos apenas os dados
necessários para aquele dia em particular (Listagem 8). As Figuras 23 e 24 apresentam as
tabelas criadas no MySQL. Os passos abaixo relacionados foram seguidos para a
simulação do Cosseno:
1. Encontrar e salvar o perfil na tabela profile;
2. Calcular a distância;
3. Calcular a norma;
4. Calcular o Cosseno;
5. Verificar se acertou.
O processo também é iterativo, sendo realizado para cada dia e para cada domicílio.
As consultas SQL utilizadas no processo, as quais simulam a geração das recomendações
para um domicílio também são apresentadas a seguir.
25
Figura 23 – Tabela profile Figura 24 – Tabela recomenda
INSERT INTO domicilio_teste SELECT * FROM d1_vf WHERE dia='2008-03-05';
SELECT * FROM domicilio_teste;
DELETE FROM profile;
DELETE FROM recomenda;
Listagem 8 – Inserindo e apagando os dados para a correta avaliação
A Listagem 10 ilustra a consulta SQL utilizada para calcular o perfil do usuário –
gêneros preferidos – a partir dos dados do domicílio e do EPG, quando os descritores são
iguais em ambas as tabelas. São selecionados os gêneros do domicílio e faz-se o seguinte
cálculo:
CAMPOS DAS TABELAS: media (genero) = duracao * genero matrixepg
TABELAS: tabela profile = tabela domicilio_teste * tabela matrixepg
Equação 1 – Cálculo do perfil
INSERT INTO PROFILE
SELECT
avg(ded1), avg(dee1), avg(ed), avg(er),avg(es),avg(f),avg(fo1),avg(h),avg(i),avg(ic1),avg(im1),avg(io1),
avg(ir1), avg(ins1),avg(it1),avg(jd1),avg(jo1),avg(jr1),avg(jt1),avg(n),avg(oda1),avg(oi1),avg(oo1),
avg(op1),avg(our1),avg(rs), avg(sss1),avg(stpo1),avg(stpp1),avg(stps1),avg(stpt1),avg(va1),avg(vf1),
26
avg(vgs1),avg(vmo1),avg(vm1),avg(vo1),avg(vs1)
FROM
(SELECT d.descritorGS,
duracao * DED AS ded1, duracao * DEE AS dee1, duracao * EDED AS ed, duracao * ERER AS er,
duracao * ESES AS es, duracao * FF AS f, duracao * FO AS fo1, duracao * HH AS h,
duracao * II AS i, duracao * IC AS ic1, duracao * IM AS im1, duracao * IO AS io1, duracao * IR AS ir1,
duracao * INS AS ins1, duracao * IT AS it1, duracao * JD AS jd1, duracao * JO AS jo1,
duracao * JR AS jr1, duracao * JT AS jt1, duracao * NN AS n, duracao * ODA AS oda1,
duracao * OI AS oi1, duracao * OO AS oo1, duracao * OP AS op1, duracao * OUR AS our1,
duracao * RSRS AS rs, duracao * SSS AS sss1, duracao * STPO AS stpo1, duracao * STPP AS stpp1,
duracao * STPS AS stps1, duracao * STPT AS stpt1, duracao * VA AS va1, duracao * VF AS vf1,
duracao * VGS AS vgs1, duracao * VMO AS vmo1, duracao * VM AS vm1, duracao * VO AS vo1,
duracao * VS AS vs1
FROM domicílio_teste d, matrixepg m
WHERE d.descritorGS=m.descritorGeneroSubgenero
ORDER BY duracao DESC) AS result;
Listagem 9 – Cálculo do perfil
Em seguida, na Listagem 10, uma variável é criada e configurada a partir dos dados
da tabela profile. O seguinte cálculo é realizado para a norma do perfil:
Equação 2 – Cálculo da norma do perfil
Em que mycprofilenorm corresponde ao cálculo da norma do perfil e gênero
corresponde ao campo da tabela profile que contém o valor calculado na consulta anterior
e indica o gênero do programa (jornalismo, documentário, etc.).
SET @mycprofilenorm = ( SELECT SQRT ( ded1*ded1 + dee1*dee1 + ed*ed + er*er + es*es + f*f +
fo1*fo1 + h*h + i*i + ic1*ic1 + im1*im1 + io1*io1 + ir1*ir1 + ins1*ins1 + it1*it1 + jd1*jd1 + jo1*jo1 +
jr1*jr1 + jt1*jt1 + n*n + oda1*oda1 + oi1*oi1 + oo1*oo1 + op1*op1 + our1*our1 + rs*rs + sss1*sss1 +
stpo1*stpo1 + stpp1*stpp1 + stps1*stps1 + stpt1*stpt1 + va1*va1 + vf1*vf1 + vgs1*vgs1 + vmo1*vmo1 +
vm1*vm1 + vo1*vo1 + vs1*vs1 )
FROM profile ) ;
Listagem 10 – Configuração da variável mycprofilenorm
O passo seguinte calculou a norma da tabela matriz do EPG para cada gênero. A
consulta da Listagem 11 corresponde a seguinte equação:
27
Equação 3 – Cálculo da norma da tabela matrizepg
SELECT descritorGeneroSubgenero,
SQRT ( DED*DED + DEE*DEE + EDED*EDED + ERER*ERER + ESES*ESES + FF*FF + FO*FO +
HH*HH + II*II + IC*IC + IM*IM + IO*IO + IR*IR + INS*INS + IT*IT + JD*JD + JO*JO + JR*JR +
JT*JT + NN*NN + ODA*ODA + OI*OI + OO*OO + OP*OP + OUR*OUR + RSRS*RSRS + SSS*SSS +
STPO*STPO + STPP*STPP + STPS*STPS + STPT*STPT + VA*VA + VF*VF + VGS*VGS + VMO*VMO +
VM*VM + VO*VO + VS*VS) AS norm
FROM matrixepg
GROUP BY descritorGeneroSubgenero
ORDER BY descritorGeneroSubgenero;
Listagem 11 – Cálculo da norma da matrizepg
A Listagem 12 apresenta a consulta SQL da Listagem 11, acrescida do cálculo de dot
e a equação 4 apresenta o cálculo:
Equação 4 – Cálculo de dot
SELECT descritorGeneroSubgenero,
SQRT ( DED*DED + DEE*DEE + EDED*EDED + ERER*ERER + ESES*ESES + FF*FF + FO*FO +
HH*HH + II*II + IC*IC + IM*IM + IO*IO + IR*IR + INS*INS + IT*IT + JD*JD + JO*JO + JR*JR +
JT*JT + NN*NN + ODA*ODA + OI*OI + OO*OO + OP*OP + OUR*OUR + RSRS*RSRS + SSS*SSS +
STPO*STPO + STP*STPP + STPS*STPS + STPT*STPT + VA*VA + VF*VF + VGS*VGS + VMO*VMO +
VM*VM + VO*VO + VS*VS ) AS norm,
( DED*ded1 + DEE*dee1 + EDED*Ed + ERER*er + ESES*es + FF*f + FO*fo1 + HH*h + II*i + IC*ic1 +
IM*im1 + IO*io1 + IR*ir1+ INS*ins1 + IT*it1 + JD*jd1 + JO*jo1 + JR*jr1 + JT*jt1 + NN*n + ODA*oda1
+ OI*oi1 + OO*oo1 + OP*op1 + OUR*our1 + RSRS*rs + SSS*sss1 + STPO*stpo1 + STPP*stpp1 +
STPS*stps1 + STPT*stpt1 + VA*va1 + VF*vf1 + VGS*vgs1 + VMO*vmo1 + VM*vm1 + VO*vo1 +
VS*vs1) AS dot
FROM matrixepg, profile
GROUP BY descritorGeneroSubgenero
ORDER BY dot DESC;
Listagem 12 – Cálculo da norma e dot
A Listagem 13 reúne os cálculos acima, selecionando os nomes dos campos e
calculando o Cosseno:
28
Equação 5 – Cálculo do Cosseno
SELECT descritorGeneroSubgenero, dot/(@mycprofilenorm*norm) AS cos,
DED, DEE, EDED, ERER, ESES, FF, FO, HH, II, IC, IM, IO, IR, INS, IT, JD, JO, JR, JT, NN, ODA, OI, OO,
OP, OUR, RSRS, SSS, STPO, STPP, STPS, STPT,VA, VF, VGS, VMO, VM, VO, VS
FROM
( SELECT descritorGeneroSubgenero, SQRT ( DED*DED + DEE*DEE + EDED*EDED + ERER*ERER +
ESES*ESES + FF*FF + FO*FO + HH*HH + II*II + IC*IC + IM*IM + IO*IO + IR*IR + INS*INS + IT*IT
+ JD*JD + JO*JO + JR*JR + JT*JT + NN*NN + ODA*ODA + OI*OI + OO*OO + OP*OP + OUR*OUR
+ RSRS*RSRS + SSS*SSS + STPO*STPO + STPP*STPP + STPS*STPS + STPT*STPT + VA*VA + VF*VF
+ VGS*VGS + VMO*VMO + VM*VM + VO*VO + VS*VS) AS norm,
(DED*ded1+DEE*dee1+EDED*ed+ERER*er+ESES*es+FF*f+FO*fo1+HH*h+II*i+IC*ic1+IM*im1+IO*
io1+IR*ir1+INS*ins1+IT*it1+JD*jd1+JO*jo1+JR*jr1+JT*jt1+NN*n+ODA*oda1+OI*oi1+OO*oo1+OP*
op1+OUR*our1+RSRS*rs+SSS*sss1+STPO*stpo1+STPP*stpp1+STPS*stps1+STPT*stpt1+VA*va1+VF*vf
1+VGS*vgs1 +VMO*vmo1+VM*vm1+VO*vo1+VS*vs1) AS dot,
DED, DEE, EDED, ERER, ESES, FF, FO, HH, II, IC, IM, IO, IR, INS, IT, JD, JO, JR, JT, NN, ODA, OI, OO,
OP, OUR, RSRS, SSS, STPO, STPP, STPS, STPT, VA, VF, VGS, VMO, VM, VO, VS
FROM matrixepg, profile) AS normdot
GROUP BY descritorGeneroSubgenero
ORDER BY cos DESC;
Listagem 13 – Cálculo do Cosseno
Na Listagem 14, o resultado da consulta é inserido na tabela recomenda.
INSERT INTO recomenda
SELECT nomeEmissora, descritorGeneroSubgenero AS descritorGS, dia, horaInício,
dot/(@mycprofilenorm*norm) AS cos
FROM
( SELECT nomeEmissora, dia, horaInício, descritorGeneroSubgenero, SQRT ( DED*DED + DEE*DEE +
EDED*EDED + ERER*ERER + ESES*ESES + FF*FF + FO*FO + HH*HH + II*II + IC*IC + IM*IM +
IO*IO + IR*IR + INS*INS + IT*IT + JD*JD + JO*JO + JR*JR + JT*JT + NN*NN + ODA*ODA + OI*OI
+ OO*OO + OP*OP + OUR*OUR + RSRS*RSRS + SSS*SSS + STPO*STPO + STPP*STPP + STPS*STPS
+ STPT*STPT + VA*VA + VF*VF + VGS*VGS + VMO*VMO + VM*VM + VO*VO + VS*VS) as norm,
( DED*ded1 + DEE*dee1 + EDED*Ed + ERER*er + ESES*ES + FF*f + FO*fo1 + HH*h + II*i + IC*ic1
+ IM*im1 + IO*io1 + IR*ir1 + INS*ins1 + IT*it1 + JD*jd1 + JO*jo1 + JR*jr1 + JT*jt1 + NN*n +
29
ODA*oda1 + OI*oi1 + OO*oo1 + OP*op1 + OUR*our1 + RSRS*rs + SSS*sss1 + STPO*stpo1 +
STPP*stpp1 + STPS*stps1 + STPT*stpt1 + VA*va1 + VF*vf1 + VGS*vgs1 + VMO*vmo1 + VM*vm1 +
VO*vo1 + VS*vs1 ) AS dot,
DED, DEE, EDED, ERER, ESES, FF, FO, HH, II, IC, IM, IO, IR, INS, IT, JD, JO, JR, JT, NN, ODA, OI,
OO, OP, OUR, RSRS,SSS, STPO, STPP, STPS, STPT,VA, VF, VGS, VMO, VM, VO, VS
FROM matrixepg m, profile p) AS normdot
GROUP BY descritorGeneroSubgenero
ORDER BY cos DESC;
Listagem 14 – Inserção do resultado na tabela recomenda
Por fim, a Listagem 15 ilustra a consulta SQL utilizada para fazer a comparação e
descobrir se algum dos cinco gêneros “recomendados” foi assistido no dia seguinte. Se o
gênero existir na tabela recomenda e na tabela domicílio_teste, então, as recomendações
sugeridas pelo Cosseno estão de acordo com o perfil do usuário.
SELECT r.*, dt.descritorGS
FROM recomenda r, d1_vf dt
WHERE dt.descritorGS = r.descritorGS
GROUP BY r.descritorGS
ORDER BY cos DESC;
Listagem 15 – Comparação entre as tabelas recomenda e d1_vf
30
RESULTADOS
Neste capítulo, os resultados obtidos com a aplicação da técnica de Filtragem Baseada
em Conteúdo nos dados de visualização de TV fornecidos pelo IBOPE são apresentados mais
detalhadamente. A porcentagem de acerto de cada domicílio é apresentada em forma de
gráficos e o modo como esses foram gerados também é explicitado.
Para todos os domicílios, foram feitas planilhas utilizando o Excel que contabilizam
quantos gêneros a consulta SQL de comparação acertou. Como o número de recomendações
geradas foi 5, então, a fórmula base para o cálculo da porcentagem de acerto utilizada foi:
Equação 6 – Fórmula que calcula a 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 para o número de
recomendações geradas, utilizando a seguinte fórmula indicada na equação 7:
Equação 7 – Fórmula que calcula a média da porcentagem de acerto de acordo com o número
de dias monitorados
As Tabelas 6 e 7 apresentam os resultados obtidos para o Apriori após a aplicação das
equações acima. A sigla A indica acertos, a sigla R, recomendações e a D, domicílio. Os
gráficos de 25 a 30 apresentam a média alcançada para cada um dos domicílios nos 14 (não há
informação para o dia 20/03) dias de simulação e a Figura 31 apresenta a média da
4
31
porcentagem de acerto de todos os 6 domicílios com o Apriori. Nota-se que a média total de
acertos não chega a 60%.
Tabela 6 – Resultados do Apriori
D1 D2 D3 D4 D 5 D 6
Dia R. A. % A. % A. % A. % A. % A. %
1 5 1 20% 2 40% 2 40% 2 40% 1 20% 4 80%
2 5 2 40% 2 40% 0 0% 4 80% 2 40% 4 80%
3 5 2 40% 2 40% 1 20% 2 40% 2 40% 4 80%
4 5 2 40% 2 40% 1 20% 2 40% 2 40% 3 60%
5 5 3 60% 2 40% 2 40% 3 60% 2 40% 3 60%
6 5 1 20% 0 0% 1 20% 2 40% 0 0% 2 40%
7 5 2 40% 2 40% 2 40% 4 80% 2 40% 2 40%
8 5 2 40% 2 40% 3 60% 3 60% 2 40% 2 40%
9 5 3 60% 2 40% 3 60% 3 60% 2 40% 3 60%
10 5 4 80% 2 40% 2 40% 2 40% 2 40% 3 60%
11 5 3 60% 2 40% 3 60% 3 60% 2 40% 3 60%
12 5 3 60% 2 40% 1 20% 2 40% 2 40% 3 60%
13 5 0 0% 3 60% 1 20% 3 60% 0 0% 3 60%
14 5 2 40% 3 60% 2 40% 2 40% 2 40% 0 0%
soma 70 30 6 28 5,60 24 4,80 37 7,40 23 4,60 39 7,80
média 5 2,14 43% 2 40% 1,71 34% 2,64 53% 1,64 33% 2,79 56%
Figura 25 – % de acerto Apriori Domicílio 1
32
Figura 26 – % de acerto Apriori Domicílio 2
Figura 27 – % de acerto Apriori Domicílio 3
33
Figura 28 – % de acerto Apriori Domicílio 4
Figura 29 – % de acertoApriori Domicílio 5
34
Figura 30 – % de acertoApriori Domicílio 6
Figura 31 - % de acerto Apriori todos os domicílios
35
A Tabela 7 apresenta os resultados obtidos para o Cosseno pela aplicação das
equações 6 e 7. A sigla A indica acertos, a sigla R, recomendações e a D, domicílio. Os
gráficos de 32 a 37 apresentam a média alcançada para cada um dos domicílios nos 14 dias de
simulação e a Figura 38 apresenta a média da porcentagem de acerto de todos os 6 domicílios
com o Cosseno. Nota-se que a média de acerto aproxima-se de 90%.
Tabela 7 – Resultados do Cosseno
D1 D2 D3 D4 D 5 D 6
Dia R. A. % A. % A. % A. R. A. % A. %
1 5 1 20 2 40 2 40 3 60 2 4% 5 100
2 5 2 40 3 60 2 40 3 60 4 80 5 100
3 5 2 40 4 80 1 20 4 80 2 40 3 60
4 5 4 80 4 80 4 80 4 80 4 80 4 80
5 5 3 60 4 80 4 80 2 40 3 60 3 60
6 5 2 40 2 40 1 20 2 40 1 20 2 40
7 5 3 60 5 100 4 80 5 100 4 80 5 100
8 5 1 20 4 80 2 40 5 100 2 40 5 100
9 5 3 60 5 100 4 80 5 100 4 80 5 100
10 5 5 100 5 100 3 60 3 60 2 40 5 100
11 5 4 80 5 100 2 40 5 100 2 40 5 100
12 5 3 60 4 80 1 20 4 80 2 40 5 100
13 5 2 40 4 80 1 20 2 40 0 0 2 40
14 5 5 100 5 100 4 80 4 80 2 40 5 100
soma 70 40 8 56 11,2 35 7 51 10,2 34 6,8 59 11,8
média 5 2,86 57 4,00 80 2,50 50 3,64 73 2,43 49 4,21 84
Figura 32 – % de acerto Cosseno domicílio 1
36
Figura 33 – % de acerto Cosseno domicílio 2
Figura 34 – % de acerto Cosseno domicílio 3
37
Figura 35 – % de acerto Cosseno domicílio 4
Figura 36 – % de acerto Cosseno domicílio 5
38
Figura 37 – % de acerto Cosseno domicílio 6
Figura 38 – % de acerto Cosseno todos os domicílios
39
As Tabelas 8 e 9 mostram a comparação entre os dois métodos e as Figuras de 39 a 44
apresentam os gráficos que comparam as porcentagens de acerto de cada um dos métodos
para cada domicílio. A Figura 45 ilustra a comparação das médias atingidas para cada
domicílio. Percebe-se que há uma diferença razoável entre as técnicas. A sigla Ac significa
acertos, a sigla C, cosseno e a sigla Ap, Apriori.
Tabela 8 - Comparação entre Apriori e Cosseno domicílios 1-3.
D1 D2 D3
Dia R Ac C Ac Ap Ac C Ac Ap Ac C Ac Ap
1 5 1 20% 1 20% 2 40% 2 40% 2 40% 2 40%
2 5 2 40% 2 40% 3 60% 2 40% 2 40% 0 0%
3 5 2 40% 2 40% 4 80% 2 40% 1 20% 1 20%
4 5 4 80% 2 40% 4 80% 2 40% 4 80% 1 20%
5 5 3 60% 3 60% 4 80% 2 40% 4 80% 2 40%
6 5 2 40% 1 20% 2 40% 0 0% 1 20% 1 20%
7 5 3 60% 2 40% 5 100% 2 40% 4 80% 2 40%
8 5 1 20% 2 40% 4 80% 2 40% 2 40% 3 60%
9 5 3 60% 3 60% 5 100% 2 40% 4 80% 3 60%
10 5 5 100% 4 80% 5 100% 2 40% 3 60% 2 40%
11 5 4 80% 3 60% 5 100% 2 40% 2 40% 3 60%
12 5 3 60% 3 60% 4 80% 2 40% 1 20% 1 20%
13 5 2 40% 0 0% 4 80% 3 60% 1 20% 1 20%
13 5 5 100% 2 40% 5 100% 3 60% 4 80% 2 40%
Soma 70 40,00 8,00 30,00 6,00 56,00 11,20 28,00 5,60 35,00 7,00 24,00 4,80
Média 5,00 2,86 57% 2,14 43% 4,00 80% 2,00 40% 2,50 50% 1,71 34%
Tabela 9 – Comparação entre Apriori e Cosseno domicílios 4-6.
D4 D5 D6
Dia R Ac C Ac Ap Ac C Ac Ap Ac C Ac Ap
1 5 3 60% 2 40% 2 40% 1 20% 5 100% 4 80%
2 5 3 60% 4 80% 4 80% 2 40% 5 100% 4 80%
3 5 4 80% 2 40% 2 40% 2 40% 3 60% 4 80%
4 5 4 80% 2 40% 4 80% 2 40% 4 80% 3 60%
5 5 2 40% 3 60% 3 60% 2 40% 3 60% 3 60%
6 5 2 40% 2 40% 1 20% 0 0% 2 40% 2 40%
7 5 5 100% 4 80% 4 80% 2 40% 5 100% 2 40%
8 5 5 100% 3 60% 2 40% 2 40% 5 100% 2 40%
9 5 5 100% 3 60% 4 80% 2 40% 5 100% 3 60%
10 5 3 60% 2 40% 2 40% 2 40% 5 100% 3 60%
11 5 5 100% 3 60% 2 40% 2 40% 5 100% 3 60%
12 5 4 80% 2 40% 2 40% 2 40% 5 100% 3 60%
13 5 2 40% 3 60% 0 0% 0 0% 2 40% 3 60%
13 5 4 80% 2 40% 2 40% 2 40% 5 100% 0 0%
Soma 70 51 10,20 37 7,40 34 6,80 23 4,60 59 11,80 39 7,80
Média 5 3,64 73% 2,64 53% 2,43 49% 1,64 33% 4,21 84% 2,79 56%
40
Figura 39 – Comparação entre Apriori e Cosseno domicílio 1
Figura 40 – Comparação entre Apriori e Cosseno domicílio 2
41
Figura 41 – Comparação entre Apriori e Cosseno domicílio 3
Figura 42 – Comparação entre Apriori e Cosseno domicílio 4
42
Figura 43 – Comparação entre Apriori e Cosseno domicílio 5
Figura 44 – Comparação entre Apriori e Cosseno domicílio 6
43
Figura 45 – Comparação entre Apriori e Cosseno todos os domicílios
44
RESULTADOS
Durante a execução dos testes, foi possível observar algumas peculiaridades. O sistema
proposto recomenda conteúdos com base nos gêneros dos programas e as análises foram
realizadas de acordo esse parâmetro. Com o algoritmo Apriori, o formato dos dados já é
adequado ao uso. Para o Cosseno, o EPG necessita ser alterado para uma matriz antes de
iniciar o processo de descoberta de perfis e recomendações.
O Apriori é capaz de minerar apenas o histórico de visualização do usuário, descobrindo
o seu perfil a partir das regras. Para selecionar os programas a serem recomendados, outra
técnica deve ser utilizada. O Cosseno, no entanto, pode fazer as duas coisas. Entretanto, o
Apriori consegue descobrir outras características no histórico do usuário, como, por exemplo:
se o usuário permanece na frente da TV com mais frequência no período noturno, se gosta de
ver filmes e se assiste TV com mais frequência na segunda-feira.
O Cosseno não permite descobrir essas características, mas consegue atingir o objetivo.
Para descobrir comportamentos parecidos com os indicados pelas regras de associação, é
necessário fazer consultas mais complexas ao banco de dados.
A saída do Apriori deve ser trabalhada para gerar o perfil correto do usuário, isto é, as
regras devem ser interpretadas, o que em termos de implementação, é algo trabalhoso. A saída
do Cosseno é mais legível; seu resultado ilustra o objetivo pretendido diretamente, permitindo
que a saída seja usada sem a necessidade de um pós-tratamento.
Já em relação à entrada, para o Apriori, não há necessidade de tratamento, já que os
dados serão usados da forma como são coletados. Para o Cosseno, no entanto, sempre que o
EPG for atualizado, a tabela que contém a matriz do EPG deverá ser modificada de acordo
com o novo EPG, o que demanda trabalho extra.
O processo de fornecimento e a aceitação de recomendações, calculando a
porcentagem de acerto e gerando gráficos, foram simulados com duas técnicas. Apesar de
ambas cobrirem as necessidades do sistema, o Cosseno é o que pode ser melhor aproveitado.
O perfil relativo ao gênero encontrado por ambos os algoritmos é semelhante.
5
45
Em um desktop, como foi o caso dos testes realizados, o retorno do cálculo do Cosseno
é mais rápido em relação ao retorno das regras de associação do Apriori. Entretanto, estudos
mais aprofundados a respeito do consumo de processamento desses algoritmos em um celular
com TVDI (Televisão Digital Interativa) ainda não é possível no Brasil, pois. O tempo que
todo o processo de recomendação leva para ser concluído varia de acordo com a técnica de
personalização empregada. Nos testes e nas simulações realizadas, o Cosseno finaliza o
processo antes do Apriori.
Os estudos realizados mostram que, apesar de ambos os algoritmos atenderem às
necessidades, o Cosseno apresenta melhores resultados para aplicação no sistema de
recomendação para TVDPI (Televisão Digital Portátil Interativa).
46
REFERÊNCIAS BIBLIOGRÁFICAS
ABNT 15603-2. Norma Brasileira. Televisão Digital Terrestre – Multiplexação e
serviços de informação (SI) Parte 2: Estrutura de dados e definições da
informação básica de SI. Versão 3, 21/09/2009, 129 páginas.
ADOMAVICIUS, G.; Tuzhilin, A. Towards the Next Generation of
Recommenders Systems: A Survey of the State-of-the-Art and Possible
Extensions. IEEE Transactions on Knowledge and Data Engineering, vol. 17, Issue 6,
p. 734-749, June 2005.
ÁVILA, P. M. Recommender TV: Suporte ao Desenvolvimento de Aplicações de
Recomendação para o Sistema Brasileiro de TV Digital. Dissertação de Mestrado.
90 páginas, 2010.
BÄR, A. et al. A Lightweight Mobile TV Recommender: Towards a One-Click-to-
Watch Experience. In Proceedings 6th European Interactive TV Conference, p.142-
147, Salzburg, Áustria, 03-04/07/2008.
BELKIN, Nicholas J.; CROFT, W. Bruce. Information filtering nad information
retrieval: Two sides of the same coin? In Communications of the ACM, December
1992, vol. 35, Nº 12, p. 29-38.
BOZIOS, T. et al. Advanced Techniques for Personalized Advertising in a Digital
TV Environment: The iMedia System. In Proceedings of the eBusiness and eWork
Conference, p. 1025-1031, IOS press, 2001.
47
CHOI, J. Y.; KOH, D.; LEE, J. Ex-ante simulation of mobile TV market based on
consumers’ preference data. In Proceedings of the Technological Forecasting &
Social Change, p. 1043-1053, 2007.
CHORIANOPOULOS, K. Personalized and mobile digital TV applications. In
Proceedings of the Multimedia Tools and Aplications, p. 1- 10, vol.36, 27 January
2007.
DAS, D. and ter HORST, H. Recommder Systems for TV. In Proceedings of 15 th
AAAI Conference, Madison, Wisconsin, July 1998.
EINARSSON, O. P. Content Personalization for Mobile TV Combining Content-
Based and Collavorative Filtering. Master Thesis. Center for Information and
Communication Technologies. Technical Univesity of Denmark. August 22, 2007.
FOLTZ, W. Peter; Dumais, T. Susan. Personalized Information Delivery: Na
analysis of Information Filtering Methods. In Communications of the ACM,
December 1992, vol. 35, Nº 12, p. 51-60.
GUTTA, S. et al. TV Content Recommender System. In Proceedings of the 17th
National Conference of AAAI, Austin, TX, 2000.
LUCAS, A. Personalização para Televisão Digital utilizando a estratégia de
Sistema de Recomendação para ambientes multiusuário. Dissertação de Mestrado.
103 páginas. 2009.
MAIA, Luiz Cláudio Gomes; SOUZA, Renato Rocha. Medidas de similaridade em
documentos eletrônicos. In Encontro Nacional de Pesquisa em Ciência da
Informação, IX, 28/09-01/10/2008, São Paulo. Anais. USP, 2008. Disponível em:
<http://www.luizmaia.com.br/index2.php?
option=com_docman&task=doc_view&gid=3&Itemid=30>.
Acesso em: 03/10/2008.
48
MARCHI, Késsia Rita de Costa. Sistemas de Recomendação. Uma abordagem
geral. Paraná: UEM/DI/PPG-CC, 2008. 30 p. Seminário. Disponível em:
<http://kessia.blogs.unipar.br/files/2008/07/sistemas-de-recomendacao.pdf.>. Acesso
em: 10/10/2008.
REATEGUI, Eliseo Berni; CAZELLA, Sílvio César. Sistemas de Recomendação. In
25.° Congresso da Sociedade Brasileira de Computação, 22-29/06/2005, Rio Grande
do Sul. Anais do Encontro Nacional de Inteligência Artificial, São Leopoldo:
UNISINOS, 2005. p. 306-348. Disponível
em:<http://www.unisinos.br/_diversos/congresso/sbc2005/_dados/anais/
pdf/arq0287.pdf>. Acesso em: 04/10/2008.
RESNICK, P.; VARIAN, H. R. Recommender Systems. Communications of the ACM,
New York, vol. 40, n. 3, p. 77-87, March 1997.
SILVA, F. S. Personalização de Conteúdo na TVDI Através de um Sistema de
Recomendação Personalizada de Programas de TV (SRPTV). In III Fórum de
Oportunidades em Televisão Digital Interativa, Poços de Caldas, Minas Gerais, Brasil,
2005.
SILVA, S. P., Marcelino. Conceitos, Aplicações e Experimentos com Weka. In
ESCOLA REGIONAL DE INFORMÁTICA, IV, 2004, Rio de Janeiro. Livro da
Escola Regional de Informática Rio de Janeiro. Espírito Santo: 2004, 20p. Disponível
em: <www.dpi.inpe.br/~mpss/artigos/
MineracaoDeDados2004.pdf>. Acesso em: 5/10/2008.
SOLLA, A. G. et al. ZapTV: Personalized User-Generated Content for Handheld
Devices in DVB-H Mobile Newtorks. In Proceedings 6th European Interactive TV
Conference, p.193-203, Salzburg, Áustria, 03- 04/07/2008.
49
TORRES, Roberto. Personalização na Internet. São Paulo: Novatec Editora, 2004.
158p.
URIBE, S. et al. Mobile TV Targeted Advertisement and Content Personalization.
In 16th International Workshop Conference on Systems, Signals and Image
Processing, Chalkida, Greece, 18-19/06/2009.
WITTEN, I. H.; FRANK, E. Data Mining: Practical Machine Learning Tools and
Techniques, 2nd Edition, Morgan Kaufmann, 525 pages, June 2005.
YU, Z. et al. TV program recommendation for multiple viewers based on user
profile merging. In Proceedings of the User Model User-Adap Inter, p. 63-82, 2006.