なぜ誰もが回帰にKNNを使用するのでしょうか?


26

私が理解していることから、訓練データの間隔内にある回帰関数のみを構築できます。

例(パネルの1つだけが必要です): ここに画像の説明を入力してください

KNNリグレッサーを使用して将来をどのように予測しますか?繰り返しますが、トレーニングデータの間隔内にある関数のみを近似しているようです。

私の質問:KNNリグレッサーを使用する利点は何ですか?私はそれが分類のための非常に強力なツールであることを理解していますが、回帰シナリオではパフォーマンスが悪いようです。


「未来への予測」が意味することを明確にできますか?時系列があり、予測を行いたいですか、それとも2つの変数間の関係を適合させ、将来的にそれを使用して既知のX値からY値を推測したいですか?
GUNG -復活モニカ

1
たとえば、上の画像からX = 15になるように値Yを予測したい場合。KNNリグレッサーはそれを正しくカットしませんか?

1
を使用してセットでトレーニングしたが、データの値をはるかに超える値が表示されることが予想される場合、ノンパラメトリックローカルメソッドは理想的ではない可能性があることに同意します。代わりに、そのドメインの知識を使用して、「観測されていない」動作に関する知識を含むパラメトリックモデルを定義できます。x[0,5]xx
メドーラークブラッシャー14年

1
KNNが回帰に正常に使用されている例は、ネイトシルバーのPECOTA野球予測です。長所と短所については、PECOTAに関するWikipediaの記事または次のような新聞記事から読むことができます。macleans.ca
Flounderer

6
また、より一般的な点を挙げると、統計(またはデータマイニング/機械学習など)に精通すると、あなたのような非常に一般的な質問に対する答えは、「依存する」の言い換えバージョンになることがよくあります。「それが依存するもの」とその理由を知ることは知識です。
メドーラークブラッシャー14年

回答:


17

K-NNなどのローカルメソッドは、状況によっては意味があります。

私が学校で行った1つの例は、セメント成分のさまざまな混合物の圧縮強度を予測することに関するものでした。これらの成分はすべて、応答または互いに関して比較的不揮発性であり、KNNは信頼性の高い予測を行いました。言い換えれば、独立変数はどれも、個々に、またはおそらく相互作用によってモデルに与える不均衡に大きな分散を持っていませんでした。

これを最終的に示すデータ調査手法を知らないので、これを一見してみてください。しかし、直感的には、フィーチャにある程度の分散度がある場合、どの割合かわからないので、 KNN候補。私は確かに、この効果のために開発されたいくつかの研究と結果の技術があるかどうか知りたいです。

一般化されたドメインの観点から考えると、同様の「レシピ」が同様の結果をもたらす幅広い種類のアプリケーションがあります。これは確かに、混合セメントの結果を予測する状況を説明しているように見えました。この説明に従って動作するデータがあり、さらに距離測定も手元のドメインに自然であり、最後に十分なデータがある場合、KNNまたは別のローカルメソッドから有用な結果を取得する必要があると思います。

また、ローカルメソッドを使用すると、非常に低いバイアスのメリットも得られます。一般的な加算モデル(GAM)は、KNNを使用して個々の変数を次のように適合させることにより、バイアスと分散のバランスを保つことがあります。

y^=f1(x1)+f2(x2)++fn(xn)+ϵ

加算部分(プラス記号)は大きな変動から保護し、代わりにKNNを使用すると高いバイアスから保護します。fn(xn)

KNNをそんなに早く消すつもりはありません。場所があります。


1
knnのデータのスケーリングに関するこの回答は、「比例した分散度」によってあなたが意味することを表現するのに役立つかもしれません。stats.stackexchange.com/questions/287425/...
eric_kernfeld

5

私はそれを言いたくありませんが、実際には、「将来への予測」は、knnでも現在存在する他の分類器またはリグレッサーでも不可能ではないということです。

もちろん、線形回帰の線またはSVMのハイパープレーンを外挿することはできますが、最終的には、将来がどうなるかわかりません。これは、たとえばガウスプロセスなどのベイジアンメソッドを見ると明らかになります。「既知の入力ドメイン」を離れるとすぐに大きな不確実性に気づくでしょう。

もちろん、今日起こったことから明日起こりそうなことまで一般化してみることができます。これは、knnリグレッサーで簡単に実行できます(たとえば、クリスマス期間中の昨年の顧客数は、今年の数について良いヒントを与えてくれます)。確かに他の方法には傾向などが組み込まれている可能性がありますが、最終的には、株式市場や長期的な天気予報に関して、どれだけうまく機能するかを見ることができます。


+1は、外挿に対する注意と、外挿時のKNNの(比較的保守的な)動作についての議論のためです。
eric_kernfeld

KNNは、OPが示す動作のために正確に外挿する場合、線形回帰よりも保守的です。すでに観測されたY値の範囲内でのみ予測を生成できます。これは多くの状況で利点となります。
eric_kernfeld

1

最初に、「KNNリグレッサーを使用して将来をどのように予測しますか?」の例です。

問題: 、から明日時間を予測します。 トレーニングデータ:過去10年間の(ある都市)、3650の数字。sunt+1sunt..sunt6
sunt

示し と。weektsunt..sunt6tomorrow(weekt))sunt+1

方法:3650奇数の曲線をk = 7のkdツリーに配置します。 新しい与えられた、10最近傍週の発言を見て 自分で と計算の加重平均weekt
week
tomorrow0..tomorrow9
predict(week)tomorrow0..tomorrow9

重みを調整します。たとえば、inverse-distance-weighted-idw-interpolation-with-python
および7dの「最近傍」の距離メトリックを参照してください 。

「KNNリグレッサーを使用する利点は何ですか?」
他の人の良いコメントに、簡単にコーディングして理解し、ビッグデータにスケールアップします。
欠点:データやチューニングに敏感で、あまり理解していない。


(用語に関する長い脚注:
「回帰」は「モデルをデータに適合させる」ための凝った言葉として使用されます。
最も一般的なのは、データを線形モデルでターゲット適合させることです: 先週または一年の価格から 明日の株価を予測することも一般的です: 予測者はこれをARMA、自己回帰移動平均モデル、 または自己回帰モデルと呼びます回帰分析 も参照してください 。XY
Y t + 1Yt=b0Xt+b1Xt1+...
Yt+1
Yt+1=a0Yt+a1Yt1+...

したがって、最初の行「トレーニングデータの間隔内にある回帰関数のみを構築できます」は、混乱を招く単語「回帰」に関するもののようです。


1

統計的学習への入門、セクション3.5:

真の関係が不明な現実の状況では、真の関係が線形の場合、最悪の場合線形回帰よりもわずかに劣るため、KNNが線形回帰よりも有利であるという結論を引き出すことができます。真の関係が非線形の場合に結果。

しかし、制約があります(教科書ではなく、私が結論付けたものです):

  1. 予測子ごとに十分な数の観測。
  2. 予測子の数が多すぎてはいけません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.