線形回帰ではどのアルゴリズムが使用されますか?


42

私は通常「通常の最小二乗」について聞きます。それは線形回帰に使用される最も広く使用されているアルゴリズムですか?別のものを使用する理由はありますか?


@hxd、設計行列の特別な構造を除いて、これらはすべて定数係数のみが異なるO(mn2)アルゴリズムです。分解アプローチは、数値線形代数の伝統から引き継がれた良い習慣です。
JMは、統計学者ではない

@hxd。だからこそ、私の答えは、関連するアルゴリズムの説明になるように調整されました。このスレッドで扱われていない質問がある場合は、新しい質問をすることを検討してください。
JMは、統計家ではありません

回答:


32

タイトルの質問に関して、使用されているアルゴリズムは何ですか:

線形代数の観点では、線形回帰アルゴリズムは未知数よりも多くの方程式で線形システム\ mathbf {A} x = bを解く方法Ax=bです。ほとんどの場合、この問題の解決策はありません。これは、ベクトルbAC(\ mathbf {A})の列空間に属していないためC(A)です。

これbest straight lineは、全体的なエラーe=Axbだけ小さくするものです。また、2乗の長さである\ lVert e \ rVert ^ 2と小さく考えると便利e2です。これは負ではなく、b \ in C(\ mathbf {A})の場合にのみ0に等しいからですbC(A)

ベクトルをの列空間の最も近い点に射影すると、システムを解くベクトルが得られます(コンポーネントは最適な直線上にあります)。bAb

ATAx^=ATbx^=(ATA)1ATb

投影ベクトルは次の式で与えられます。b

b=Ax^=A(ATA)1ATb

おそらく、最小二乗法は 、外れ値を過補償するため、排他的には使用されませんsquaring

このアルゴリズムを使用して回帰問題を解決するRの簡単な例を示します。

library(fBasics)

