KNNには損失関数がありますか?


9

機械学習のコンテキストで、wikiに損失関数の定義が見つかりませんでした。

これはあまり正式ではありませんが、十分に明確です。

基本的に、損失関数は信じられないほど単純です。これは、アルゴリズムがデータセットをどれだけうまくモデル化しているかを評価する方法です。予測が完全にオフの場合、損失関数はより高い数値を出力します。それらがかなり良い場合、より低い数を出力します。アルゴリズムの一部を変更してモデルを改善しようとすると、損失関数は、どこかに到達したかどうかを通知します。

と思われるKNNのエラーレートが、そのような勾配法など自体が最適化モデルを導く可能性が関数ではありません。

では、KNNには損失関数がありますか?

回答:


11

k -NNには、トレーニング中に最小化できる損失関数がありません。実際、このアルゴリズムはまったくトレーニングされていません。 -NNで発生する唯一の「トレーニング」は、データの記憶(ローカルコピーの作成)であるため、予測時に検索と多数決を行うことができます。技術的には、データに関数が適合しないため、最適化は行われません(勾配降下を使用してトレーニングすることはできません)。k


4
k最近傍は、「トレーニング」の間に損失関数を使用していませんが、それはそこに意味するものではありませんではない k最近傍を定義する損失関数が。例:中央値が平均絶対差損失を最小化することはよく知られています。ただし、平均腹部損失を計算することはありません。また、勾配降下法などの最適化を使用して中央値を計算することもありません。それは時々平均腹痛の損失を最小限に抑えることはまだ有用な事実です。同様に、kNNが常に最小化する損失関数を作成することもできます
nikie

@nikieは本当ですが、kNNではそれらを近傍間のローカル集約関数として使用します(全体の損失に変換して最小化するのは困難です)。また、k = 1の場合、そのような関数は使用しません。また、トレーニングには使用されません。これを損失関数と呼ぶのは、kNNに分類子の定義を適合させるための精神的な練習にすぎません。そのように定義する説得力のある理由はわかりません。
Tim

-2

受け入れられた回答に同意しません(やや)。

KNNは分類アルゴリズムであり、損失関数なしで分類アルゴリズムを実行しても意味がありません。アルゴリズムがどれだけうまく機能したかに興味があるでしょう。KNNの場合、たとえば、各クラスの平均精度の合計を調べることにより、分類の品質を評価できます。または、アルゴリズムの精度のみに集中することもできます。

KNNを強化する最適化方法は損失関数に依存しないため、トレーニング中は、損失関数にアピールすることはなく、勾配降下法を使用してトレーニングすることもありません。

これを次の「K最近傍分類子」と対照的にしてくださいクラスの場合、最初に平均をトレーニングし、次に各重心に属する主要なポイント数によって各ポイントのクラスを定義します。たとえば、このアルゴリズムを各重心からの最小二乗誤差の段階的な最小化でトレーニングすることができます(最近傍に基づいて重心を再計算します)。これには依存しないオリジナルのアルゴリズムにもかかわらず、クラス。KK


5
アルゴリズムのパフォーマンスを評価するメトリックと最小化する損失は、2つの異なるものです。実際、計算上の理由などから、後のメトリックとは異なる損失を最小限に抑えることができます。
Tim

@ティム:私たちは同じページにいると思います。それは、最後の段落で、メトリックがトレーニングに使用されている点とまったく同じだと思います。ただし、アルゴリズムを評価するトレーニングを行った後も、損失関数が必要です。クラスのある種の損失関数(その間またはその後)に訴えることなく訓練された分類アルゴリズムは、定義上、監視されていません。
Alex R.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.