CAMPO DA INVENÇÃO
A presente invenção refere-se, geralmente, a fornecer a informação personalizada a um usuário com base na identificação de uma tendência em uma corrente de dados.
ANTECEDENTES
Em redes com fio, tais como a Internet, a publicidade na rede forneceu uma fonte relativamente grande de renda para os provedores de conteúdo na rede e outros provedores de serviço. A publicidade na rede in-clui os anúncios direcionados que são apresentados aos usuários específi-cos com base na informação associada aos usuários que indicam que os usuários podem estar interessados nos anúncios direcionados. Uma abor-dagem convencional para extrair a informação associada aos usuários para os fins de anúncios direcionados gerados envolve inserir os circuitos de dis-paro de detecção nos serviços comumente usados, tais como pesquisa na rede, compra online, ou correio eletrônico, e registros de eventos de arma-zenamento por usuário que contêm informação baseada nos circuitos de disparo detectados.
Os registros de eventos podem incluir uma ampla variedade de informação coletada, que inclui tópicos de pesquisa, palavras-chave, locali- zadores uniformes de recurso visitados (URLs), assuntos de correio eletrôni-co, serviços usados, tempo de uso, e assim por diante. As técnicas de extra-ção de dados são, então, aplicadas na informação coletada para extrair in-formação dos registros de eventos para determinar os anúncios-alvo que podem ser de interesse para os usuários correspondentes. Apesar de serem geralmente eficazes na produção de anúncios direcionados, as técnicas de extração de dados convencionais envolvem o armazenamento de uma quantidade relativamente grande de dados, o que requer uma provisão de uma infraestrutura de gerenciamento e armazenamento de dados grande e dis- pendiosa.
Apesar de os anúncios direcionados poderem fornecer uma fonte relativamente grande de renda para os provedores de serviço, a infraes- trutura dispendiosa que pode ter que ser implementada para os fins de extração de dados pode dissuadir alguns provedores de serviço, inclusive os provedores de serviço de redes de comunicações sem fio, a partir da implementação desta oportunidade de renda.
SUMÁRIO
Em geral, de acordo com uma modalidade, um método de fornecer informação personalizada a um usuário inclui receber, em um nó de rede, uma corrente de dados associado ao usuário. Uma tendência associada a pelo menos um atributo na corrente de dados é identificada, e com base na tendência identificada, a informação personalizada é enviada para a apresentação ao usuário em uma estação de usuário.
Outras características ou características alternativas se tornarão evidentes a partir da descrição a seguir, a partir dos desenhos, e a partir das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
A figura 1 é um diagrama em bloco de uma rede de comunicações que inclui uma rede sem fio, na qual um mecanismo para fornecer anúncios direcionados, de acordo com uma modalidade, pode ser incorporado.
A figura 2 é um diagrama em bloco de um nó de comunicações sem fio e um sistema de análise de dados, de acordo com uma modalidade da invenção.
A figura 3 ilustra as estruturas de dados usadas no fornecimento de anúncios direcionados, de acordo com uma modalidade.
As figuras 4 a 6 são diagramas de fluxo de processos de fornecer anúncios direcionados aos usuários na rede sem fio, de acordo com diversas modalidades alternativas.
DESCRIÇÃO DETALHADA
Na descrição a seguir, inúmeros detalhes são estabelecidos pa- ra fornecer uma compreensão de algumas modalidades. No entanto, será compreendido, por aqueles versados na técnica, que algumas modalidades podem ser praticadas sem esses detalhes e que inúmeras variações ou modificações das modalidades descritas podem ser possíveis.
De acordo com algumas modalidades, um mecanismo é fornecido para possibilitar a identificação de informação personalizada que deve ser fornecida a um usuário em uma rede de comunicações (por exemplo, rede de comunicações com fio ou sem fio). Em alguns exemplos, a informação personalizada inclui a informação para a publicidade, onde "informação para a publicidade" refere-se à informação que descreve produtos e serviços que são oferecidos por diversas entidades, tais como pontas de estoque varejistas, varejistas online, organizações educacionais, agências governamentais, e assim por diante. A informação para a publicidade que é selecionada para a apresentação aos usuários é referida como informação para a publicidade direcionada (ou anúncios direcionados). A informação para a publicidade ou anúncios "direcionados" refere-se à informação para a publicidade que pode ser, mais provavelmente, de interesse a um usuário em particular com base na informação associada ao usuário em particular. O fornecimento de informação para a publicidade direcionada aos usuários específicos é tipicamente mais eficaz do que o fornecimento de informação para a publicidade geral a um público amplo.
Um mecanismo, de acordo com algumas modalidades, de extrair informação para os fins de produzir informação para a publicidade direcionada para um usuário em particular (ou grupo de usuários) usa uma técnica que não exige o armazenamento e extração de todos os registros de dados associados ao usuário em particular (ou grupo de usuários). Em vez disso, o mecanismo identifica uma tendência (ou múltiplas tendências) associada a um ou mais atributos de uma corrente de dados. As amostras de dados que são relevantes para a(s) tendência(s) podem ser armazenadas para a análise mais adiante. Os dados restantes podem ser descartados. Desta maneira, a quantidade de dados que tem que ser armazenada para possibilitar a provisão de anúncios direcionados é reduzida de maneira significativa. A infraestrutura de gerenciamento e armazenamento de dados que tem que ser fornecida para permitir a extração de dados para fornecer os anúncios direcionados pode ser menos complexa e então, menos dispendiosa.
Usando-se o mecanismo de acordo com algumas modalidades, um provedor de serviço em uma rede de comunicações sem fio é capaz de levar vantagem quanto às oportunidades de renda aumentadas ao fornecer anúncios direcionados. Um provedor de serviço de uma rede de comunicações sem fio refere-se à entidade que gerencia e fornece serviços de comunicações na rede de comunicações sem fio.
Geralmente, de acordo com algumas modalidades, um nó na rede de comunicações sem fio recebe uma corrente de dados associado a um usuário. Uma tendência associada a pelo menos um atributo na corrente de dados é identificada, e baseada na tendência identificada, a informação personalizada (por exemplo, informação para a publicidade direcionada) é enviada para a apresentação ao usuário em uma estação móvel. Uma "tendência" refere-se a um nível de uso ou de atividade associado a um usuário em particular (ou grupo de usuários) que excede algum limite predefinido.
Na discussão subsequente, faz-se referência ao fornecimento de informação para a publicidade direcionada a um usuário. No entanto, as mesmas técnicas ou técnicas similares podem ser aplicadas para apresentar outras formas de informação personalizada a um usuário. Também, apesar de se fazer referência ao fornecimento de informação personalizada a uma estação móvel associada a um usuário em uma rede de comunicações sem fio, nota-se que a informação personalizada também pode ser fornecida a uma estação de usuário em uma rede com fio.
A figura 1 ilustra uma rede de comunicações exemplificativa que inclui uma rede de comunicações sem fio 100 e uma rede de dados 102. A rede de dados 102 pode ser uma rede de dados em pacote, tal como a Internet, ou algum outro tipo de rede de dados. Os terminais com fio 104 são conectados à rede de dados 102. Os exemplos dos terminais 104 incluem computadores, celulares com Internet, servidores (por exemplo, servidores de rede ou outros servidores de conteúdo), e assim por diante.
A rede de comunicações sem fio 100 inclui uma estação base 106 que é conectada a um controlador de rede central 108, o qual, sucessivamente, é conectado à rede de dados 102.
A estação base 106 é capaz de se comunicar sem o uso de fio através de um enlace sem fio 110 (por exemplo, enlace de radiofrequência) com uma estação móvel 112 que está dentro da área de cobertura da estação base. A estação base 106 pode, de fato, ser implementada com múltiplos nós, inclusive uma estação transceptora base (BTS) que possui uma ou mais antenas para desempenhar a comunicação sem fio com a estação móvel 112. A estação base 106 também pode incluir um controlador de estação base ou controlador de rede sem fio que fornece as tarefas de controle associadas às comunicações com as estações móveis. O controlador de rede central 108 gerencia a comunicação entre a rede de comunicações sem fio 100 e uma rede externa, tal como a rede de dados 102, e também gerencia as comunicações entre as estações móveis na rede de comunicações sem fio 100. Apesar de apenas uma estação base 106 ser retratada, nota-se que uma típica rede de comunicações sem fio 100 incluirá muitas estações base para as respectivas áreas de cobertura (por exemplo, células) na rede sem fio.
A tecnologia de acesso sem fio da rede de comunicações sem fio 100 pode ser qualquer uma ou mais das seguintes: Sistema Global para Celular (GSM) definido pelo Projeto de Parceria da Terceira Geração (3GPP); Sistema de Telecomunicações Móveis Universal (UMTS), definido pela 3GPP; Acesso Múltiplo por Divisão de Código 2000 (CDMA 2000), definido pelo Projeto de Parceria da Terceira Geração 2 (3GPP2); Evolução a Longo Prazo (LTE) definido pelo 3GPP, que busca intensificar a tecnologia UMTS; Interoperabilidade Mundial para Acesso de Micro-ondas (WiMAX), conforme definida pelo IEEE (Instituto de Engenheiros Eletricistas e Eletrônicos) 802.16; e outros.
Um usuário associado à estação móvel 112 pode desempenhar diversas comunicações (por exemplo, comunicações por voz ou comunicações por dados) usando-se a estação móvel 112. Por exemplo, o usuário pode se comunicar com um outro usuário na rede de comunicações sem fio 100. Alternativamente, o usuário pode se comunicar com um usuário associado com um computador ou telefone conectado à rede de dados 102. Ainda como um outro exemplo, o usuário pode usar a estação móvel 112 para desempenhar a navegação na rede, que inclui acessar locais da rede na rede de dados 102 para desempenhar atividades de pesquisa, atividades de compra online, e outras atividades.
Um nó na rede de comunicações sem fio 100 ou associado a ela pode monitorar a corrente de dados associado a várias comunicações que são desempenhadas pela estação móvel 112 para identificar quaisquer tendências associadas a um ou mais atributos na corrente de dados. Os anúncios direcionados podem ser produzidos com base nas tendências identificadas.
O nó que pode ser usado para monitorar a corrente de dados para detectar as tendências pode ser qualquer um dos nós na rede de comunicações sem fio 100, inclusive na estação base 106 ou no controlador de rede central 108. Alternativamente, um outro nó na rede de comunicações sem fio 100 ou associado a ela pode ser usado para monitorar a corrente de dados associado a cada usuário na rede de comunicações sem fio 100. Tal nó é referido como um "nó de comunicações sem fio".
A figura 2 retrata o nó de comunicações sem fio representado geralmente como 200. O nó de comunicações sem fio 200 possui um módulo de detecção de tendência 202 (para desempenhar um algoritmo de detecção de tendência) que é executável em uma ou mais unidades centrais de processamento (CPUs) 204 no nó de comunicações sem fio 200. A(s) CPU(s) 204 é (são) conectada(s) a um depósito 206.
O módulo de detecção de tendência 202 recebe uma corrente de dados "contínua" 208 associado a várias comunicações desempenhadas pelos diversos usuários na rede de comunicações sem fio 100. Cada caixa na corrente de dados 208 retratada na figura 2 pode representar um pacote de dados. Uma corrente de dados "contínua" refere-se a um fluxo (ou fluxos) de pacotes de dados que é (são) continuamente recebido(s) pelo nó de co- municações sem fio 200 desde que os dados estejam sendo comunicados. Se não houver dados sendo comunicados, então, a corrente de dados contínua seria temporariamente interrompida. O pacote de dados pode conter algum identificador (tal como um identificador de nó móvel, identificador de usuário, ou algum outro tipo de identificador associado a um usuário da estação móvel) para distinguir os pacotes de dados associados aos diferentes usuários correspondentes.
O módulo de detecção de tendência 202 monitora o próximo item disponível na corrente de dados contínua 208. O módulo de detecção de tendência 202 analisa, então, o item, identifica um usuário correspondente, e então, determina se o item é associado a uma tendência em particular (ou tendências). Se for, uma estrutura de dados de tendência 212 armazenada no depósito 206 pode ser atualizada, onde a estrutura de dados de tendência 212 é usada para armazenar a informação sobre a tendência e as amostras de dados associados a cada tendência.
Os itens de dados que não são relacionados a qualquer tendência identificada pelo módulo de detecção de tendência 202 podem ser descartados (os itens de dados descartados são representados como 214 na figura 2). Os itens de dados descartados não têm que ser armazenados pelo módulo de detecção de tendência 202, o qual reduz o tamanho e a complexidade do subsistema de armazenamento necessário para suportar o algoritmo de detecção de tendência e o algoritmo de anúncio direcionado, de acordo com algumas modalidades.
Ao identificar uma tendência (ou tendências), a informação para a publicidade direcionada pode ser desenvolvida com base em tal(is) ten- dência(s). em um exemplo, uma tendência pode ser a que uma porcentagem relativamente alta de chamadas de um usuário específico se origine de uma localização específica (por exemplo, cidade, vizinhança, célula, etc.). Em resposta à detecção de tal tendência geográfica, a informação para a publicidade direcionada pode ser gerada, a qual se refere à localização específica (por exemplo, anúncio direcionado relacionado aos varejistas na localização específica). Uma outra tendência refere-se às visitas relativamente fre- quentes por um usuário de um número máximo (por exemplo, 10) de locais da rede. Os locais da rede frequentemente visitados podem, então, ser usados para inferir um interesse do usuário, a partir do qual os anúncios direcionados podem ser desenvolvidos. Uma outra tendência que pode ser detectada é uma tendência com base tanto no tempo quanto na localização de sessões de comunicações. Por exemplo, um usuário pode ter a maioria das chamadas diurnas em uma localização e a maioria das chamadas noturnas em uma outra localização. Com base nisto, os anúncios direcionados com base tanto no tempo quanto na localização podem ser apresentados. Uma outra tendência que pode ser detectada envolve uma tendência baseada em pessoas que recebem, frequentemente, chamadas de um usuário. Este "círculo de amigos" pode ser usado para identificar uma comunidade potencial de usuários com interesses e demográficos similares, a partir do que os anúncios direcionados podem ser produzidos.
A figura 2 também mostra um sistema de análise de dados 216 que inclui um módulo de anúncio direcionado 218 que acessa uma estrutura de dados de tendência 220 que contém informação relacionada às tendências, a qual é armazenada no depósito 222. O módulo de anúncio direcionado 218 pode ser um módulo de software executável em uma ou mais CPUs 224 do sistema de análise de dados 216. O módulo de anúncio direcionado 218 gera anúncios direcionados a serem enviados para a apresentação aos usuários com base na informação na estrutura de dados de tendência 220. A estrutura de dados de tendência 220 pode ser uma cópia da estrutura de dados de tendência 212 contida no depósito 206 do nó de comunicações sem fio 200.
Apesar de o módulo de detecção de tendência 202 e o módulo de anúncio direcionado 218 serem retratados em dois sistemas separados na figura 2, nota-se que esses dois módulos podem ser executados no mesmo sistema, por exemplo, no nó de comunicações sem fio 200 ou no sistema de análise de dados 216.
De acordo com algumas modalidades, a detecção de tendência é baseada nas seguintes suposições: A = a quantidade de atributos (por exemplo, atributo de localização, atributo de tempo, atributo de local de rede, etc.) que o módulo de detecção de tendência 202 é configurado para reconhecer; U = a quantidade de usuários cujos dados estão presentes na corrente de dados contínua 208; e T = a quantidade de tendências que o módulo de detecção de tendência 202 é configurado para detectar.
O conjunto de atributos que o módulo detector de tendência 202 pode reconhecer é definido como um conjunto enumerado, conforme segue:
Alguns atributos aj possuem valores possíveis que são separados e não organizados em qualquer relação hierárquica. Estes são chamados de atributos planos. Os exemplos de atributos planos incluem dias da semana e palavras-chave específicas.
Alguns atributos não são planos, mas em vez disso, possuem valores que representam uma hierarquia. Existem muitos exemplos de atributos hierárquicos, tais como a localização geográfica, endereços de IP, e marcas de tempo. Uma localização geográfica é hierárquica, porque a localização de um usuário pode ser indicada como uma região geográfica maior (por exemplo, estado) ou uma região geográfica menor (por exemplo, cidade, vizinhança). Uma cidade é localizada em um estado, um estado é localizado em um país, e assim por diante, o que fornece uma hierarquia de relações entre as diferentes localizações.
Os atributos hierárquicos podem ser representados ao usar uma notação similar ao modo no qual os endereços de IP (Protocolo de Internet) são representados; especificamente: a = a1, a2,...ah , onde a profundidade da hierarquia é h e h > 0.
Os atributos hierárquicos podem ter valores que são totalmente qualificados (por exemplo, endereço de IP 47.99.88.77) ou eles podem ser parcialmente qualificados (por exemplo, 47.*.*.*).
Os usuários do sistema são representados como: Usuários = {ui |0 ≤ i ≤ U}.
Uma tendência t é definida como a interseção de um ou mais atributos. Uma tendência composta de um atributo é chamada de uma tendência unidimensional, e é representada como: tk1 = aj onde 0<j<A.
Geralmente, uma tendência que é criada ao intersectar d atributos é chamada de uma tendência dimensional d, e é representada por: tkd = ajl O ... O ajd onde 0 ≤ j ≤ A e d > 0.
A quantidade de dimensões em uma tendência pode ser qualquer valor inteiro positivo. Um exemplo de uma tendência bidimensional pode ser uma tendência com base tanto no tempo quanto na localização. Em algumas implementações exemplificativas, o módulo de detecção de tendência 202 é configurado para reconhecer um conjunto relativamente pequeno de tendências de valor alto T (as tendências mais interessantes com base em alguns critérios predefinidos). Este conjunto de tendências configuradas é descrito como: Tendências = {tkd |0 < k ≤ T, d > 0}.
O módulo de detecção de tendência 202 observa uma corrente de dados (208), e sem ter que armazenar todos os registros de uso individuais, detecta as tendências associadas a cada usuário.
A definição de uma tendência irá variar para diferentes atributos, e para diferentes aplicações. Por exemplo, para uma aplicação de propaganda móvel, o fato de que um usuário faz 70% de suas chamadas móveis a partir da mesma localização durante as horas comerciais normais pode ser suficiente para identificar uma tendência. No entanto, para outros atributos ou outras aplicações, as porcentagens podem não ser importantes. Por exemplo, uma tendência para um portal do provedor de serviço de Internet pode ser definida como o conjunto de enlaces que um usuário clicou mais de uma vez.
Em algumas modalidades, as tendências podem ser um dos tipos a seguir: uso baseado em porcentagem; uso baseado em cardinalidade; uso baseado em intervalo; e uso baseado em volume. Uma tendência do tipo uso baseado em porcentagem refere-se a uma tendência que é identificada com base em um nível de atividade ou uso que excede algum limite de porcentagem. Uma tendência do tipo uso baseado em cardinalidade refere- se a uma tendência que é identificada com base em um nível de atividade ou uso que excede algum limite de tamanho. Uma tendência do tipo uso baseada em intervalo refere-se a uma tendência que é identificada com base em um limite de tempo, e uma tendência do tipo uso baseado em volume refere- se a uma tendência que é identificada com base em um limite de volume. Nota-se que os tipos listados acima não são exaustivos, à medida que outros tipos de tendências podem ser usados em outros domínios.
Cada tendência pode ser associada a uma função de tendência, a qual é executada para detectar a tendência correspondente. A função da tendência pode ser implementada com o código de software, por exemplo. Cada tendência pode ter um ou mais limites específicos que demarcam os valores da tendência. Por exemplo, um limite pode indicar se uma tendência está ou não presente: um valor que excede (maior do que ou menor do que) o limite é indicativo de que a tendência está presente, enquanto um valor que não excede o limite indica que uma tendência não está presente. Alternativamente, múltiplos limites podem ser especificados; por exemplo, um primeiro limite pode especificar uma tendência menor, e um segundo limite pode especificar uma tendência maior. Em um exemplo, um indicador referido como "Trend_Indicator" pode ter o seguinte valor: Trend_Indicator = {nenhuma tendência, tendência menor, tendência maior, ignorada}, onde "nenhuma tendência" indica que nenhuma tendência foi detectada, "tendência menor" indica que uma tendência menor foi detectada (uso excede o primeiro limite), "tendência maior" indica que uma tendência maior foi detectada (uso excede o segundo limite), e "ignorada" indica que esta tendência deve ser ignorada.
Neste exemplo, uma tupla de limite de tendência de dois limites de tendência pode ser definida para representar as fronteiras que demarcam os valores de tendência menor e maior: Trend_Thold = (Tipo de Tendência, menor, maior), onde 0 < menorib < mai- or1b, menor1b é o limite de tendência menor, maior1b é o limite de tendência maior, e Tipo de Tendência e {porcentagem, cardinalidade, intervalo ou volume}.
Alternativamente, um resultado de tendência normalizada pode ser usado em vez do mapeamento para valores finitos.
Como uma alternativa, o indicador de tendência, Trend_Indicator, pode ter valor {nenhuma tendência, tendência, ignorada} se o conceito de "menor" e "maior" tendências não for usado.
Em algumas implementações, um vetor de tendência pode ser definido por cada usuário, quem está sendo analisado pelo módulo de detecção de tendência 202. A finalidade do vetor de tendência é identificar todos os atributos que estão sendo monitorados para aquele usuário, o valor de tendência associado a cada um desses atributos, e um apontador para os dados que resumem aquela tendência.
Cada elemento em um vetor de tendência é a Trend_Element, conforme definido abaixo: Trend_Element = {Trend_Indicator, Trend_data pointer}, onde a Trend_Indicator é definido acima, e a Trend_data pointer é um apontador (por exemplo, endereço, identificador de localização, localizador uniforme de recurso, etc.) para uma localização de amostras de dados re-presentativas da tendência correspondente.
Um vetor de tendência é definido como um arranjo de Trend_Elements, com um elemento para cada tendência que é observado pelo módulo de detecção de tendência 202: Trend_Vector = arranjo[k] da Trend_Elements, 0 < k < T.
Com esta estrutura, é possível para uma aplicação que requer a informação sobre a tendência para um usuário, determinar rapidamente o conjunto de tendência(s) para aquele usuário. Por exemplo, uma aplicação de propaganda móvel (por exemplo, módulo de anúncio direcionado 218 na figura 2) que deseja direcionar os anúncios a um usuário específico pode usar a(s) tendência(s) que foi(foram) detectada(s) a partir do histórico de uso do usuário, e pode selecionar a informação para a publicidade que melhor combina com as preferências e interesses daquele usuário. Isso pode ser alcançado ao fazer uma varredura da Trend_Vector do usuário, determinar a(s) tendência(s) do usuário, selecionar uma tendência de interesse, e recu-perar os dados de tendência correspondente.
Nota-se que a Trend_Vector pode suportar muitos algoritmos de seleção diferentes, dependendo de como a aplicação deseja priorizar as di-ferentes tendências, ou como a aplicação deseja lidar as tendências maior contra a menor.
Apesar de varias estruturas serem discutidas acima para permitir a identificação de tendências, nota-se que, nas implementações alternativas, outros tipos de estruturas podem ser usados no lugar delas.
O problema de encontrar tendências em uma corrente de dados contínua é relativamente fácil de compreender para os atributos planos, e envolve, primariamente, contar ocorrências de valores específicos de atribu-to. No entanto, o problema se torna mais complexo quando lida com atributos hierárquicos, uma vez que ele se torna necessário para determinar o nível na hierarquia na qual as tendências ocorrem. Também é necessário de-terminar se o número de ocorrências em um nível em particular na hierarquia é uma tendência ou se é influenciado pelo fato de que um de seus antepas-sados é uma tendência. Os exemplos na seção seguinte ajudam a ilustrar a dificuldade de encontrar tendências em atributos hierárquicos.
Em um exemplo, os atributos seguintes são considerados: • Dia da Semana (DOW): atributo plano com valores Dom, Seg., Ter, Qua, Qui, Sex e Sáb; • Localização (Loc): atributo hierárquico com valores da forma pa- ís.província/estado.cidade.vizinhança.rua; • Marca de tempo (Tempo): atributo hierárquico com valores da forma ano.mês.dia.hora.minuto; • URL Visitada (URL): as URLs são, por definição, hierárquicas, então é possível tratar isto como um atributo hierárquico. No entanto, para os fins da aplicação de propaganda móvel, é provavelmente mais interessante considerar as URLs totalmente qualificadas (nome do hospedeiro e domínio). Por esta razão, uma URL pode ser tratada como um atributo plano.
No exemplo acima, A = 4, e Atributos = {DOW, Loc, Tempo, URL}. As seguintes tendências unidimensionais são consideradas: URL; Loc; Tempo; e DOW.
Também, as seguintes tendências bidimensionais são consideradas: Loc e Tempo; e Loc e DOW. Assim, T = 6, e Tendências = {Loc, URL, Tempo, DOW, Loc n Tempo, Loc n DOW }.
A tendência URL pode ser definida como baseada em cardinalidade, com os seguintes limites: Nenhuma Tendência: < 2 visitar a uma URL, Tendência menor: > 2, mas < 5 visitas a uma URL, Tendência maior: > 5 visitas a uma URL.
Quanto ao exemplo acima, a tupla de limite de tendência URL, Trend_Thold URL, é conforme segue: Trend_Thold URL = (cardinalidade, 2, 5).
De maneira similar, para a Loc, os limites de tendência podem ser definidos conforme segue: Nenhuma tendência: < 5% de tráfego a partir de uma localização específica, Tendência menor: > 5%, mas < 20% de tráfego a partir de uma localização específica, Tendência maior: > 20% de tráfego a partir de uma localização específica. Esta tupla de limite pode ser representada como: Trend_Thold Loc = (porcentagem, 5%, 20%).
Os seguintes limites de tendência são especificados para os ou- tros limites conforme segue: Trend_Thold Time = (porcentagem, 20%, 50%) Trend_Thold DOW = (volume, 1M, 10M) Trend_Thold Loc e Tempo = (porcentagem, 10%, 20%) Trend_Thold Loc e Dow = (porcentagem, 10%, 20%).
A figura 3 mostra um Trend_Vector para o exemplo acima. Nota- se que um Trend_Vector inclui uma quantidade de Trend_Elements, onde cada Trend_Element contém um Trend_Indicator e um Trend_data pointer. Na figura 3, um Trend_Element 302 é fornecido para a tendência URL, um Trend_Element 304 é fornecido para a tendência Loc, e um Trend_Element 306 é fornecido para a tendência Loc A DOW.
A Trend_Element 302 para a tendência URL possui um valor Trend_Indicator de "maior-tendência," que indica que uma tendência maior foi identificada para a tendência URL. A Trend_data pointer 303 para a Trend_Element de URL302 aponta para uma estrutura de dados 308 que lista diversas URLs e número de visitas associados. Assim, o usuário visitou a URL www.cbc.ca 9 vezes, e visitou a www.canada.com 8 vezes. O usuário também visitou www.ottawa.ca 2 vezes, www.yahoo.com 1 vez, e www.google.ca 5 vezes. Com base nos limites maior e menor exemplificati- vos no exemplo acima, três dos locais de rede visitados acima são representativos de tendências maiores: www.cbc.ca; www.canada.com; e www.google.ca. A partir da tendência URL, uma aplicação de publicidade na rede pode inferir informação específica sobre o usuário. Por exemplo, a aplicação de publicidade na rede pode inferir que o usuário seja um residente canadense, o usuário está mais interessado em conteúdo canadense, e o usuário está interessado em notícias canadenses. A tendência URL do usuário também contém alguns atributos que não são tendências maiores, mas podem ser parte de uma tendência menor. No exemplo acima, uma tendência menor é www.ottawa.ca. Apesar desta informação sobre a tendência não ser dominante o suficiente para inferir uma tendência específica nos dados, pode ser útil para refinar ainda mais as tendências maiores que foram descobertas. Por exemplo, no exemplo acima, a aplicação de publicidade na rede pode usar a tendência menor para selecionar os anúncios que atraem os residentes de Ottawa que usufruem do conteúdo relacionado às notícias.
O exemplo da figura 3 também mostra uma tendência hierárquica Loc. A Trend_Element 304 para a tendência Loc possui uma Trend_data pointer 305 que aponta para uma estrutura de dados 310. Uma vez que a tendência Loc é uma tendência hierárquica, a estrutura de dados 310 que é apontada pela Trend_data pointer 305 pode ser representada como uma estrutura do tipo árvore.
Na figura 3, o nível máximo da estrutura do tipo árvore 310 representa o Canadá (que indica que houveram atividades limitadas (por exemplo, chamadas) relacionadas ao Canadá). Os níveis mais inferiores da estrutura do tipo árvore 310 indicam as atividades relacionadas às províncias, cidades, e outras regiões geográficas menores no Canadá. O limite de tendência para esta tendência pode ser configurado como: Trend_TholdLoc = (porcentagem, 5%, 20%).
O número associado a cada nó na estrutura do tipo árvore 310 indica a porcentagem de tráfego foi originada a partir da localização correspondente. Por exemplo, 100% do tráfego originado no Canadá, 61% se originou em Ottawa, e assim por diante. Identificar uma tendência para um nó da folha (nós da folha "Main," "Carp," "Moodie," "Carling," e "Mont-Bleu") é relativamente fácil. As contagens nos nós da folha podem ser diretamente comparadas com os limites Trend_TholdLoc. Para os nós da folha, apenas a localização "Carp" é identificada como uma tendência maior (uma vez que 28% é maior do que 20%).
Com relação aos níveis superiores da estrutura do tipo árvore 310, a detecção de tendência pode se tornar um pouco mais difícil. Por exemplo, uma determinação tem que ser feita se a vizinhança "Stittsville," associada a uma ocorrência que corresponde a 38%, for considerada uma tendência maior. Nota-se que o valor alto de 38% para a localização "Stitts- ville" é baseado, em grande parte, no valor relativamente grande (28%) para a localização "Carp". Se a contagem de um descendente de tendência maior, tal como "Carp," for removida da contagem do antecessor, "Stittsville," então o "Stittsville" tem uma pontuação de apenas 10%, o que não representa uma tendência maior. Neste caso, em algumas implementações, a localização "Stittsville" não será identificada como correspondente a uma tendência maior. No entanto, em uma implementação diferente, a localização "Stittsville" pode ser identificada como correspondente a uma tendência maior mesmo que tal tendência maior seja ocasionada por um descendente que é associado a uma contagem alta.
Um outro exemplo na estrutura do tipo árvore é um nó de nível mais alto que corresponde à cidade Outaouais, que possui uma contagem de 39%. No entanto, nota-se que os descendentes da localização Outaouais incluem uma localização vizinha Gatineau, que possui apenas um descendente na forma de uma rua Mont-Bleu. Neste cenário, seria mais apropriado identificar a cidade Outaouais como correspondente a uma tendência maior e não seus descendentes.
A determinação de se uma tendência está presente está no contexto de um intervalo de amostragem definido como um período de coleta (P) durante o qual o módulo de detecção de tendência 202 observa a corrente de dados contínua com a finalidade de detectar tendências. Existem diferentes modos nos quais o período de coleta P pode ser medido, tal como um intervalo de tempo, uma quantidade de eventos observada, e assim por diante. O período de coleta P deve ser suficientemente grande para garantir que amostras suficientes sejam tiradas para reconhecer uma tendência. Se o período de coleta P for muito curto, os resultados da tendência podem ser distorcidos por eventos refinados, e podem não descrever propriamente a tendências.
As tendências devem ser evidentes no fim do período de coleta P. Antes de seguir para o próximo período de coleta, o módulo de detecção de tendência 202 (figura 2) normaliza os dados observados durante o último período de coleta P, como se o processo de detecção de tendência tivesse concluído. Isso permite que as estruturas de dados de tendência forneçam uma perspectiva de tendência atualizada, que pode, então, ser usada para fazer as posições de seleção de anúncio. Após o período de coleta inicial, as estruturas de dados podem fornecer duas visualizações dos dados: (1) uma predição exata de tendências, com base em períodos de observação anteriores; e (2) um resumo de observações recentes, durante um período de observação atual.
A normalização que pode ser desempenhada no fim de cada período de coleta P inclui converter as contagens em porcentagens ou probabilidades, ou outras tarefas de normalização. A normalização pode ser desempenhada por uma função Normalizar(). A função Normalizar() também é responsável por suprimir uma estrutura do tipo árvore de tendência (para uma tendência hierárquica) para remover quaisquer dados de ocorrência pequena que não constituam uma tendência. Isso é desejável uma vez que irá prevenir que eventos que ocorrem de maneira não frequente se agreguem com o tempo e pareçam, de maneira falsa, como uma tendência depois de algum longo período de tempo.
Existe uma possibilidade de que o algoritmo de detecção de tendência possa envolver alguma quantidade de erro devido aos falsos positivos. Por exemplo, o algoritmo de detecção de tendência pode estimar, incorretamente, que uma tendência está presente com base em algumas poucas observações. No entanto, à medida que mais observações são coletadas, em períodos de coleta adicionais, o algoritmo de detecção de tendência pode perceber que essas observações não representam uma tendência. Se esses erros não forem removidos das estruturas de dados, então essas observações errôneas poderiam se agregar com o tempo, e podem parecer, de modo incorreto, como tendências maiores. Para evitar tais erros, as estruturas de dados podem ser examinadas e quaisquer erros ou inexatidões podem ser removidos.
Uma função Condensar() pode ser definida para examinar uma estrutura de dados de tendência para detectar quaisquer inexatidões, e re-estruturar a estrutura de dados conforme apropriado. Um intervalo de condensar pode ser definido para indicar o intervalo no qual a função Conden- sar() deve desempenhar sua detecção de erro e tarefas de re-estruturação. Os tamanhos relativos de P e C irão variar dependendo da aplicação em particular. P pode ser a mesma que C, P pode ser menor que C, ou P pode ser maior que C.
O algoritmo de detecção de tendência também pode definir uma função Atualizar(), que é responsável por fazer a observação de corrente de dados mais recente, e armazenar as observações de corrente de dados em uma estrutura de dados de tendência do usuário (por exemplo, estrutura de dados de tendência 212 na figura 2). Esta etapa irá envolver, tipicamente, fazer predições sobre se um evento observado é parte de uma tendência, e ajustar a estrutura de dados de maneira apropriada.
A figura 4 retrata a detecção de tendência desempenhada pelo módulo de detecção de tendência 202 da figura 2, para um atributo que cor-responde a uma tendência plana. À medida que a corrente de dados contínua é recebida, uma contagem de tendência é atualizada (em 402) se um pacote de dados for recebido, ou seja, corresponde à tendência. Por exemplo, se um pacote de dados for recebido, que indica que o usuário visitou uma URL em particular, então a contagem para a tendência URL correspondente pode ser acrescida. A atualização pode ser desempenhada pela função Atualizar() discutida acima.
Nota-se também que a estrutura de dados de tendência (212 na figura 2) associada à tendência também pode ser atualizada (em 403). Por exemplo, a função Atualizar() pode especificar que algumas amostras de cada tendência podem ser coletadas.
O módulo de detecção de tendência 202 também pode normalizar (em 404) as contagens e remover a informação sobre a nãotendência a partir da estrutura de dados de tendência, tal como ao usar a função Norma- lizar() observada acima. Normalizar envolver converter contagens brutas de porcentagens, por exemplo, ou outros tipos de normalização. Com base nas contagens normalizadas, o módulo de detecção de tendência 202 identifica (em 406) as tendências menores ou maiores com base nos limites de tendência. A estrutura de dados de tendência é atualizada para refletir quaisquer tendências menores/maiores identificadas. O processo acima é repetido (em 408) durante o período de co- leta P presente.
Para uma tendência hierárquica, diversos algoritmos diferentes possíveis podem ser usados. Um algoritmo positivo é retratado na figura 5. O algoritmo positivo atualiza uma estrutura do tipo árvore (por exemplo, 310 na figura 3) para a tendência hierárquica de uma maneira de cima para baixo. Inicialmente, um nó é adicionado à estrutura de dados do tipo árvore (em 502) no nível atualmente mais geral. No começo, o nível atualmente mais geral é o nível da raiz da estrutura do tipo árvore. No entanto, à medida que este processo iterativamente avança para baixo na estrutura do tipo árvore, o nível atualmente mais baixo pode ser um nível inferior.
Com base nos itens de dados recebidos, este nó adicionado é atualizado (em 504), tal como ao usar a função Atualizar() até que um limite de tendência maior seja cruzado. Em outras palavras, ao usar a abordagem de cima para baixo, os nós de nível inferior na estrutura do tipo árvore não são adicionados à estrutura de dados do tipo árvore até que um nó de nível mais alto indique que ocorreu uma tendência maior.
Uma vez que um nó de tendência maior é identificado, os nós abaixo este nó de tendência maior nó são construídos (em 506). A informação sobre a nãotendência é suprimida (em 508), tal como ao usar a função Normalizar(). O processo se repete (em 510) durante o período de coleta P para, progressivamente, atualizar os nós da estrutura do tipo árvore.
Com a abordagem otimista, novos nós são adicionados à estrutura do tipo árvore de tendência se tais nós estiverem abaixo de um nó associado às tendências maiores. No entanto, a abordagem otimista pode omitir os nós. Para direcionar isso, um algoritmo de predição pode ser usado para predizer os nós que podem ser nós de tendência maior, e tais nós pre- ditivos podem, então, ser adicionados à estrutura do tipo árvore de tendência. Tais predições podem ser desempenhadas pela função Condensar(), por exemplo. Quaisquer nós preditos incorretamente podem ser suprimidos mais tarde pela função Normalizar().
A abordagem otimista é eficiente quanto à maneira computacional, uma vez que os nós de nível inferior não são adicionados na estrutura do tipo árvore de tendência até que uma tendência maior seja detectada em um nível mais alto. A abordagem otimista funciona bem na identificação de tendências para as aplicações nas quais as tendências dominantes existem, e podem não funcionar tão bem para as aplicações com as tendências menos dominantes.
A figura 6 mostra uma abordagem pessimista da detecção de tendência para uma tendência hierárquica. Com a abordagem pessimista, a estrutura do tipo árvore de tendência é construída (em 602) a partir de baixo para cima ao adicionar cada registro de dados à estrutura do tipo árvore de tendência. A contagem associada a cada nó adicionado à estrutura do tipo árvore de tendência é atualizada (em 604), tal como com a função Atuali- zar().
A informação sobre a nãotendência pode ser suprimida a partir da estrutura do tipo árvore de tendência (em 606), ao usar a função Normali- zar(). Também, os nós da folha são quebrados (em 608) em nós de tendência em níveis mais altos. Isso envolver agregar as contagens associadas aos nós de nível inferior para determinar se um nó de nível superior é indicativo de uma tendência maior. O processo se repete (em 610) para o período de coleta P.
A abordagem pessimista é intensiva quanto à maneira computacional, especialmente para as correntes de dados com um grande número de tendências menos dominantes, uma vez que todos os registros de dados são adicionados à estrutura do tipo árvore e suprimidos, mais adiante, se os registros de dados não forem associados às tendências maiores. A abordagem pessimista funciona bem para as aplicações com tendências menos dominantes, mas é dispendiosa, desnecessariamente, quanto à maneira computacional para as aplicações com tendências dominantes.
Um algoritmo de ajuste pode ser usado, o qual é similar ao algoritmo positivo retratado na figura 5. O algoritmo de ajuste leva em consideração as tendências menores assim como as tendências maiores. Com o algoritmo de ajuste, cada nó interno na estrutura do tipo árvore de tendência inclui uma lista de eventos omitidos (eventos associados aos registros de da dos não identificados como tendências maiores). No fim do período de coleta P, quaisquer desses eventos que correspondem a uma tendência menor são salvos; todos os outros eventos insignificantes são descartados. Usando-se a função Condensar(), a estrutura do tipo árvore é reconstruída para incluir os eventos de tendência menor (ao adicionar o nó descendente a partir de um dos nós internos da estrutura do tipo árvore de tendência).
Com base nas tendências maiores identificadas ao usar qualquer das técnicas descritas acima, os anúncios direcionados podem ser gerados e apresentados a um usuário em uma estação móvel em uma rede de comunicações sem fio.
Usando-se as técnicas de acordo com algumas modalidades, uma técnica eficiente é fornecida para fornecer anúncios direcionados (ou outra informação personalizada) que não envolva armazenar todos os registros de dados recebidos em uma corrente de entrada. Deste modo, a extração de registros de dados pode ser possibilitada sem ter que fornecer uma infraestrutura de gerenciamento e armazenamento de dados grande e dispendiosa. Os operadores de serviço associados às redes de comunicações sem fio pode, então, levar a vantagem das oportunidades de renda sem ter que investir em infraestrutura dispendiosa.
As instruções associadas ao software descritas acima (por exemplo, módulo de detecção de tendência 202, módulo de anúncio direcionado 218, etc., na figura 1) podem ser carregadas para a execução em um processador (por exemplo, CPUs 204 e 224 na figura 1). O processador inclui microprocessadores, microcontroladores, módulos processadores ou subsistemas (que incluem um ou mais microprocessadores ou microcontro- ladores), ou outros dispositivos de controle ou de computação. Um "processador" pode se referir a um único componente ou a diversos componentes.
Os dados e instruções (do software) são armazenados em respectivos dispositivos de armazenamento, os quais são implementados como uma ou mais mídia de armazenamento usável por computador ou legível por computador. A mídia de armazenamento inclui diferentes formas de memória que incluem dispositivos semicondutores de memória, tais como memórias de acesso aleatório dinâmica ou estática (DRAMs ou SRAMs), memórias apenas de leitura apagável e programável (EPROMs), memórias apenas de leitura eletricamente apagável e programável (EEPROMs) e memórias rápidas; discos magnéticos, tais como discos fixos, flexíveis e removíveis; outra mídia magnética que inclui fita; e mídia óptica, tal como discos compactos (CDs) ou discos de vídeo digitais (DVDs).
Na descrição anterior, inúmeros detalhes são estabelecidos para fornecer uma compreensão da presente invenção. No entanto, será compreendido por aqueles versados na técnica que a presente invenção pode ser praticada sem esses detalhes. Muito embora a invenção tenha sido descrita com relação a um número de modalidades limitado, aqueles versados na técnica irão observar inúmeras modificações e variações dela. Pretende-se que as reivindicações em anexo cubram tais modificações e variações à medida