コサイン類似度の表現方法 ( http://en.wikipedia.org/wiki/Cosine_similarity )
ベクトルの 1 つがすべてゼロの場合は?
v1 = [1, 1, 1, 1, 1]
v2 = [0, 0, 0, 0, 0]
古典的な公式に従って計算すると、ゼロ除算が得られます。
Let d1 = 0 0 0 0 0 0
Let d2 = 1 1 1 1 1 1
Cosine Similarity (d1, d2) = dot(d1, d2) / ||d1|| ||d2||dot(d1, d2) = (0)*(1) + (0)*(1) + (0)*(1) + (0)*(1) + (0)*(1) + (0)*(1) = 0
||d1|| = sqrt((0)^2 + (0)^2 + (0)^2 + (0)^2 + (0)^2 + (0)^2) = 0
||d2|| = sqrt((1)^2 + (1)^2 + (1)^2 + (1)^2 + (1)^2 + (1)^2) = 2.44948974278
Cosine Similarity (d1, d2) = 0 / (0) * (2.44948974278)
= 0 / 0
この類似性尺度をクラスタリング アプリケーションで使用したいと考えています。そして、そのようなベクトルを比較する必要があることがよくあります。また、[0, 0, 0, 0, 0] 対 [0, 0, 0, 0, 0]
経験はありますか?これは類似性 (距離ではない) の尺度であるため、特殊なケースを使用する必要があります。
d( [1, 1, 1, 1, 1]; [0, 0, 0, 0, 0] ) = 0
d([0, 0, 0, 0, 0]; [0, 0, 0, 0, 0] ) = 1
どうですか
d([1, 1, 1, 0, 0]; [0, 0, 0, 0, 0] ) = ? 等