Qual deve ser o valor do campo não classificado ao encontrar semelhança de cosseno


8

Estou trabalhando em um sistema de recomendação de livros muito básico. Quero saber o que fazer com os campos que não são classificados pelo usuário ao encontrar similaridade de cosseno, devemos ignorá-los e calcular apenas com os campos classificados ou marcá-los 0.

O livro que estou seguindo diz para excluir os campos, pois dará uma interpretação incorreta no caso da Correlação Euclidiana e Pearson, mas no caso da Semelhança Cosina, ele faz com que todos os campos não classificados sejam 0.

Alguém pode explicar por que é necessário fazer com que os campos não classificados sejam 0 apenas para Cosine e não outros, ou existe uma maneira diferente de fazê-lo. (Eu sei como fazer os campos 0 em Euclidiano e Pearson afeta a saída, mas não tenho certeza do cosseno)


Você pode olhar para esta pergunta no stackoverflow para obter mais informações sobre isso.
janpreet Singh

A resposta responde parcialmente à pergunta, pois mostra que manter entradas não classificadas como 0 afetará definitivamente a similaridade correspondente. Que poderia ser (ou não) utilizado no algoritmo para o motor recommender
janpreet singh

Você já tentou a normalização média?
Valentin Calomme

Respostas:


1

No lado da implementação, há um bom motivo para fazer 0 corresponder a não classificado. Como a maioria dos usuários não classificou a maioria dos livros, 0 será o valor mais comum e a função de similaridade de cosseno pode usar matrizes esparsas internamente para acelerar o cálculo. O atalho de matriz esparsa é a principal razão pela qual as pessoas usam a semelhança de cosseno em primeiro lugar.

Por outro lado, rejeitará suas recomendações se o algoritmo interpretar um 0 mais próximo de 1 que 2. 2. Você precisa ignorá-los intencionalmente, mas pode fazê-lo facilmente dentro da implementação de semelhança de cosseno em vez de filtrar o dados antes de aplicá-los.


1. Então, de acordo com a sua resposta, seguir alguma coisa não deve afetar o resultado?
divyum

0

Considere como a semelhança de cosseno é calculada .

A similaridade do cosseno pega o produto escalar de dois vetores reais e divide esse valor pelo produto de suas magnitudes. Pela identidade do produto pontilha euclidiano, isso é igual ao cosseno do ângulo entre os dois vetores. O resultado disso é um valor entre 1 e -1.

Quando o valor é 1, esses vetores estão apontando exatamente na mesma direção. Quando o valor é -1, os vetores estão apontando exatamente na direção oposta (um é a negação do outro). Quando o valor é 0, os vetores são perpendiculares um ao outro; em outras palavras, quando o valor é zero, esses dois vetores são tão diferentes no espaço de feição quanto é possível obter.

O produto pontual é a soma de todos os produtos por elementos dos seus dois vetores. Quanto maiores esses números, mais eles contribuem para a semelhança do cosseno.

Agora, pegue qualquer recurso em seu vetor. O quinto, digamos. Se você definir como zero em um de seus vetores, o quinto elemento no produto dos dois vetores também será zero, independentemente de seu valor no outro vetor. Quando você soma todos esses produtos por elementos, o quinto elemento não afeta a soma. Como resultado, definir um valor em seu vetor de característica como zero significa que ele não faz nenhuma contribuição para a semelhança do cosseno.

É por isso que definir um valor como zero em um vetor de característica é equivalente a não incluir a característica no cálculo da semelhança de cosseno e não distorce a semelhança de cosseno.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.