L1-ノルムを使用した場合、コサインを計算していません。
コサインは幾何学的な概念であり、ランダムな定義ではありません。それに付随する数学の文字列全体があります。L1 を使用した場合は、もう角度を測定していません。
参照:ウィキペディア: 三角関数 - コサイン
コサインは、L2 正規化ベクトルのユークリッド距離に対して単調であることに注意してください。
Euclidean(x,y)^2 = sum( (x-y)^2 ) = sum(x^2) + sum(y^2) - 2 sum(x*y)
xと y が L2 正規化されている場合sum(x^2)=sum(y^2)=1
、 、そして
Euclidean(x_norm,y_norm)^2 = 2 * (1 - sum(x_norm*y_norm)) = 2 * (1 - cossim(x,y))
したがって、コサイン類似度を使用することは、基本的にデータを単位長に標準化することを意味します。しかし、これに関連する計算上の利点もありsum(x*y)
ます。まばらなデータの計算が安価になるからです。
データを L2 正規化した場合、
Euclidean(x_norm, y_norm) = sqrt(2) * sqrt(1-cossim(x,y))
質問の 2 番目の部分: L1 ノルムを修正するのはそれほど簡単ではありません。ベクトル (1,1) と (2,2) を考えてみましょう。明らかに、これら 2 つのベクトルは同じ角度を持っているため、コサイン類似度 1 を持つ必要があります。
あなたの方程式を使用すると、類似性があります(2+2)/(2*4) = 0.5
ベクトル (0,1) と (0,2) を見ると、ほとんどの人が上記の例と同様の類似性を持つべきであることに同意します (そして、余弦が実際に同じ類似性を与える場合)、方程式は になります(0+2)/(1+2) = 0.6666...
。あなたの類似性は直感と一致しませんね。