MyMediaLite.Correlation.BinaryCosine.ComputeCorrelation C# (CSharp) Method

ComputeCorrelation() public static method

Computes the cosine similarity of two binary vectors
public static ComputeCorrelation ( HashSet vector_i, HashSet vector_j ) : float
vector_i HashSet the first vector
vector_j HashSet the second vector
return float
        public static float ComputeCorrelation(HashSet<int> vector_i, HashSet<int> vector_j)
        {
            int cntr = 0;
            foreach (int k in vector_j)
                if (vector_i.Contains(k))
                    cntr++;
            return (float) cntr / (float) Math.Sqrt(vector_i.Count * vector_j.Count);
        }

Usage Example

		[Test()] public void TestComputeCorrelation()
		{
			var vector1 = new HashSet<int>();
			vector1.Add(0);
			vector1.Add(2);
			vector1.Add(4);
			var vector2 = new HashSet<int>();
			vector2.Add(1);
			vector2.Add(3);
			vector2.Add(4);
			
			var cosine = new BinaryCosine(4);
			
			Assert.AreEqual(1 / 3f, cosine.ComputeCorrelation(vector1, vector2), DELTA);
			Assert.AreEqual(0f, cosine.ComputeCorrelation(vector1, new HashSet<int>()), DELTA);
		}