# Is it wrong to use Binary Vector data in Cosine Similarity?

I am doing Information Retrieval using Cosine Similarity.

My data is binary vector.

Since most of all reference I read is using non-binary vector (non-binary matrix) data, I am wondering if it is wrong to use binary vector data in cosine similarity function.

-

Using binary vector data works perfectly for doing cosine similarity studies. Actually, it makes the arithmetic much simpler because the magnitude of each vector is simply equal to the squareroot of the sum of its entries.

-

Consider looking at the Jaccard coefficient and Tanimoto coefficient. These two are probably a bit more sensible for binary data.

You can obviously use cosine distance, but computing it this way makes things overcomplicated when you have binary data. The dot product boils down to computing the size of the intersection set, the vector length are the number of bits set. Realizing that you are just looking at set sizes leads to more straightforward and fast ways of computing these things.

-

In a similar senario with binary vectors (recommender systems in my case which can be see as a special case of information retrieval) I had very good success with cosine similarity.

When measuring Rankscore I got much better rate on my retrievals when I used Cosine similarity than with the Tanimoto coefficient, but this might be very application specific. You should probably experiment with different similarity measurements and see what yields the best result in you application.

I compare the result of the effects from different similarity measures between my binary vectors here. As mentioned above I have the greatest success with cosine similarity.

-