局所回帰

**局所回帰**（きょくしょかいき、）または**局所多項式回帰**（きょくしょたこうしきかいい、）は、**移動回帰**（いどうかいき、）とも呼ばれ、移動平均や多項式回帰を一般化したものである。

## 概要
局所回帰の最も一般的な方法がLOESS (locally estimated scatterplot smoothing) およびLOWESS (locally weighted scatterplot smoothing) であり、いずれも  と発音される。いずれもノンパラメトリック回帰の手法であり、多数の回帰モデルをK近傍法に基づくメタモデルで組み合わせる。

LOESSは、線形最小二乗回帰の単純さと非線形回帰の柔軟性の多くを兼ね備えている。グローバルな関数を指定する必要はなく、データの局所的部分集合localized subsets of dataに単純なモデルを当てはめればよい。最小二乗回帰と比較すると計算量は膨大である。この統計手法で得られる滑らかな曲線は、loess曲線ないしlowess曲線と呼ばれる。

## モデルの定義
1964年、SavitskyとGolayがLOESSと等価な手法を提案し、Savitzky–Golayフィルタと呼ばれるようになった。1979年、William S. Clevelandがこの手法を再発見し、別の名前を付けた。1988年、ClevelandとSusan J. Devlinが、この手法をさらに発展させた。

データセットの範囲内の各ポイントで、低次の局所多項式がデータの部分集合にフィットされる。多項式は、応答が推定されるポイントに近くのポイントに重みを与える、重み付き最小二乗法を用いてフィットされる。各データ点のそれぞれについて回帰関数の値が計算されたところで、LOESSのフィットが完了する。

### データの局所的部分集合
LOESSの重み付き最小二乗法によるフィッティングに使用されるデータの**部分集合**は最近傍アルゴリズムによって決定される。平滑化パラメータ\alphaは、各局所多項式を適合させるために、どのくらいの割合のデータを使用するかを決定する。

*k*次の多項式のフィッティングには*k*&nbsp;+&nbsp;1 以上のポイントが必要であるため、平滑化パラメータ\alphaは、\left(\lambda+1\right)/nと1の間にある必要がある。ここで、\lambdaは局所多項式の次数を示す。\alphaが小さいほど回帰関数がデータに近くなるが、データの変動に伴うブレが大きくなる。

### 局所多項式の次数
局所多項式は、ほとんどの場合、1次か2次である。より高次の多項式は理論的には有効であるが、「どんな関数も局所では低次の多項式で近似できる」というLOESS の精神にはそぐわないし、過剰適合のリスクがある。

### 重み関数
重み関数は、説明変数空間において推定点に近いデータ点に最も大きな重みを与え、最も遠いデータ点に最も小さな重みを与える。

伝統的には三次元重み関数が用いられる。

: w(x) = (1 - |d|^3)^3 

ここで、*d*はデータポイント間の距離で、0から1の範囲にスケーリングされる。

ターゲット空間\mathbb R^m上の計量w(x,z) x,z\in\mathbb R^nによる線形回帰の一般化を考える。x\mapsto \hat x := (1,x) により n個の入力パラメータを\mathbb R^{n+1}に埋め込んで、次の損失関数を考える。

: \operatorname{RSS}_x(A) = \sum_{i=1}^N(y_i-A\hat x_i)^Tw_i(x)(y_i-A\hat x_i).

ここで、Aは m\times(n+1) の実行列であり、w_i(x):=w(x_i,x)と定義される。添え字*i*は訓練データの入出力のベクトルを示す。wは計量なので対称な正定値行列であり、w=h^2を満たす対称行列hが存在する。損失関数は次のように変形できる。y^Twy = (hy)^T(hy) = \operatorname{Tr}(hyy^Th) = \operatorname{Tr}(wyy^T)ベクトルy_iをm\times N型の行列Y、ベクトル\hat x_i  (n+1)\times N型の行列\hat Xとすることで、損失関数は次のように変形できる。

: \operatorname{Tr}(W(x)(Y-A\hat X)^T(Y-A\hat X))

ここで、WはN\times Nの対角行列であり、 その成分はw_i(x)である。Aに関して微分した値をゼロとすることで

: A\hat XW(x)\hat X^T = YW(x)\hat X^T.

さらに、正方行列\hat XW(x)\hat X^Tが可逆行列であるとき、損失関数\operatorname{RSS}_x(A)は下記で最小値を取る。

: A(x) = YW(x)\hat X^T(\hat XW(x)\hat X^T)^{-1}.

w(x,z)として、主にガウス関数が選択される。

: w(x,z) = \exp\left(-\frac{\| x-z \|^2}{2\alpha^2}\right)

## 利点
平滑化パラメータと局所多項式の次数を与えるだけで、モデルをサンプルデータに柔軟に適合させることができる。

## 欠点
局所的なデータ構造に基づいてフィッティングするため、充分な大きさの標本が必要である。また、数式で簡単に表現できる回帰関数を生成しないため、分析結果を他者に伝えることが困難である。また、他の最小二乗法と同様に、外れ値の影響を受けやすい。

## 脚注

### 出典

## 関連項目
* 移動平均
* ノンパラメトリック手法

## 外部リンク
* Local Regression and Election Modeling
* Smoothing by Local Regression: Principles and Methods (PostScript Document)
* NIST Engineering Statistics Handbook Section on LOESS
* Local Fitting Software
* Scatter Plot Smoothing
* R: Local Polynomial Regression Fitting The Loess function in R
* R: Scatter Plot Smoothing The Lowess function in R
* The supsmu function (Friedman's SuperSmoother) in R
* Quantile LOESS – A method to perform Local regression on a **Quantile** moving window (with R code)
* Nate Silver, How Opinion on Same-Sex Marriage Is Changing, and What It Means – sample of LOESS versus linear regression

### 実装
* Fortran implementation
* C implementation (from the R project)
* Lowess implementation in Cython by Carl Vogel
* Python implementation (in Statsmodels)
* LOESS Smoothing in Excel
* LOESS implementation in pure Julia
* JavaScript implementation
* Java implementation