機械学習編

基礎的な機械学習ロジックの理解を問います

k-最近傍法 (k-NN): 距離計算 レベル1

k-最近傍法 (k-NN) において、2次元空間に分類したい新しい点(テスト点) \(P_{test} = (2, 3)\) と、既にクラスが分かっている2つの訓練点 \(P_1 = (1, 1), P_2 = (4, 5)\) があります。テスト点と訓練点 \(P_1\)の間の<strong>ユークリッド距離</strong>を計算してください。(小数点以下3桁まで求めてください)

解説
解答と解説を表示
<h4>k-最近傍法 (k-Nearest Neighbors, k-NN) とは?</h4> <p>k-NNは、分類・回帰に用いられるシンプルな<strong>教師あり学習</strong>アルゴリズムです。「怠惰学習」とも呼ばれ、明示的なモデル学習フェーズを持ちません。予測時には、新しいデータ点(テスト点)と最も近い \(k\) 個の訓練データ点(近傍点)を探し、それらの情報(クラスラベルや値)に基づいて予測を行います。</p> <h4>アルゴリズムのステップ(分類の場合)</h4> <ol> <li><strong>距離計算:</strong> テスト点と全ての訓練点との距離を計算します。</li> <li><strong>近傍点の選択:</strong> 距離が近い順に \(k\) 個の訓練点を選びます(\(k\)はハイパーパラメータ)。</li> <li><strong>多数決:</strong> \(k\) 個の近傍点のクラスラベルで最も多数を占めるクラスを、テスト点のクラスとして予測します。</li> </ol> <h4>距離指標: ユークリッド距離</h4> <p>ステップ1の距離計算で最も一般的に用いられるのがユークリッド距離です。2点 \(P_1(x_1, y_1)\) と \(P_2(x_2, y_2)\) の間の直線距離を表します。</p> <div class="formula"> $ d(P_1, P_2) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}$ </div> <h4>計算ステップ</h4> <p>テスト点 \(P_{test} = (2, 3)\) と訓練点 \(P_1 = (1, 1)\) の間のユークリッド距離 \(d_1\) を計算します。</p> <div class="formula"> $ d_1 = d(P_{test}, P_1) = \sqrt{(1 - 2)^2 + (1 - 3)^2} \\\ = \sqrt{(-1)^2 + (-2)^2} = \sqrt{1 + 4} = \sqrt{5} \\\ \approx 2.23606...$ </div> <p>小数点以下3桁まで求めると、距離は約 <strong>2.236</strong> です。</p> <p><strong>(参考) テスト点と訓練点 \(P_2=(4, 5)\) の距離 \(d_2\):</strong></p> <div class="formula"> $ d_2 = d(P_{test}, P_2) = \sqrt{(4 - 2)^2 + (5 - 3)^2} = \sqrt{2^2 + 2^2} = \sqrt{4 + 4} = \sqrt{8} \approx 2.828$ </div> <p>もし \(k=1\) なら、距離がより近い \(P_1\) のクラスが予測結果となります。</p> <div class="key-point"> <div class="key-point-title">重要ポイント:k-NN</div> <ul> <li><strong>シンプルさ:</strong> アルゴリズムが直感的で理解しやすい。</li> <li><strong>非線形性:</strong> 複雑な決定境界を表現できる。</li> <li><strong>計算コスト:</strong> 予測時に全訓練データとの距離計算が必要で、データ量が多いと遅い。</li> <li><strong>\(k\) の選択:</strong> \(k\) の値が性能に大きく影響する(小さいと過学習、大きいと過度に平滑化)。</li> <li><strong>スケーリング:</strong> 特徴量のスケールを揃える(標準化など)ことが重要。</li> <li><strong>距離指標:</strong> ユークリッド距離以外(マンハッタン距離、コサイン類似度など)も利用される。</li> </ul> </div>
問題 1/1
カテゴリ一覧に戻る