※本情報は解説作成時点のもので、閲覧時点では法改正等により情報が変更になっている場合がございます。あらかじめご理解いただければ幸いです。
正解は「A. (vector1[i] × vector2[i])の正の平方根」「B. denominator × (tempの正の平方根)」です。
この問題は、二つのベクトル間のコサイン類似度を計算するアルゴリズムの空欄補充問題です。
この記事では、基本情報技術者試験(FE)試験(令和5年度)で出題された過去問の第5問「コサイン類似度計算」について、試験対策の観点からわかりやすく解説します。
コサイン類似度の定義
cosθ = (a₁b₁ + a₂b₂ + … + aₙbₙ) ÷ √(a₁² + … + aₙ²) × √(b₁² + … + bₙ²)
コサイン類似度は、二つのベクトルの方向の類似性を測る尺度で、ベクトルの内積をベクトルの大きさの積で割った値として定義されます。
プログラム中の空欄の意味
- A: numerator の計算 → vector1[i] × vector2[i] の積を足し合わせる
- B: denominator の計算 → vector1 側の平方根と vector2 側の平方根を掛ける
具体的には、まず numerator に各要素の積を加算し、vector1 のノルムを denominator に代入。次に vector2 のノルムを計算し、denominator に掛けて最終的に similarity を計算します。
他の選択肢との違い
- A: vector1[i]の2乗 → numerator は内積なので誤り
- A: (vector1[i] × vector2[i])の正の平方根 → 正しい処理
- B: denominator + tempの正の平方根 → ノルムは掛け算で計算するため誤り
正しい実装は、numerator に積を足し、denominator に vector1 の平方根 × vector2 の平方根を掛ける形です。
問われているポイント
この問題では、コサイン類似度の数式を理解し、プログラム内で正しく内積とノルムの計算を対応させられるかが問われています。
気を付けてほしい点(勘違いしやすいポイント)
- numerator は単なる積の合計であり平方根は不要
- denominator は vector1 と vector2 のノルムの積であること
補足
数式をプログラムに正確に落とし込む練習が重要です。
基本情報技術者試験(FE)試験での出題パターン
アルゴリズムの理解を問う問題として、ベクトル計算や類似度計算の実装が出題されます。
数式とプログラムの対応を意識して学習しましょう。
この知識が使われている問題
まとめ
- numerator に (vector1[i] × vector2[i]) を加算
- denominator は vector1 と vector2 の平方根を掛け合わせて similarity を計算