R でコサイン類似度を計算する方法
コサイン類似度は、内積空間の 2 つのベクトル間の類似性の尺度です。
2 つのベクトル A と B について、コサイン類似度は次のように計算されます。
コサイン類似度= ΣA i B i / (√ΣA i 2 √ΣB i 2 )
このチュートリアルでは、 lsaライブラリのcosine()関数を使用して R のベクトル間のコサイン類似度を計算する方法について説明します。
R の 2 つのベクトル間のコサイン類似度
次のコードは、R の 2 つのベクトル間のコサイン類似度を計算する方法を示しています。
library (lsa) #definevectors a <- c(23, 34, 44, 45, 42, 27, 33, 34) b <- c(17, 18, 22, 26, 26, 29, 31, 30) #calculate Cosine Similarity cosine(a, b) [,1] [1,] 0.965195
2 つのベクトル間のコサイン類似度は0.965195であることがわかります。
R の行列のコサイン類似度
次のコードは、ベクトルの行列間のコサイン類似度を計算する方法を示しています。
library (lsa) #define matrix a <- c(23, 34, 44, 45, 42, 27, 33, 34) b <- c(17, 18, 22, 26, 26, 29, 31, 30) c <- c(34, 35, 35, 36, 51, 29, 30, 31) data <- cbind(a, b, c) #calculate Cosine Similarity cosine(data) ABC a 1.0000000 0.9651950 0.9812406 b 0.9651950 1.0000000 0.9573478 c 0.9812406 0.9573478 1.0000000
結果を解釈する方法は次のとおりです。
- ベクトルaとbの間のコサイン類似度は0.9651950です。
- ベクトルaとcの間のコサイン類似度は0.9812406です。
- ベクトルbとcの間のコサイン類似度は0.9573478です。
コメント
1. cosine()関数は、任意のサイズの正方行列を処理します。
2. cosine() 関数は行列では機能しますが、データ フレームでは機能しません。ただし、 as.matrix()関数を使用すると、R でデータ フレームを行列に簡単に変換できます。
3.コサイン類似度の詳細については、この Wikipedia ページを参照してください。