reg.data <- read.table(textConnection("
   b      x
  12      0
  10      1
   8      2
  11      3
   6      4
   7      5
   2      6
   3      7
   3      8 "), header = T)

attach(reg.data)

A <- model.matrix(b~x)

# intercept and slope
inv(t(A) %*% A) %*% t(A) %*% b

# fitted values - the projected vector b in the C(A)
A %*% inv(t(A) %*%A ) %*% t(A) %*% b

# The projection is easier if the orthogonal matrix Q is used, 
# because t(Q)%*%Q = I
Q <- qr.Q(qr(A))
R <- qr.R(qr(A))

# intercept and slope 
best.line <- inv(R) %*% t(Q) %*% b

# fitted values 
Q %*% t(Q) %*% b

plot(x,b,pch=16)
abline(best.line[1],best.line[2])

エラーが発生しましたcould not find inv
hhh


5
解決の同義語である場合、fBasicsのinvを使用する理由はありますか?不要な場合、外部パッケージへの依存を必要としない方が良いと思いませんか?
デイソン

@George私は明確な答えが大好きですが、元の質問はアルゴリズムを求めていたと思います。QRはその1つにすぎません。LU、SVD、コレスキー分解はどうですか?また、RのメソッドlmはQRです。その理由はありますが、その理由を説明してください。
ハイタオデュ

@GeorgeDontasが可逆的でない可能性があることに注意してください。この回答で説明したように、それを処理する1つの方法は、他の列の線形結合である列から削除することです。ATAA
オーレンミルマン

70

質問の手紙に答えるために、「通常の最小二乗」はアルゴリズムではありません。むしろ、それは計算線形代数における一種の問題であり、線形回帰はその一例です。通常、データと、形式のデータを当てはめるための暫定関数(「モデル」)があります。。、 "基底関数"と呼ばれ、単項式から何もすることができ三角関数(例えばへ、)と指数関数()。ここでの「線形回帰」の「線形」という用語は基底関数を指しておらず、{(x1,y1),,(xm,ym)}f(x)=c1f1(x)++cnfn(x)fj(x)xjsin(jx)cos(jx)exp(jx)cj、それは、任意のに対して、モデルの偏微分を取るにあなた倍率与え。つまり、です。cjcjfj(x)

現在、長方形行列(「設計行列」)があり、(通常)列より行が多く、各エントリは形式で、は行インデックスで、は列インデックス。OLSは、量を最小化するベクトルを(マトリックス表記、 ;ここでは、は通常「応答ベクトル」と呼ばれます)。m×nAfj(xi)ijc=(c1cn)j=1m(yjf(xj))2Acy2y=(y1ym)

最小二乗解を計算するために実際に使用される少なくとも3つの方法があります:正規方程式、QR分解、および特異値分解。簡単に言えば、これらは行列を、ベクトルを解くために簡単に操作できる行列の積に変換する方法です。Ac

ジョージはすでに答えで正規方程式の方法を示しました。線形方程式のセットを解くだけですn×n

AAc=Ay

用。行列は対称正(半)定行列であるため、これに使用される通常の方法はコレスキー分解で、を因数分解します。形態にと、下三角行列。このアプローチの問題は、設計行列を(通常)はるかに小さい行列に圧縮できるという利点にもかかわらず、この演算が有効数字を失う傾向があることです(これにより、設計マトリックスの「条件番号」で行います)。cAAAAGGGm×nn×n

もう少し良い方法は、QR分解です。これは、設計マトリックスで直接機能します。これは、係数よう、直交行列である(その転置とそのような行列を乗算する恒等行列を与える)とは上三角です。は、その後として計算されます。私が入らない理由のために(このような適切な数値線形代数テキストを参照してください)、これは正規方程式の方法よりも優れた数値特性を持っています。AA=QRQRcR1Qy

QR分解の使用における1つのバリエーションは、半正規方程式の方法です。簡単に言えば、分解場合、解く線形システムは次の形式を取ります。A=QR

RRc=Ay

事実、このアプローチではQR分解を使用してのコレスキー三角形を形成しています。これは、がまばらであり、(またはその分解バージョン)の明示的なストレージおよび/または形成が望ましくないか、実用的でない場合に役立ちます。AAAQ

最後に、最も高価でありながら最も安全なOLSの解決方法は、特異値分解(SVD)です。今回、はとして因数分解されます。ここで、とは両方とも直交です、およびA = U Σ VU V ΣAA=UΣVUVΣ対角行列であり、その対角エントリは「特異値」と呼ばれます。この分解の力は、特異値によって付与される診断能力にあります。1つまたは複数の小さな特異値が見られる場合、完全に独立ではない基底セットを選択した可能性が高いため、次の再定式化が必要です。あなたのモデル。(前述の「条件数」は、実際には、最小の特異値に対する最大の特異値の比に関連しています。最小の特異値が「tiny」の場合、もちろん比は巨大になります(したがって、行列は悪条件です) )

これは、これら3つのアルゴリズムの単なるスケッチです。計算統計と数値線形代数に関する優れた本は、より関連性のある詳細を提供できるはずです。


3
いい説明だ!
マイクスパイビー

R^{-1} Q^T yAが正方形でない場合、どのように計算しますか?Rにゼロ行をドロップしますか?
16

1
@bhan、は正方形で、は設計行列と同じ次元を持つQR分解の「エコノミー」(または「シン」)バリアントを想定しています。あなたがすべきこと:「フルQR」と「シンQR」の違いを調べる。QRQ
JMは統計家ではありません

@JM「計算統計と数値線形代数に関する良い本」に関する推奨事項はありますか?本当にもっと学びたい。
ハイタオデュ

1
@hxd、私の頭上:計算統計学のためのモナハン、および数値線形代数のためのゴラブ/バンローン。
JMは統計家ではありません

6

wikiリンク:線形回帰の推定法は、OLSや代替推定法が使用されるコンテキストを含む推定法のかなり包括的なリストを提供します。


1
(ページにもQR言及していない)の質問に対応していません
user603

4

定義と用語を混同するのは簡単です。両方の用語が使用され、場合によっては同じ意味で使用されます。ウィキペディアのクイックルックアップが役立ちます。

通常最小二乗(OLS)は、線形回帰モデルを近似するために使用される方法です。OLSメソッドの一貫性と効率性が実証されているため(補足的な仮定の下)、それが主要なアプローチです。さらなるリードについては記事を参照してください。


そう、だからこそ私はOLSを線形回帰で使用される「アルゴリズム」であると考えるのです...-
ベルモント

3
通常の最小二乗は推定量です。推定を計算するためのさまざまなアルゴリズムがあります。通常、QRなどのある種の直交行列分解が使用されます。en.wikipedia.org/wiki/…を
サイモンバーン

4

私は、「最小二乗」を、最適な回帰直線(つまり、「二乗」残差の合計を「最小」にするもの)と、このコンテキストの「アルゴリズム」を使用するステップのセットとして定義するための基準として考える傾向がありますその基準を満たす回帰係数を決定します。この区別は、同じ基準を満たす異なるアルゴリズムを持つことが可能であることを示唆しています。

他の人がこの区別をするかどうか、どの用語を使用するのか知りたいです。


アルゴリズムとは、おおよそ、分布の平均をモデル化するために線を近似するために使用されるソフトウェア実装を意味します。
ベルモント

3

古い本でありながら、繰り返し自分が気づいている本は

ローソン、CLおよびハンソン、RJ 最小二乗問題の解決、Prentice-Hall、1974。

これには、以前の回答で言及したアルゴリズムのいくつかの詳細かつ非常に読みやすい説明が含まれています。あなたはそれを見たいかもしれません。


1
この古い本を読んでいるなら、ローク/ハンソンで議論されていないものがあるÅkeBjörckの最小二乗問題のため数値的方法も調べるべきです。Lawson / Hansonの本に含まれているルーチンは、Netlibから入手できます
JMは統計学者ではありません
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.