コサイン類似度
Cosine Similarity
2つのベクトルが同じ方向を向いているほどを類似度が高くなる
定義
$ \text{similarity}(\mathbf{x}, \mathbf{y}) = \frac{\mathbf{x} \cdot \mathbf{y}}{\|\mathbf{x}\| \|\mathbf{y}\|} = \frac{\sum\limits_{i=1}^{n} x_i y_i}{\sqrt{\sum\limits_{i=1}^{n} x_i^2} \sqrt{\sum\limits_{i=1}^{n} y_i^2}}
Julia
code:jl
function cosine_similarity(x::Vector{T}, y::Vector{T}) where T <: AbstractFloat
norm_x = norm(x)
norm_y = norm(y)
if norm_x == 0 || norm_y == 0 # 0除算対策
return 0.0
else
return dot(x,y) / (norm_x * norm_y)
end
end
cosine_similarity(x, y) # 0.9914601339836675