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)
Respostas:
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.
fonte
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.
fonte