局所回帰とカーネル回帰(ノンパラメトリック)

この問題は、ノンパラメトリック・データ・フィッティング関数の2つに関する顧客からの問い合わせに端を発しています: NxLOCREG(.)とNxKREG(.)です。顧客はこう書いた:

問い合わせ1:

"NxLOCREG関数とNxKREG関数を理解するのに助けが必要です。

  1. NxLOCREGとNxKREGの場合 - Yが100データポイントで、Alpha = 0.333の場合、このアルゴリズムは最後の33データポイントを見ているのか、それとも3ポイントごとの分布を見ているのか?
  2. 多項式は3次までしか使えません。それ以上は#NUM! アルゴリズムはそれ以上の次数を許可しているのでしょうか?
  3. NxLOCREGとNxKREGの区別があいまいです。簡単に説明してもらえますか?"

NxLOCREG(.) 関数は、局所回帰アルゴリズム - LOESS、別名 Savitzky-Golay フィルタ - を実装しています。

NxKREG(.) 関数は,重み付き最小2乗回帰を実装する.

この2つの関数は非常によく似ているが、NxLOCREG(.)には追加の引数がある: Alpha または H。これはゼロ(排他的)から 1(包含的)の間の値を取ることができる。その結果、NxLOCREG 関数は最も近い H*N 個のデータ点を選択しますが、NxKREG (.) は常にデータセット全体(つまり N 個)を含みます。

より詳細には、目標値Xが与えられると、カーネル回帰手順は次のようになる:

  • 目標値とサンプルのデータポイント間の距離を計算する。
  • データ点を距離に基づいて昇順に並べ替える。
  • 回帰入力データ・セットを選択する:
    • (NxLOCREGの場合)最も近い(つまり最初の)H*N個のデータ点を選択する。
    • (NxKREG の場合) N 個のデータ点全体を選択する。
  • 与えられたカーネル関数を用いて、選択されたデータ点の重みを計算する。
  • 加重最小二乗回帰モデルを実施する。
  • 値 X での回帰値を計算する。

この手順/アルゴリズムは、目標値に最も近いH*N個のデータ・ポイントを使用するので、どの値も(おそらく)異なるデータ・セットで独自の回帰モデルを構築することになる。

Alpha = 1.0 の場合、他のすべての引数は同じまま、NxKREG(.) と NxLOCREG(.) 関数は同じ結果を返す。

現在、NxLOCREG(.) および NxKREG(.) 関数は、3 次までの多項式をサポートしています。

重み付けカーネル関数の選択にかかわらず、帯域幅(別名、平滑化パラメータ)の値が必要である。NumXLは、クロスバリデーションのRMSEを最小化する、データベースのバンド幅選択法を使用します。

簡単に言うと、与えられた帯域幅について、各データポイントの回帰値を計算し(leave-one-out cross-validationを使用)、回帰値と実際の値の間のRMSEを計算する。

問い合わせ2:

"したがって、データにスパイクがある場合、スパイクのポイントのいくつかは回帰データセットにないかもしれない。"

これは "Spike "をどのように定義するかによる。もしスパイクが外れ値(大きなY値)の参照であれば、この方法は外れ値を持つデータポイントを含むことになる。それでも、これらのデータポイントは、ターゲット値からのユークリッド距離に基づいて重み付けされるかもしれない。

一方、Spikeがx-domainに沿って離れたデータ点を参照している場合、それらの離れたデータ点は回帰で大きくウェイトダウンされる。

問い合わせ3:

"Excelの標準的な散布図の平滑化はLOESS関数に依存しているようです。中間値を手動で計算したい場合、この局所的な平滑化を生成するExcelのデフォルト関数はどのようなアプローチですか?"

はい、Microsoft Excel は散布図の平滑化線を生成するために LOESS アルゴリズムを使用していると考えています。NxLOCREG(.) 関数を使用することができますが、使用されるパラメータ値、例えば、カーネル関数、多項式の次数、アルファ値については確信が持てません。

機能満載の無料ダウンロード 14日間トライアル の NumXL を使って、これらの関数をテストしたり、自分のデータに適用したりすることができる。

を必ず調べてほしい。 ヒントとコツ そして データフィッティング のセクションで、ご興味のある記事をご覧ください。

  添付ファイル

コメント

サインインしてコメントを残してください。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています