“MÉTODO IMPLEMENTADO POR COMPUTADOR, MEIO LEGÍVEL POR COMPUTADOR E SISTEMA IMPLEMENTADO POR COMPUTADOR”
CAMPO DA INVENÇÃO
[001] A presente invenção descreve os métodos e sistemas para o compartilhamento secreto sem um inicializador de confiança, por exemplo, entre duas plataformas para fornecer as recomendações sociais.
ANTECEDENTES DA INVENÇÃO
[002] Com o desenvolvimento da tecnologia e análise de dados, muitas plataformas online coletam diferentes tipos de dados. Por exemplo, as plataformas de classificação de filmes coletam dados de classificação dos usuários, enquanto as plataformas de meios sociais coletam os dados de rede social dos usuários. Esses dados coletados são valiosos e, em geral, são mantidos como informações privadas pelas plataformas respectivas. As plataformas estão prestando cada vez mais atenção à privacidade dos dados e não necessariamente querem compartilhar seus dados coletados, pelo menos, não em sua forma original.
DESCRIÇÃO DA INVENÇÃO
[003] Em uma realização, um método implementado por computador, inclui: identificar, através de uma plataforma de recomendação e de classificação de itens, os dados de classificação, incluindo as classificações respectivas de um número de itens em relação a um número de usuários; identificar, através da plataforma de recomendação e de classificação de itens, os dados de característica do usuário, incluindo um número de características do usuário contribuindo para as classificações respectivas do número de itens em relação ao número de usuários; receber, a partir de uma plataforma de rede social através da plataforma de recomendação e de classificação de itens por meio de um esquema de compartilhamento secreto sem um inicializador de confiança, um número de dados manipulados de rede social computados com base em dados de rede social e um primeiro número de variáveis aleatórias, em que os dados de rede social indicam as relações sociais entre quaisquer dois do número de usuários, em que, no esquema de compartilhamento secreto sem o inicializador de confiança, a plataforma de rede social compartilha com a plataforma de recomendação e de classificação de itens o número de dados manipulados de rede social sem revelar os dados de rede social; e atualizar, através da plataforma de recomendação e de classificação de itens, os dados de característica do usuário com base nos dados de classificação e no número de dados manipulados de rede social.
[004] A realização descrita anteriormente é implementável utilizando um método implementado por computador; um meio não transitório, legível por computador, que armazena as instruções legíveis por computador para realizar o método implementado por computador; e um sistema implementado por computador, incluindo uma memória de computador, interoperacionalmente acoplada a um processador de hardware configurado para realizar o método implementado por computador / as instruções armazenadas no meio não transitório, legível por computador.
[005] O assunto descrito na presente invenção pode ser implementado em realizações específicas, de maneira a apresentar uma ou mais das seguintes vantagens. Em primeiro lugar, as técnicas descritas possibilitam que diferentes plataformas colaborem de maneira segura no compartilhamento secreto sem revelar os dados privados ou confidenciais, o que incentiva a integração e a colaboração entre as plataformas sem comprometer a privacidade dos dados. Em segundo lugar, uma vez que grande parte do trabalho pode ser realizado por diversas plataformas antes de aplicar o esquema de compartilhamento secreto, as técnicas descritas possibilitam atividades de desenvolvimento comuns mais eficientes (tal como, com relação ao tempo, ciclos de processador, utilização de memória e banda larga/ congestionamento de rede) ou as atividades não suportadas pelas plataformas online atuais. Em terceiro lugar, as técnicas descritas podem fornecer os modelos de recomendação aprimorados das plataformas de recomendação e de classificação de itens e fornecer as recomendações mais direcionadas (tal como uma plataforma de recomendação de filmes que fornece as recomendações mais relevantes aos usuários, alavancando os dados de rede social obtidos de uma plataforma de meios sociais). Em quarto lugar, as técnicas descritas possibilitam que as plataformas colaborem sem a sobrecarga de uma autoridade confiável. Outras vantagens serão evidentes para os técnicos no assunto.
[006] Os detalhes de uma ou mais realizações do assunto da presente invenção são apresentados na Descrição Detalhada da Invenção, nas reivindicações, e nas Figuras anexas, e nas reivindicações. Outras características, aspectos e vantagens do assunto serão evidenciados a partir da Descrição Detalhada da Invenção, das reivindicações e das Figuras anexas.
BREVE DESCRIÇÃO DAS FIGURAS
[007] A Figura 1 é um diagrama de blocos que ilustra um sistema de exemplo para o compartilhamento secreto entre a plataforma A e a plataforma B sem um inicializador de confiança, de acordo com uma realização da presente invenção.
[008] A Figura 2 é um fluxograma ilustrando um exemplo de método de compartilhamento secreto entre a plataforma A e a plataforma B sem um inicializador de confiança para gerar as recomendações pela plataforma A, de acordo com uma realização da presente invenção.
[009] A Figura 3 é um fluxograma que ilustra um exemplo de método de compartilhamento secreto entre a plataforma A e a plataforma B para calcular um elemento 𝑍𝑖𝑗 de um produto de matriz da matriz A e matriz B utilizando um esquema de compartilhamento secreto sem um inicializador de confiança, de acordo com uma realização da presente invenção.
[010] A Figura 4 é um fluxograma que ilustra um exemplo de método para a geração de uma recomendação através de uma plataforma de recomendação e de classificação de itens utilizando um esquema de compartilhamento secreto sem um inicializador de confiança, de acordo com uma realização da presente invenção.
[011] Figura 5 é um diagrama de blocos que ilustra um sistema de computador de exemplo utilizado para fornecer as funcionalidades computacionais associadas aos algoritmos, métodos, funções, processos, fluxos e procedimentos, conforme descritos na presente invenção, de acordo com uma realização da presente invenção.
[012] Os números de referência e designações similares nos diversos desenhos indicam elementos similares.
DESCRIÇÃO DE REALIZAÇÕES DA INVENÇÃO
[013] A descrição detalhada da invenção a seguir descreve o compartilhamento secreto sem um inicializador de confiança, por exemplo, entre duas plataformas para fornecer as recomendações aos usuários com base em dados de rede social, e é apresentado para possibilitar que qualquer técnico no assunto realize e utilize o assunto descrito no contexto de uma ou mais realizações específicas. Podem ser realizadas diversas modificações, alterações e permutações das realizações descritas e serão facilmente evidentes para os técnicos no assunto, e os princípios gerais definidos no presente podem ser aplicados a outras realizações e aplicações, sem se afastarem do âmbito da presente invenção. Em alguns casos, os detalhes desnecessários para obter uma compreensão do assunto descrito podem ser omitidos de maneira a não obscurecer uma ou mais realizações descritas com os detalhes desnecessários e na medida em que tais detalhes estão dentro das habilidades de um técnico no assunto. A presente invenção não se destina a ser limitada às realizações descritas ou ilustradas, mas deve estar de acordo com o âmbito mais amplo consistente com os princípios e características descritos.
[014] Entre muitas plataformas online, diferentes plataformas podem acumular diferentes tipos de dados. Por exemplo, uma plataforma de recomendação e de classificação de itens, tal como o NETFLIX ou o IMDB, acumula os dados de classificação dos usuários em relação a filmes e séries de TV. Uma plataforma de meios sociais ou de rede social, tal como o FACEBOOK ou o TWITTER, acumula os dados de rede social dos usuários e de seus amigos.
A informação social pode aprimorar o desempenho de um sistema de recomendação uma vez que os amigos próximos tendem a apresentar preferências similares. Os métodos de recomendação com base em redes sociais existentes pressupõem que os dados de classificação do usuário de um item e os dados sociais entre os usuários são compartilhados. No entanto, devido à privacidade dos dados ou outras preocupações, as plataformas online normalmente não compartilham seus dados originais com outras partes.
[015] Estão descritas as técnicas de exemplo que possibilitam que as plataformas colaborem de maneira segura na criação de um sistema de recomendação aprimorado com base nos dados de classificação e nos dados de rede social, sem revelar os dados privados de cada plataforma para a outra. Por exemplo, um modelo de recomendação social pode ser treinado com base nos dados de classificação e nos dados de rede social por meio de um esquema de compartilhamento secreto entre uma plataforma de recomendação e de classificação de itens e uma plataforma de rede social. Sob o esquema de compartilhamento secreto, os dados trocados entre as plataformas estão em uma forma manipulada, ao invés de sua forma original. Os dados trocados são manipulados de tal maneira que não se pode recuperar ou decodificar os dados originais dos dados manipulados.
[016] O esquema de compartilhamento secreto é diferente de codificação, criptografia ou outros esquemas para transmissão segura de dados em que uma fonte de dados (por exemplo, tal como um transmissor) codifica ou criptografa os dados originais em uma forma codificada antes da transmissão, e um destinatário pretendido pode decodificar ou recuperar os dados originais a partir dos dados codificados recebidos, por exemplo, com base em uma chave de segurança conhecida ou em um algoritmo de decodificação correspondente.
O esquema de compartilhamento secreto protege os dados originais de serem conhecidos até mesmo por um destinatário pretendido. Como tal, a fonte de dados pode preservar a privacidade dos dados originais.
[017] O esquema de compartilhamento secreto, por conseguinte, encoraja a colaboração entre diferentes plataformas e pode auxiliar a obter benefícios mútuos, sem comprometer a privacidade dos dados. Por exemplo, com o esquema de compartilhamento secreto descrito, a plataforma de recomendação e de classificação de itens pode alavancar as informações de rede social da plataforma de rede social para melhor prever as necessidades de um usuário e fornecer as recomendações direcionadas aos usuários, resultando em experiência intensificada do usuário e o lucro potencial retorna para a plataforma de recomendação e de classificação de itens.
[018] A Figura 1 é um diagrama de blocos que ilustra um sistema de exemplo (100) para o compartilhamento secreto entre a plataforma A (102) e a plataforma B (104), de acordo com uma realização da presente invenção. A plataforma A (102) pode incluir, mas não está limitada a uma plataforma de recomendação e de classificação de itens em setores de entretenimento, varejo, serviço e indústria ou os setores em que os usuários podem classificar os produtos, serviços ou outros itens. Os exemplos de uma plataforma de recomendação e de classificação de itens, por exemplo, incluem a AMAZON, NETFLIX ou IMDB. A plataforma A (102) pode coletar os dados de classificação R a partir de seus usuários. Os dados de classificação R podem incluir uma ou mais classificações reais de um ou mais itens (por exemplo, os produtos ou serviços) fornecidos pelos usuários ou uma ou mais classificações mapeadas com base nos cliques, compras, pesquisas ou outras atividades históricas do usuário em relação aos itens. As classificações podem refletir as necessidades, o gosto ou as preferências dos itens do usuário. As classificações podem possuir um intervalo específico (por exemplo, [0, 1] ou [1, 5]). Em algumas realizações, os dados de classificação R podem ser representados em uma matriz com uma dimensão de M * N, em que M representa o número de usuários e N representa o número de itens, com as entradas Rij representando uma classificação do item j pelo usuário i.
[019] A plataforma A (102) também pode incluir os dados do usuário, que podem incluir, por exemplo, os nomes de usuários, idades, gêneros, endereços ou qualquer outra conta ou informações de perfil, históricos de compra, históricos de navegação ou históricos de pesquisa dos usuários na plataforma A (102). A plataforma A (102) também pode incluir os dados de itens, que podem incluir, por exemplo, os nomes, categorias, preços, palavras-chave, instruções, e similares, em relação aos itens.
[020] Em algumas realizações, os dados de classificação R coletados podem ser uma matriz esparsa, uma vez que apenas um pequeno número (comparado a M*N) de entradas Rij possui a classificação ou classificação mapeada com base nas atividades de usuário existentes em relação aos itens. Em algumas realizações, a plataforma A (102) pode prever as classificações conhecidas de itens, de maneira a fornecer as recomendações direcionadas de itens aos usuários. Em algumas realizações, a plataforma A (102) pode prever as classificações conhecidas de itens, por exemplo, com base nos dados do usuário e nos dados do item de acordo com os algoritmos de aprendizagem de máquina ou estatísticos. Como um exemplo, a plataforma A (102) pode fornecer as recomendações de itens com base nos dados de característica do usuário U (também referidos como dados de fator de usuário)
e os dados da característica do item V (também referidos como dados de fator de item), de acordo com métodos de fatoração de matriz ou outras técnicas.
Especificamente, cada usuário (por exemplo, o usuário i) pode ser caracterizado por um vetor (por exemplo, Ui) de características do usuário, tal como a idade, sexo, localização geográfica, padrão de visita, e similares. Cada item (por exemplo, o item j) pode ser caracterizado por um vetor (por exemplo, Vj) de características do item, tal como a categoria, palavras-chave, tópicos, preços e similares. As características do usuário e do item podem ser fatores que afetam a classificação, a seleção ou a compra do usuário de determinado item. Em algumas realizações, uma classificação de um item fornecido por um usuário pode ser aproximada por um produto de ponto do vetor de características do usuário e pelo vetor de características do item. Por exemplo, - em que Ui representa um vetor dos dados de característica do usuário correspondente ao usuário i; Vj representa um vetor dos dados da característica do item correspondente ao item j; e Rij representa uma classificação do item j pelo usuário i.
[021] Em algumas realizações, o vetor de características do usuário (por exemplo, Ui) e o vetor de características do item (por exemplo, Vj) são vetores latentes que podem ser aprendidos a partir de dados de treinamento (por exemplo, os dados de classificação conhecidos).
[022] A plataforma B (104) pode incluir, mas não está limitada a uma plataforma de meios sociais (tal como o FACEBOOK, TWITTER ou INSTRAGRAM). A plataforma B (104) pode coletar os dados de rede social S a partir de seus usuários. Os dados de rede social podem incluir, por exemplo, os nomes, idades, sexos, endereços, empregos, relacionamentos, hobbies, status, comentários, blogs, histórico de navegação ou outras informações demográficas, de emprego, recreativas de um usuário na plataforma B e as informações correspondentes dos amigos do usuário, família, colegas de trabalho, e similares. Tais dados de rede social S podem ser informativos para a plataforma A para prever a classificação de um item pelo usuário e fornecer as recomendações.
[023] Por exemplo, a plataforma A pode prever as classificações do usuário solucionando um problema de otimização, conforme mostrado na Fórmula (2): - em que Sik representa uma relação social entre o usuário i e o usuário k nos dados de rede social S; 𝜆1 representa um peso predefinido associado aos dados de rede social; e 𝜆2 representa um peso predefinido para evitar a superposição.
[024] Neste exemplo, a função objetiva no lado direito de Fórmula (2) inclui 3 termos. O primeiro termo ∑u𝑖 ∈𝑢,𝑣𝑗∈𝑣(𝑅𝑖𝑗 − 𝑈𝑖 𝑇 𝑉𝑗 )2 , representa o erro ou a distância entre os dados de classificação conhecidos e a classificação aproximada calculada com base nos dados de característica do usuário (por exemplo, U = [U1, U2,…, UM]) e os dados da característica do item (por exemplo, V = [V1, V2,…, VN]). O segundo termo 𝜆1 ∑u𝑖 ,u𝑘∈𝑢 𝑆𝑖𝑘 (𝑈𝑖 − 𝑈𝑘 )2 representa os efeitos dos dados de rede social S nos vetores de características do usuário. Por exemplo, quanto mais próximo ou mais forte for o relacionamento social de dois usuários, mais similares serão os dois vetores de características dos dois usuários. Em algumas realizações, quanto maior for o 𝑆𝑖𝑘 , mais próximo ou mais forte será o relacionamento social dos dois usuários. O terceiro termo 2 2 𝜆2 (||∑u𝑖 ∈𝑢 𝑈𝑖 || + ||∑v𝑗 ∈𝑣 𝑉𝑖 || ) é utilizado para evitar a superposição. Os valores dos pesos 𝜆1 e 𝜆2 podem ser pré-determinados. Quanto maior for o peso, maior será o impacto de um termo correspondente na função objetiva.
[025] O problema de otimização acima para minimizar a função objetiva pode ser solucionado, por exemplo, por gradiente descendente ou outro algoritmo. Por exemplo, a derivação dos vetores latentes U e V pode resultar nas duas equações abaixo (2).
[026] Para solucionar U e V nas equações (3) e (4) acima, os resultados dos produtos de matriz 𝑈 ∙ diag(S ∙ I𝑀 ) e 𝑈 ∙ S são suficientes, sem a necessidade de conhecer os valores de U e S individualmente. Como tal, um esquema de compartilhamento secreto pode ser utilizado pelas plataformas A e B para obter os resultados dos produtos de matriz 𝑈 ∙ diag(S ∙ I𝑀 ) e 𝑈 ∙ S. Sob o esquema de compartilhamento secreto, a plataforma A pode revelar o U manipulado para a plataforma B sem revelar o U original para a plataforma B; e a plataforma B pode revelar o S manipulado para a plataforma A sem revelar o S original para a plataforma A.
[027] Em algumas realizações, o esquema de compartilhamento secreto pode ser implementado com ou sem um inicializador de confiança. Com um inicializador de confiança, um ponto inicial comum pode ser estabelecido pelo inicializador de confiança e enviado para as duas plataformas para auxiliar na troca de dados. Sem um inicializador de confiança, cada uma das duas plataformas pode gerar números aleatórios como seus respectivos pontos iniciais para auxiliar na troca de dados. As plataformas podem se beneficiar da colaboração sem compartilhar as informações confidenciais sensíveis.
[028] A Figura 2 é um fluxograma que ilustra um exemplo de método de compartilhamento secreto (200) entre a plataforma A e a plataforma B sem um inicializador de confiança para gerar as recomendações pela plataforma A, de acordo com uma realização da presente invenção. A plataforma A pode ser a plataforma A descrita na Figura 1, e a plataforma B pode ser a plataforma B descrita na Figura 1. Em algumas realizações, o método de compartilhamento secreto de exemplo pode ser implementado em um algoritmo iterativo. O número de iterações T, por exemplo, pode ser um valor predeterminado ou determinado com base em determinados critérios (por exemplo, se o algoritmo converge ou atualiza ou diferenças de U ou V após diferentes iterações estarem abaixo de um limite). No (202), a plataforma A identifica os dados de classificação do usuário R e os dados iniciais da característica do usuário U e os dados da característica do item V, e o número de iterações T. No (204), a plataforma B identifica os dados de rede social S. Para uma iteração t-ésima (t <T), no (208), a plataforma A e a plataforma B podem realizar um esquema de compartilhamento secreto sem um inicializador de confiança para obter os produtos de matriz 𝑈 ∙ diag(S ∙ I𝑀 ) e 𝑈 ∙ S. No (206), a plataforma A atualiza o U ou V com base nos produtos de matriz 𝑈 ∙ diag(S ∙ I𝑀 ) e 𝑈 ∙ S, por exemplo, de acordo com as Equações (3) e (4). Após as iterações T, no (210), a característica de item da plataforma A gera as recomendações com base nos dados da característica do usuário atualizados U e nos dados da característica do item V.
[029] Em algumas realizações, deixe a matriz Z como um produto da matriz A e da matriz B. Isso é, Z = A ∙ B. Zij representa a entrada / elemento de Z na i-ésima linha e na j-ésima coluna. Zij pode ser computado, por exemplo, de acordo com a Equação (5). Os produtos de matriz 𝑈 ∙ diag(S ∙ I𝑀 ) e 𝑈 ∙ S, por exemplo, - em que 𝐴𝑖 𝑇 representa a i-ésima linha da matriz A e 𝐵𝑗 representa a j-ésima coluna da matriz B.
[030] A Figura 3 é um fluxograma ilustrando um exemplo de método de compartilhamento secreto (300) entre a plataforma A e a plataforma B para calcular um elemento Zij de um produto da matriz A e matriz B utilizando um esquema de compartilhamento secreto sem um inicializador de confiança, de acordo com uma realização da presente invenção. Em um esquema de compartilhamento secreto sem um inicializador de confiança, ambas as plataformas geram números aleatórios em séries de etapas e cálculos que iriam substituir a necessidade de um inicializador de confiança.
[031] No (304), a plataforma A (302) obtém um vetor inicial x = (x1, x2,…, x_2k), que pode ser 𝐴𝑖 𝑇 , a i-ésima linha da matriz A. No (324), a plataforma B (322) obtém um vetor inicial y = (y1, y2,…, y_2k), que pode ser 𝐵𝑗 representa a j-ésima coluna da matriz B. Os vetores x e y podem possuir a mesma dimensão de 2k. Os vetores x e y, por exemplo, podem incluir as variáveis aleatórias, todos zeros, valores predeterminados ou outros valores iniciais.
[032] Em algumas realizações, ambas as plataformas A e B computam para a saída pelo enlace k vezes (350). Na k-ésima iteração, no (306), a plataforma A (302) gera os valores aleatórios aj e cj tais que a soma (aj + cj) não é igual para 0. Por exemplo, os valores gerados aleatoriamente aj e cj podem ser gerados repetidamente até que aj + cj não seja igual a 0, conforme mostrado no (308). Quando aj + cj for encontrado não igual a 0, a plataforma A (302) computa os valores que serão manipulados e, em seguida, enviados para a plataforma B ((322)). Os valores computados para a plataforma A (302) podem incluir, mas não estão limitados a pj = aj + cj, x’[2j-1] = x[2j-1] + aj, e x’[2j] = x[2j] + cj conforme mostrado no (310). No (311), os valores, {pj, x'[2-1], x’[2j]}, são enviados para a plataforma B ((322)) para a computação. De maneira similar, no (326), a plataforma B ((322)) gera os valores aleatórios bj e dj de maneira que a soma (bj + dj) não é igual a 0. Por exemplo, os valores aleatórios gerados bj e dj podem ser gerados repetidamente até que bj + dj não seja igual a 0, conforme mostrado no (328). Os valores computados para a plataforma B ((322)) podem incluir, mas não estão limitados a qj = bj + dj, y'[2j-1] = y[2j-1] + bj e y'[2j] = y[2j] + dj conforme mostrado no (330). No (331), os valores, {qj, y’[2-1], y'[2j]}, são enviados para a plataforma A (302) para a computação.
[033] Após as plataformas enviarem os dados manipulados entre si, enquanto ainda estão no enlace k, os dois valores computados da plataforma, em última análise, somam os valores de saída. A plataforma A (302) computa hj = y’[2j-1] (x[2j-1] + 2aj) + y'[2j] (x[2j] + 2cj) + qj (aj + 2cj) conforme mostrado no (312). A plataforma B (322) computa para gj = x’[2j-1] (2y'[2j-1] - bj) + x’[2j] (2y[2j] - dj) + pj (dj - 2bj) conforme mostrado no (332). No (314), a plataforma A (302) obtém um valor h somando todo o hj, isto é, h = ∑𝑘𝑗=1 ℎ𝑗 , conforme mostrado no (314). No (332), a plataforma B (322) obtém um valor g somando todo o gj, isto é, g = ∑𝑘𝑗=1 𝑔𝑗 , conforme mostrado no (334).
[034] No (315), a plataforma A pode receber o valor g da plataforma B. A soma de h e g é igual ao produto dos vetores x e y. Isto é, xy = h + g. Por conseguinte, no (315), a plataforma A recebe o valor g da plataforma B. No (335), a plataforma A envia o valor h para a plataforma B. No (316), a plataforma A pode computar um produto dos vetores x e y computando uma soma de h e g, que são os dados manipulados dos vetores x e y. De maneira similar, no (336), a plataforma B também pode computar o produto dos vetores x e y computando uma soma de h e g.
[035] Dado que x pode ser a i-ésima linha da matriz A, 𝐴𝑖 𝑇 e y pode ser a j-ésima coluna da matriz B, 𝐵𝑗 , o elemento 𝑍𝑖𝑗 do produto da matriz A e da matriz B pode ser obtido como 𝑍𝑖𝑗 = 𝐴𝑖 𝑇 𝐵𝑗 = 𝑥𝑦. Por conseguinte, o produto da matriz Z da matriz A e da matriz B pode ser obtido.
[036] Ao substituir a matriz U por A e substituir o iag(S ∙ I𝑀 ) por B, o produto da matriz 𝑆 ∙ diag(S ∙ I𝑀 ) pode ser obtido. De maneira similar, substituindo a matriz U por A e substituindo S por B, o produto da matriz 𝑈 ∙ S pode ser obtido. Com os produtos de matriz 𝑈 ∙ diag(S ∙ I𝑀 ) e 𝑈 ∙ S, a plataforma A pode atualizar o U ou V, por exemplo, de acordo com as Equações (3) e (4), conforme descrito em relação ao (206) na Figura 2
[037] Por conseguinte, a plataforma A (302) pode gerar os dados de classificação previstos com base nos dados atualizados de características do usuário e nos dados da característica do item. Em algumas realizações, a plataforma A (302), entre outras coisas, pode gerar as recomendações para um item específico para um cliente específico com base nos dados de classificação previstos. As técnicas e computação descritas acima podem ser alcançadas sem a necessidade de uma autoridade confiável como sobrecarga.
[038] A Figura 4 é um fluxograma de um método de exemplo (400) para gerar uma recomendação para um usuário através de uma plataforma de recomendação e de classificação de itens utilizando um esquema de compartilhamento secreto sem um inicializador de confiança, de acordo com uma realização. Para clareza de apresentação, a descrição que se segue, em geral, descreve o método (400) no contexto das outras Figuras na presente invenção. Por exemplo, a plataforma de recomendação e de classificação de itens pode ser a plataforma A, conforme descrito em relação às Figuras de 1 a
3. No entanto, será entendido que o método (400) pode ser realizado, por exemplo, através de qualquer sistema, ambiente, software e hardware adequados, ou uma combinação de sistemas, ambientes, software e hardware, conforme adequado. Em algumas realizações, diversas etapas do método (400) podem ser executadas em paralelo, em combinação, em enlaces ou em qualquer ordem.
[039] No (402), os dados de classificação incluem, mas não limitados às classificações respectivas de um número de itens em relação a um número de usuários, são identificados através da plataforma de recomendação e de classificação de itens. Identificar os dados de classificação inclui receber (por exemplo, de outro dispositivo), recuperar ou carregar a partir de uma memória ou determinar os dados de classificação com base em uma ou mais entradas para o método (400). Os dados de classificação podem incluir os dados de classificação R descritos em relação às Figuras de 1 a 3. Por exemplo, os dados de classificação podem incluir a classificação real ou classificação mapeada com base nas atividades do usuário existentes em relação aos itens.
A partir de (402), o método (400) prossegue para o (404).
[040] No (404), os dados de característica do usuário, incluindo um número de características do usuário contribuindo para as classificações respectivas do número de itens em relação ao número de usuários, são identificados através da plataforma de recomendação e de classificação de itens.
A identificação dos dados de característica do usuário inclui receber (por exemplo, de outro dispositivo), recuperar ou carregar a partir de uma memória ou determinar os dados de característica do usuário com base em uma ou mais entradas para o método (400). Em algumas realizações, os dados de característica do usuário podem ser representados por uma matriz U. Os dados de característica do usuário podem incluir os dados de característica do usuário U descritos em relação às Figuras de 1 a 3. A partir de (404), o método (400) prossegue para o (406).
[041] No (406), os dados da característica do item, incluindo um número de características do item contribuindo para as classificações respectivas do número de itens em relação ao número de usuários, são identificados através da plataforma de recomendação e de classificação de itens.
Em algumas realizações, a identificação dos dados da característica do item inclui receber (por exemplo, de outro dispositivo), recuperar ou carregar a partir de uma memória, ou determinar os dados da característica do item com base em uma ou mais entradas para o método (400). Os dados da característica do item podem incluem os dados da característica do item V descritos em relação às Figuras de 1 a 3. A partir de (406), o método (400) prossegue para o (408).
[042] No (408), a plataforma de recomendação e de classificação de itens recebe um número de dados manipulados de rede social (por exemplo, descritos em relação à Figura 3) computados com base em dados de rede social (por exemplo, y, um vetor de dados de rede social da matriz S) a partir de uma plataforma de rede social por meio de um esquema de compartilhamento secreto sem um inicializador de confiança a partir de uma plataforma de rede social.
Além disso, os dados de rede social indicam as relações sociais entre quaisquer dois do número de usuários. No esquema de compartilhamento secreto sem o inicializador de confiança, a plataforma de rede social compartilha com a plataforma de recomendação e de classificação de itens o número de dados manipulados de rede social (por exemplo, g) sem revelar os dados de rede social (por exemplo, y), em que os dados da rede são computados com base nos dados de rede social e um primeiro número de variáveis aleatórias (por exemplo, bj, dj).
Em algumas realizações, no esquema de compartilhamento secreto sem o inicializador de confiança, a plataforma de recomendação e de classificação de itens compartilha com a plataforma de rede social uma série de dados manipulados pelo usuário (por exemplo, h) sem revelar os dados de característica do usuário (por exemplo, x, um vetor da matriz de dados de característica do usuário U), em que o número de dados manipulados de características do usuário é computado com base nos dados de característica do usuário e um segundo número de variáveis aleatórias (por exemplo, aj, cj).
Em algumas realizações, os dados manipulados de rede social são manipulados de tal maneira que não é possível recuperar os dados de rede social original a partir dos dados manipulados de rede social.
[043] Em algumas realizações, o esquema de compartilhamento secreto sem o inicializador de confiança é utilizado para solucionar um problema de otimização conforme descrito em relação à Fórmula (2), por exemplo, conforme descrito em relação à Figura 3. Por exemplo, no esquema de compartilhamento secreto sem o inicializador de confiança, a plataforma de recomendação e de classificação de itens obtém um vetor dos dados de característica do usuário (por exemplo, x) e gera os primeiros dados manipulados de característica do usuário (por exemplo, x’) no vetor dos dados de característica do usuário (por exemplo, x) e um segundo número de variáveis aleatórias (por exemplo, aj, cj). A plataforma de recomendação e de classificação de itens transmite para a plataforma de rede social os primeiros dados manipulados de característica do usuário (por exemplo, x’) e recebe a partir da plataforma de rede social os dados manipulados de rede social (por exemplo, y') computados com base nos dados de rede social (por exemplo, y) e o primeiro número de variáveis aleatórias (por exemplo, bj, dj).
[044] A plataforma de recomendação e de classificação de itens pode gerar um dos dados manipulados de característica do usuário (por exemplo, h) com base em dois ou mais dos primeiros dados manipulados de característica do usuário (por exemplo, x’), os primeiros dados manipulados de rede social (por exemplo, y’), ou o segundo número de variáveis aleatórias (por exemplo, aj, cj). De maneira similar, a plataforma de rede social pode gerar um dos dados manipulados de rede social (por exemplo, g) computados com base em dois ou mais dos primeiros dados manipulados de característica do usuário (por exemplo, x’), os primeiros dados manipulados de rede social (por exemplo, y’), ou o primeiro número de variáveis aleatórias (por exemplo, bj, dj). A partir de (408), o método (400) prossegue para o (410).
[045] No (410), a plataforma de recomendação e de classificação de itens envia uma série de dados manipulados de característica do usuário (por exemplo, um número de h) para a plataforma de rede social sem revelar os dados de característica do usuário (por exemplo, x ou qualquer vetor de U), por exemplo, conforme descrito em relação à Figura 3. A partir de (410), o método (400) prossegue para o (412).
[046] No (412), a plataforma de recomendação e de classificação de itens atualiza os dados de característica do usuário com base nos dados de classificação e no número de dados manipulados de rede social. Em algumas realizações, a atualização dos dados de característica do usuário inclui a computação de um produto dos dados de característica do usuário e dos dados de rede social computando uma soma de um dos números de dados manipulados de características do usuário (por exemplo, h) e um dos números de dados manipulados de rede social (por exemplo, g). Além disso, a computação mencionada pode incluir a computação para cada entrada no produto dos dados de característica do usuário e dos dados de rede social e a computação de um dos números de dados manipulados de características do usuário e um dos números de dados manipulados de rede social sem os dados de rede social. Em algumas realizações, os dados de característica do usuário incluem a solução de um problema de otimização para minimizar uma soma ponderada de uma diferença entre os dados de classificação previstos e os dados de classificação, os dados de característica do usuário ponderados pelos dados de rede social e um termo de prevenção de superposição, por exemplo, conforme mostrado na Fórmula (2). Em algumas realizações, a atualização dos dados de característica do usuário inclui a atualização dos dados de característica do usuário de acordo com as técnicas de exemplo descritas em relação à Figura 3. A partir de (412), o método (400) prossegue para o (414).
[047] No (414), a plataforma de recomendação e de classificação de itens atualiza os dados da característica do item com base nos dados de classificação e nos dados de característica do usuário, por exemplo, de acordo com as técnicas de exemplo descritas com relação à Figura 3. A partir de (414), o método (400) prossegue para o (416).
[048] No (416), os dados de classificação previstos do número de itens em relação ao número de usuários com base no produto dos dados de característica do usuário e os dados da característica do item são gerados. Em algumas realizações, os dados de classificação previstos podem ser gerados, por exemplo, com base no produto dos dados de característica do usuário e dos dados da característica do item, de acordo com a equação (1). Em algumas realizações, a classificação gerada pode ser melhor alinhada com as necessidades ou preferências dos usuários, devido à incorporação da rede social. A partir de (416), o método (400) prossegue para o (418)
[049] No (418), uma recomendação de um item específico para um usuário específico com base nos dados de classificação previstos é gerada. Em algumas realizações, um ou mais itens com as melhores classificações previstas em relação ao usuário específico podem ser recomendados para o usuário específico. A recomendação de um item específico pode ser uma recomendação de um filme ou item de compra. Por exemplo, a NETFLIX pode recomendar melhor um filme ou a AMAZON pode recomendar melhor um item com base nos dados de rede social. Em algumas realizações, a recomendação do item específico para o item específico pode ser enviada, por exemplo, por meio de uma interface do usuário (UI). Em algumas realizações, os tópicos selecionados podem ser exibidos em uma caixa de bate-papo, uma janela pop, e similares, em uma interface gráfica do usuário (GUI) ou outras UIs do usuário para a análise e consideração do usuário. A partir de (418), o método (400) é interrompido.
[050] A Figura 5 é um diagrama de blocos de um sistema de computador de exemplo (500) utilizado para fornecer as funcionalidades computacionais associadas aos algoritmos, métodos, funções, processos, fluxos e procedimentos descritos, conforme descrito na presente invenção, de acordo com uma realização. O computador ilustrado (502) se destina a abranger qualquer dispositivo de computação, tal como um servidor, computador de mesa, computador laptop / notebook, porta de dados sem fios, telefone inteligente, assistente de dados pessoais (PDA), dispositivo de computação de tablets, um ou mais processadores nestes dispositivos, ou qualquer outro dispositivo de processamento adequado, incluindo as instâncias físicas ou virtuais (ou ambos) do dispositivo de computação. De maneira adicional, o computador (502) pode incluir um computador que inclui um dispositivo de entrada, tal como um teclado numérico, teclado, tela sensível ao toque ou outro dispositivo que possa aceitar as informações do usuário, e um dispositivo de saída que transmita as informações associadas à operação do computador (502), incluindo os dados digitais, visuais ou informações de áudio (ou uma combinação de informações) ou uma interface de usuário (GUI) do tipo gráfico.
[051] O computador (502) pode servir em uma função como um cliente, componente de rede, um servidor, um banco de dados ou outra persistência, ou qualquer outro componente (ou uma combinação de funções) de um sistema de computador para realizar o assunto descrito na presente invenção. O computador ilustrado (502) é comunicativamente acoplado a uma rede (530). Em algumas realizações, um ou mais componentes do computador (502) podem ser configurados para operar em ambientes, incluindo o ambiente com base em computação em nuvem, local, global ou outro (ou uma combinação de ambientes).
[052] Em um nível elevado, o computador (502) é um dispositivo de computação eletrônica operável para receber, transmitir, processar, armazenar ou gerenciar os dados e informações associados com o assunto descrito. De acordo com algumas realizações, o computador (502) também pode incluir ou ser comunicativamente acoplado a um servidor de aplicativos, servidor de e-mail, servidor da Web, servidor de armazenamento em cache, servidor de dados de fluxo contínuo ou outro servidor (ou uma combinação de servidores).
[053] O computador (502) pode receber as solicitações através da rede (530) a partir de um aplicativo de cliente (por exemplo, executando em outro computador (502)) e responder às solicitações recebidas processando as solicitações recebidas utilizando um aplicativo(s) de software adequado(s). Além disso, as solicitações também podem ser enviadas para o computador (502) a partir de usuários internos (por exemplo, a partir de um console de comando ou através de outro método de acesso adequado), externos ou de terceiros, outros aplicativos automatizados, bem como quaisquer outras entidades adequadas, indivíduos, sistemas ou computadores.
[054] Cada um dos componentes do computador (502) pode se comunicar utilizando um barramento de sistema (503). Em algumas realizações, qualquer um ou todos os componentes do computador (502), hardware ou software (ou uma combinação de hardware e software), podem interagir entre si ou com a interface (504) (ou uma combinação de ambos), através do barramento de sistema (503) utilizando uma interface de programação de aplicativo (API) (512) ou uma camada de serviço (513) (ou uma combinação de API (512) e camada de serviço (513)). A API (512) pode incluir as especificações para as rotinas, estruturas de dados e classes de objetos. A API (512) pode ser independente ou dependente de linguagem de computador e se referir a uma interface completa, uma única função ou até mesmo um conjunto de APIs. A camada de serviço (513) fornece os serviços de software para o computador (502) ou para outros componentes (ilustrados ou não) que estão acoplados de forma comunicável ao computador (502). A funcionalidade do computador (502) pode ser acessível a todos os consumidores de serviço que utilizam esta camada de serviço. Os serviços de software, tais como aqueles fornecidos pela camada de serviço (513), fornecem as funcionalidades reutilizáveis e definidas através de uma interface definida. Por exemplo, a interface pode ser um software escrito em JAVA, C++ ou outra linguagem adequada, fornecendo os dados em formato XML (linguagem extensível marcada) ou outro formato adequado. Embora ilustradas como um componente integrado do computador (502), as realizações alternativas podem ilustrar a API (512) ou a camada de serviço (513) como componentes independentes em relação a outros componentes do computador
(502) ou outros componentes (ilustrados ou não) que estão acoplados de maneira comunicativa para o computador (502). Além disso, qualquer uma ou todas as partes da API (512) ou da camada de serviço (513) podem ser implementadas como submódulos ou filhos ou módulos de outro módulo de software, aplicativo corporativo ou módulo de hardware sem se afastar do âmbito da presente invenção.
[055] O computador (502) inclui uma interface (504). Embora ilustrado como uma única interface (504) na Figura 5, duas ou mais interfaces (504) podem ser utilizadas de acordo com as necessidades específicas, desejos ou realizações específicas do computador (502). A interface (504) é utilizada pelo computador (502) para se comunicar com outros sistemas que estão conectados à rede (530) (ilustrada ou não) em um ambiente distribuído. Em geral, a interface (504) inclui a lógica codificada em software ou hardware (ou uma combinação de software e hardware) e é operável para se comunicar com a rede (530). Mais especificamente, a interface (504) pode incluir o software suportando um ou mais protocolos de comunicação associados às comunicações de maneira que a rede (530) ou o hardware da interface é operável para comunicar os sinais físicos dentro e fora do computador ilustrado (502).
[056] O computador (502) inclui um processador (505). Embora ilustrado como um único processador (505) na Figura 5, dois ou mais processadores podem ser utilizados de acordo com as necessidades específicas, desejos ou realizações específicas do computador (502). Em geral, o processador (505) executa as instruções e manipula os dados para realizar as operações do computador (502) e quaisquer algoritmos, métodos, funções, processos, fluxos e procedimentos descritos na presente invenção.
[057] O computador (502) também inclui um banco de dados (506) que pode reter os dados para o computador (502) ou outros componentes (ou uma combinação de ambos) que podem estar conectados à rede (530)
(ilustrados ou não). Por exemplo, a base de dados (506) pode ser uma memória interna, convencional ou outro tipo de banco de dados que armazena os dados consistentes com esta descrição. Em algumas realizações, a base de dados (506) pode ser uma combinação de dois ou mais tipos de base de dados diferentes (por exemplo, uma base de dados hibrida em memória e convencional) de acordo com as necessidades específicas, desejos ou realizações específicas do computador (502) e a funcionalidade descrita.
Embora ilustrada como uma única base de dados (506) na Figura 5, duas ou mais bases de dados (do mesmo tipo ou combinação de tipos) podem ser utilizadas de acordo com as necessidades específicas, desejos, ou realizações específicas do computador (502) e a funcionalidade descrita. Embora a base de dados (506) seja ilustrada como um componente integral do computador (502), em realizações alternativas, a base de dados (506) pode ser externa ao computador (502). Conforme ilustrado, a base de dados (506) retém os dados de classificação descritos anteriormente (516), os dados de característica do usuário (518), os dados da característica do item (526) e os dados de rede social (528).
[058] O computador (502) também inclui uma memória (507) que pode reter os dados para o computador (502) ou para outros componentes (ou uma combinação de ambos) que podem estar conectados à rede (530) (ilustrada ou não). A memória (507) pode armazenar quaisquer dados consistentes com esta descrição. Em algumas realizações, a memória (507) pode ser uma combinação de dois ou mais tipos diferentes de memória (por exemplo, uma combinação de armazenamento semicondutor e magnético) de acordo com as necessidades específicas, desejos ou realizações específicas do computador (502) e a funcionalidade descrita. Embora ilustrado como uma memória única (507) na Figura 5, duas ou mais memórias (507) (do mesmo tipo ou combinação de tipos) podem ser utilizadas de acordo com as necessidades específicas,
desejos, ou realizações específicas do computador (502) e a funcionalidade descrita. Enquanto a memória (507) é ilustrada como um componente integral do computador (502), em realizações alternativas, a memória (507) pode ser externa ao computador (502).
[059] O aplicativo (508) é um mecanismo de software algorítmico que fornece a funcionalidade de acordo com as necessidades, desejos ou realizações específicas do computador (502), especialmente em relação à funcionalidade descrita nesta descrição. Por exemplo, o aplicativo (508) pode servir como um ou mais componentes, módulos ou aplicativos. Além disso, embora ilustrado como um único aplicativo (508), o aplicativo (508) pode ser implementado como múltiplos aplicativos (508) no computador (502). Além disso, embora ilustrado como integrante do computador (502), em realizações alternativas, o aplicativo (508) pode ser externo ao computador. (502)
[060] O computador (502) também pode incluir uma fonte de alimentação (514). A fonte de alimentação (514) pode incluir uma bateria recarregável ou não recarregável que pode ser configurada para ser substituível pelo usuário ou não. Em algumas realizações, a fonte de alimentação (514) pode incluir os circuitos de conversão de energia ou de gerenciamento (incluindo a recarga, espera ou outra funcionalidade de gerenciamento de energia). Em algumas realizações, a fonte de alimentação (514) pode incluir um plugue de alimentação para possibilitar que o computador (502) seja plugado a uma tomada de parede ou a outra fonte de energia, por exemplo, para alimentar o computador (502) ou recarregar uma bateria recarregável.
[061] Pode existir qualquer número de computadores (502) associados ou externos a um sistema de computador contendo o computador (502), cada computador (502) se comunicando pela rede (530). Além disso, o termo “cliente”, “usuário” e outra terminologia adequada podem ser utilizados de maneira intercambiável, conforme adequado, sem se afastar do âmbito da presente invenção. Além disso, esta descrição contempla que muitos usuários podem utilizar um computador (502), ou que um usuário pode utilizar múltiplos computadores (502).
[062] As realizações descritas do assunto podem incluir uma ou mais características, isoladamente ou em combinação.
[063] Por exemplo, em uma primeira realização, um método implementado por computador inclui: identificar, através de uma plataforma de recomendação e de classificação de itens, os dados de classificação incluindo as classificações respectivas de um número de itens em relação a um número de usuários; identificar, através da plataforma de recomendação e de classificação de itens, os dados de característica do usuário, incluindo um número de características do usuário contribuindo para as classificações respectivas do número de itens em relação ao número de usuários; receber, a partir de uma plataforma de rede social através da plataforma de recomendação e de classificação de itens por meio de um esquema de compartilhamento secreto sem um inicializador de confiança, um número de dados manipulados de rede social computados com base em dados de rede social e um primeiro número de variáveis aleatórias, em que os dados de rede social indicam as relações sociais entre quaisquer dois do número de usuários, em que, no esquema de compartilhamento secreto sem o inicializador de confiança, a plataforma de rede social compartilha com a plataforma de recomendação e de classificação de itens o número de dados manipulados de rede social sem revelar os dados de rede social; e atualizar, através da plataforma de recomendação e de classificação de itens, os dados de característica do usuário com base nos dados de classificação e no número de dados manipulados de rede social.
[064] Em uma segunda realização, um meio não transitório, legível por computador, armazenando uma ou mais instruções executáveis por um sistema de computador para realizar as operações, inclui: identificar, através de uma plataforma de recomendação e de classificação de itens, os dados de classificação incluindo as classificações respectivas de um número de itens em relação a um número de usuários; identificar, através da plataforma de recomendação e de classificação de itens, os dados de característica do usuário, incluindo um número de características do usuário contribuindo para as classificações respectivas do número de itens em relação ao número de usuários; receber, a partir de uma plataforma de rede social através da plataforma de recomendação e de classificação de itens por meio de um esquema de compartilhamento secreto sem um inicializador de confiança, um número de dados manipulados de rede social computados com base em dados de rede social e um primeiro número de variáveis aleatórias, em que os dados de rede social indicam as relações sociais entre quaisquer dois do número de usuários, em que, no esquema de compartilhamento secreto sem o inicializador de confiança, a plataforma de rede social compartilha com a plataforma de recomendação e de classificação de itens o número de dados manipulados de rede social sem revelar os dados de rede social; e atualizar, através da plataforma de recomendação e de classificação de itens, os dados de característica do usuário com base nos dados de classificação e no número de dados manipulados de rede social.
[065] Em uma terceira realização, um sistema implementado por computador, inclui: um ou mais computadores; e um ou mais dispositivos de memória de computador acoplados interoperacionalmente com um ou mais computadores e possuindo as instruções de armazenamento de meios tangíveis, não transitórios, que quando executadas por um ou mais computadores, realizam as operações que incluem: identificar, através de uma plataforma de recomendação e de classificação de itens, os dados de classificação incluindo as classificações respectivas de um número de itens em relação a um número de usuários; identificar, através da plataforma de recomendação e de classificação de itens, os dados de característica do usuário, incluindo um número de características do usuário contribuindo para as classificações respectivas do número de itens em relação ao número de usuários; receber, a partir de uma plataforma de rede social através da plataforma de recomendação e de classificação de itens por meio de um esquema de compartilhamento secreto sem um inicializador de confiança, um número de dados manipulados de rede social computados com base em dados de rede social e um primeiro número de variáveis aleatórias, em que os dados de rede social indicam as relações sociais entre quaisquer dois do número de usuários, em que, no esquema de compartilhamento secreto sem o inicializador de confiança, a plataforma de rede social compartilha com a plataforma de recomendação e de classificação de itens o número de dados manipulados de rede social sem revelar os dados de rede social; e atualizar, através da plataforma de recomendação e de classificação de itens, os dados de característica do usuário com base nos dados de classificação e no número de dados manipulados de rede social.
[066] O precedente e outras realizações descritas, opcionalmente, podem incluir uma ou mais das seguintes características:
[067] Uma primeira característica, combinável com qualquer uma das seguintes características, em que, no esquema de compartilhamento secreto sem o inicializador de confiança, a plataforma de recomendação e de classificação de itens compartilha com a plataforma de rede social diversos dados manipulados pelo usuário sem revelar os dados de característica do usuário, e em que o número de dados manipulados de característica do usuário são computados com base nos dados de característica do usuário e em um segundo número de variáveis aleatórias.
[068] Uma segunda característica, combinável com qualquer uma das características anteriores ou seguintes, em que a atualização dos dados de característica do usuário inclui a computação de um produto dos dados de característica do usuário e dos dados de rede social com base em uma soma um dos números de dados manipulados de características do usuário e um dos números de dados manipulados de rede social.
[069] Uma terceira característica, combinável com qualquer uma das características anteriores ou seguintes, em que a computação de um produto dos dados de característica do usuário e dos dados de rede social computando uma soma de um dos números de dados manipulados de características do usuário e um dos números de dados manipulados de rede social sem os dados de rede social inclui: para cada entrada no produto dos dados de característica do usuário e dos dados de rede social, computando um dos números de dados manipulados de características do usuário e um dos números de dados manipulados de rede social sem os dados de rede social.
[070] Uma quarta característica, combinável com qualquer uma das características anteriores ou seguintes, o método ou as operações ainda incluem: identificar os dados da característica do item incluindo um número de características de item contribuindo para as classificações respectivas do número de itens em relação ao número de usuários, em que um produto dos dados da característica do usuário e dos dados da característica do item resultam em uma estimativa dos dados de classificação; e atualizar os dados da característica do item com base nos dados de classificação, nos dados de característica do usuário e no número de dados manipulados de rede social.
[071] Uma quinta característica, combinável com qualquer uma das características anteriores ou seguintes, o método ou as operações ainda incluem: gerar os dados de classificação previstos do número de itens em relação ao número de usuários com base no produto dos dados de característica do usuário e dados da característica do item; e gerar uma recomendação de um item específico para um cliente específico com base nos dados de classificação previstos.
[072] Uma sexta característica, combinável com qualquer uma das características anteriores ou seguintes, em que atualizar os dados de característica do usuário inclui a solução de um problema de otimização para minimizar uma soma ponderada de uma diferença entre os dados de classificação previstos e os dados de classificação, os dados de característica do usuário ponderados pelos dados de rede social e um termo de prevenção de superposição.
[073] Uma sétima característica, combinável com qualquer uma das características anteriores ou seguintes, em que solucionar um problema de otimização, inclui a solução de uma equação: - em que: Ui representa um vetor dos dados da característica do usuário correspondente ao usuário i; Vj representa um vetor dos dados da característica do item correspondente ao item j; Rij representa uma classificação do item j pelo usuário i; Sik representa uma relação social entre o usuário i e o usuário k; 𝜆1 representa um peso predefinido associado aos dados de rede social; e 𝜆2 representa um peso predefinido para evitar a superposição.
[074] Uma oitava característica, combinável com qualquer uma das características anteriores ou seguintes, o método ou as operações ainda incluem: no esquema de compartilhamento secreto sem o inicializador de confiança, obter, através da plataforma de recomendação e de classificação de itens, um vetor dos dados de característica do usuário; gerar, através da plataforma de recomendação e de classificação de itens, os primeiros dados manipulados de característica do usuário com base no vetor dos dados de característica do usuário e no segundo número de variáveis aleatórias; transmitir, através da plataforma de recomendação e de classificação de itens para a plataforma de rede social, os primeiros dados manipulados de característica do usuário; receber, através da plataforma de recomendação e de classificação de itens a partir da plataforma de rede social, os primeiros dados manipulados de rede social computados com base nos dados de rede social e no primeiro número de variáveis aleatórias; e gerar, através da plataforma de recomendação e de classificação de itens, um dos dados manipulados de característica do usuário com base em dois ou mais dos primeiros dados manipulados de característica do usuário, os primeiros dados manipulados de rede social ou o segundo número de variáveis aleatórias.
[075] As realizações do assunto e as operações funcionais descritas na presente invenção podem ser implementadas em circuitos eletrônicos digitais, em software de computador ou firmware tangivelmente incorporado, em hardware de computador, incluindo as estruturas descritas na presente invenção e seus equivalentes estruturais, ou em combinações de uma ou mais delas. As realizações de software do assunto descrito podem ser implementadas como um ou mais programas de computador, isto é, um ou mais módulos de instruções de programas de computador codificados em um meio de armazenamento de computador tangível, não transitório, legível por computador, para a execução ou para o controle de operação de aparelhos de processamento de dados. De maneira alternativa ou adicional, as instruções do programa podem ser codificadas dentro / em um sinal propagado gerado artificialmente, por exemplo, um sinal elétrico, ótico ou eletromagnético gerado pela máquina que é gerado para codificar a informação para a transmissão ao aparelho receptor adequado para a execução por um aparelho de processamento de dados. O meio de armazenamento de computador pode ser um dispositivo de armazenamento legível por máquina, um substrato de armazenamento legível por máquina, um dispositivo de memória de acesso aleatório ou serial, ou uma combinação de meios de armazenamento de computador. Configurar um ou mais computadores significa que um ou mais computadores instalaram o hardware, firmware ou software (ou combinações de hardware, firmware e software) de maneira que, quando o software for executado por um ou mais computadores, as operações de computação específicas sejam executadas.
[076] O termo “tempo-real”, “tempo real”, “temporeal”, “tempo real (rápido) (RFT)”, “quase(tempo) em tempo real (NRT)”, “quase em tempo real” ou termos similares (conforme entendido por um técnico no assunto), significa que uma ação e uma resposta estão temporalmente próximas de tal maneira que um indivíduo percebe a ação e a resposta ocorrendo substancialmente simultaneamente. Por exemplo, a diferença de tempo de uma resposta para a exibição (ou para o início de exibição) de dados após a ação do indivíduo para acessar os dados pode ser inferior a 1 ms, inferior a 1 segundo ou inferior a 5 segundos. Embora os dados solicitados não precisem ser exibidos (ou iniciados para a exibição) instantaneamente, eles são exibidos (ou iniciados para a exibição) sem nenhum atraso intencional, levando em conta as limitações de processamento de um sistema de computação descrito e o tempo necessário, por exemplo, para reunir, medir com precisão, analisar, processar, armazenar ou transmitir os dados.
[077] Os termos "aparelho de processamento de dados", "computador" ou "dispositivo de computador eletrônico" (ou equivalente conforme entendido por um técnico no assunto) se referem ao hardware de processamento de dados e abrangem todos os tipos de aparelhos, dispositivos e máquinas para o processamento de dados, incluindo, a título de exemplo, um processador programável, um computador ou diversos processadores ou computadores. O aparelho também pode ser, ou ainda incluir, os circuitos lógicos com propósitos especiais, por exemplo, uma unidade central de processamento
(CPU), um FPGA (field programmable gate array), ou um ASIC (application specific integrated circuit). Em algumas realizações, o aparelho de processamento de dados ou circuitos lógicos para propósitos especiais (ou uma combinação do aparelho de processamento de dados ou circuitos lógicos para propósitos especiais) podem ser com base em hardware ou software (ou uma combinação de hardware e software). O aparelho, opcionalmente, pode incluir o código que cria um ambiente de execução para os programas de computador, por exemplo, o código que constitui o firmware de processador, uma pilha de protocolos, um sistema de gerenciamento de banco de dados, um sistema operacional ou uma combinação de ambientes de execução. A presente invenção contempla a utilização de aparelhos de processamento de dados com ou sem os sistemas operativos convencionais, por exemplo, LINUX, UNIX, WINDOWS, SO MAC, ANDROID, IOS ou qualquer outro sistema operacional convencional adequado.
[078] Um programa de computador, que também pode ser referido ou descrito como um programa, software, um aplicativo de software, um módulo, um módulo de software, um script ou código pode ser escrito em qualquer forma de linguagem de programação, incluindo as linguagens compiladas ou interpretadas, ou as linguagens declarativas ou procedimentais, e pode ser implementado em qualquer forma, incluindo como um programa independente ou como um módulo, componente, sub-rotina ou outra unidade adequada para a utilização em um ambiente de computação. Um programa de computador pode, mas não precisa, corresponder a um arquivo em um sistema de arquivos.
Um programa pode ser armazenado em uma parte de um arquivo que contém outros programas ou dados, por exemplo, um ou mais scripts armazenados em um documento de linguagem de marcação, em um único arquivo dedicado ao programa em questão ou em diversos arquivos coordenados, por exemplo. Por exemplo, os arquivos que armazenam um ou mais módulos, subprogramas ou partes do código. Um programa de computador pode ser implantado para ser executado em um computador ou em diversos computadores localizados em um site ou distribuídos em diversos sites e interconectados por uma rede de comunicação.
[079] Embora partes dos programas ilustrados nas diversas Figuras sejam mostradas como módulos individuais que implementam as diversas características e funcionalidades através de diversos objetos, métodos ou outros processos, os programas, em vez disso, podem incluir um número de sub- módulos, de terceiros, serviços, componentes, bibliotecas e similares, conforme adequado. Por outro lado, as características e a funcionalidade de diversos componentes podem ser combinadas em componentes individuais, conforme adequado. Os limites utilizados para realizar as determinações computacionais podem ser estaticamente, dinamicamente ou estaticamente e dinamicamente determinados.
[080] Os métodos, processos ou fluxos lógicos descritos na presente invenção podem ser realizados por um ou mais computadores programáveis executando um ou mais programas de computador para realizar as funções operando nos dados de entrada e gerando a saída. Os métodos, processos ou fluxos lógicos também podem ser realizados, e o aparelho também pode ser implementado como circuitos lógicos para propósitos especiais, por exemplo, uma CPU, um FPGA ou um ASIC.
[081] Os computadores adequados para a execução de um programa de computador podem ser com base em microprocessadores de utilização geral ou especial, ambos ou qualquer outro tipo de CPU. Em geral, uma CPU recebe as instruções e dados e grava em uma memória. Os elementos essenciais de um computador são uma CPU, para realizar ou executar instruções, e um ou mais dispositivos de memória para armazenar as instruções e dados. Em geral, um computador também irá incluir, ou estará acoplado operacionalmente para receber os dados ou transferir os dados, ou ambos, para um ou mais dispositivos de armazenamento em massa para armazenamento de dados, por exemplo, os discos magnéticos, magnetos óticos ou discos óticos. No entanto, um computador não precisa possuir esses dispositivos. Além disso, um computador pode ser incorporado em outro dispositivo, por exemplo, um telefone celular, um assistente digital pessoal (PDA), um tocador de áudio ou vídeo, um console de jogos, um receptor de sistema de posicionamento global (GPS) ou um dispositivo de armazenamento portátil, por exemplo, uma unidade flash de barramento serial universal (USB), para citar apenas alguns.
[082] Os meios legíveis por computador (transitórios ou não transitórios, conforme adequado) adequados para armazenar as instruções e dados de programas de computador incluem todas as formas de memória permanente, não permanente ou volátil / não volátil, meio e dispositivos de memória, inclusive a título de exemplo os dispositivos de memória semicondutores, por exemplo, a memória de acesso aleatório (RAM), memória somente de leitura (ROM), memória de mudança de fase (PRAM), memória de acesso aleatório estático (SRAM), memória de acesso aleatório dinâmica (DRAM), memória somente de leitura programável e apagável (EPROM), memória EEPROM (memória somente de leitura) eletricamente apagável e os dispositivos de memória flash; dispositivos magnéticos, por exemplo, as fitas, cartuchos, cassetes, discos internos / removíveis; discos magneto-óticos; e os dispositivos de memória ótica, por exemplo, o disco de vídeo digital (DVD), CD- ROM, DVD +/- R, DVD-RAM, DVD-ROM, HD-DVD e BLURAY e outras tecnologias de memória ótica. A memória pode armazenar diversos objetos ou dados, incluindo os caches, classes, estruturas, aplicativos, módulos, dados de backup, tarefas, páginas da Web, modelos de páginas da Web, estruturas de dados, tabelas de banco de dados, repositórios armazenando as informações dinâmicas e qualquer outra informação adequada, incluindo quaisquer parâmetros, variáveis, algoritmos, instruções, regras, restrições ou referências a eles. Além disso, a memória pode incluir quaisquer outros dados adequados, tais como os logs, políticas, dados de segurança ou acesso, arquivos de relatórios e outros. O processador e a memória podem ser complementados, ou incorporados em circuitos lógicos para propósitos especiais.
[083] Para fornecer a interação com um usuário, as realizações do assunto descrito na presente invenção podem ser implementadas em um computador com um dispositivo de exibição, por exemplo, um CRT (tubo de raios catódicos), LCD (tela de cristal líquido), LED (Diodo de Emissão de Luz), ou monitor de plasma, para exibir as informações ao usuário e um teclado e um dispositivo apontador, por exemplo, um mouse, trackball ou trackpad, pelo qual o usuário pode fornecer as informações ao computador. A entrada também pode ser fornecida ao computador utilizando uma tela sensível ao toque, como uma superfície de computador tablet com sensibilidade à pressão, uma tela multitoque utilizando o sensor capacitivo ou elétrico ou outro tipo de tela sensível ao toque. Outros tipos de dispositivos também podem ser utilizados para fornecer a interação com um usuário; por exemplo, o feedback fornecido ao usuário pode ser qualquer forma de feedback sensorial, por exemplo, o feedback visual, feedback auditivo ou feedback tátil; e a entrada do usuário pode ser recebida de qualquer forma, incluindo a entrada acústica, de fala ou tátil. Além disso, um computador pode interagir com um usuário enviando documentos e recebendo documentos de um dispositivo utilizado pelo usuário; por exemplo, enviando as páginas da web para um navegador da web no dispositivo de cliente de um usuário em resposta às solicitações recebidas do navegador da web.
[084] O termo "interface gráfica do usuário", ou "GUI", pode ser utilizado no singular ou no plural para descrever uma ou mais interfaces gráficas do usuário e cada uma das exibições de uma interface gráfica de usuário especial. Por conseguinte, uma GUI pode representar qualquer interface gráfica do usuário, incluindo, mas não limitada a um navegador da Web, uma tela sensível ao toque ou uma interface de linha de comando (CLI) que processa as informações e apresenta de maneira eficiência os resultados da informação ao usuário. Em geral, uma GUI pode incluir diversos elementos da interface do usuário (UI), alguns ou todos associados a um navegador da Web, tais como os campos interativos, listas suspensas e botões. Esses e outros elementos da interface do usuário podem estar relacionados ou representar as funções do navegador da web.
[085] As realizações do assunto descrito na presente invenção podem ser implementadas em um sistema de computação que inclui um componente de back-end, por exemplo, tal como um servidor de dados, ou que inclui um componente de middleware, por exemplo, um servidor de aplicativos ou inclui um componente front-end, por exemplo, um computador de cliente com uma interface gráfica do usuário ou um navegador da Web por meio do qual um usuário pode interagir com uma realização do assunto descrito na presente invenção ou qualquer combinação de um ou mais desses back end, middleware ou componentes front-end. Os componentes do sistema podem estar interconectados por qualquer forma ou meio de comunicação de dados digitais com fio ou sem fio (ou uma combinação de comunicação de dados), por exemplo, uma rede de comunicação. Os exemplos de redes de comunicação incluem uma rede local (LAN), uma rede de acesso de rádio (RAN), uma rede de área metropolitana (MAN), uma rede de longa distância (WAN), Interoperabilidade Mundial para Acesso a Microondas (WIMAX), uma rede de área local sem fio (WLAN) utilizando, por exemplo, 802.11 a/b/g/n ou 802.20 (ou uma combinação de 802.11xe 802.20 ou outros protocolos consistentes com esta descrição), toda ou parte da Internet, ou qualquer outro sistema de comunicação ou sistemas em um ou mais locais (ou uma combinação de redes de comunicação). A rede pode se comunicar, por exemplo, com os pacotes IP
(Internet Protocol), quadros Frame Relay, células ATM (Asynchronous Transfer Mode), voz, vídeo, dados ou outras informações adequadas (ou uma combinação de tipos de comunicação) entre endereços de rede.
[086] O sistema de computação pode incluir os clientes e servidores. Um cliente e um servidor, em geral, são remotos entre si e normalmente interagem através de uma rede de comunicação. A relação de cliente e servidor surge em virtude de programas de computador em execução nos respectivos computadores e que possui uma relação cliente-servidor entre si.
[087] Embora esta especificação contenha muitos detalhes específicos de realização, estes não devem ser interpretados como limitações no âmbito de qualquer invenção ou no âmbito do que pode ser reivindicado, mas como descrições de características que podem ser específicas para as realizações específicas de determinadas invenções. Determinadas características descritas na presente invenção no contexto de realizações separadas também podem ser implementadas, em combinação, em uma única realização. Por outro lado, diversas características descritas no contexto de uma única realização também podem ser implementadas em diversas realizações, separadamente ou em qualquer subcombinação adequada. Além disso, embora as características descritas anteriormente possam estar descritas como atuando em determinadas combinações e até mesmo inicialmente reivindicadas como tal, uma ou mais características de uma combinação reivindicada, em alguns casos, podem ser excisadas da combinação, e a combinação reivindicada pode ser direcionada a uma combinação, subcombinação ou variação de uma subcombinação.
[088] As realizações específicas do assunto foram descritas. Outras realizações, alterações e permutações das realizações descritas estão dentro do âmbito das seguintes reivindicações, conforme será evidente para os técnicos no assunto. Embora as operações sejam representadas nos desenhos ou reivindicações em uma ordem específica, isso não deve ser entendido como exigindo que tais operações sejam executadas na ordem especial mostrada ou em ordem sequencial, ou que todas as operações ilustradas sejam executadas (algumas operações podem ser consideradas opcionais).), para alcançar os resultados desejáveis. Em determinadas circunstâncias, o processamento multitarefa ou paralelo (ou uma combinação de processamento multitarefa e paralelo) pode ser vantajoso e realizado conforme adequado.
[089] Além disso, a separação ou integração de diversos módulos e componentes do sistema nas realizações descritas anteriormente não devem ser entendidas como exigindo tal separação ou integração em todas as realizações, e deve ser entendido que os componentes e sistemas do programa descritos, em geral, podem ser integrados em conjunto em um único item de software ou empacotados em diversos itens de software.
[090] Por conseguinte, as realizações de exemplo descritas anteriormente não definem ou restringem esta descrição. Outras mudanças, substituições e alterações também são possíveis sem sair do escopo da presente invenção.
[091] Além disso, qualquer realização reivindicada é considerada aplicável a, pelo menos, um método implementado por computador; um meio não transitório, legível por computador, que armazena as instruções legíveis por computador para realizar o método implementado por computador; e um sistema de computador incluindo uma memória de computador interoperacionalmente acoplada a um processador de hardware configurado para realizar o método implementado por computador ou as instruções armazenadas no meio não transitório, legível por computador.