web-dev-qa-db-ja.com

線形回帰を解析的に解くことができるのになぜ勾配降下

線形回帰空間で勾配降下を使用する利点は何ですか?問題を解決できるように見えます(コスト関数が最小のtheta0-nを見つける)ので、なぜ勾配降下を使用して同じことをするのですか?ありがとう

68
John

コスト関数を解析的に解くために正規方程式を使用する場合、計算する必要があります:

enter image description here

Xは入力観測値の行列、yは出力ベクトルです。この操作の問題は、O(n ^ 3)であるnxn行列の逆行列を計算する時間の複雑さであり、nが大きくなると、完了するまでに非常に長い時間がかかる可能性があります。

Nが低い(n <1000またはn <10000)場合は、正規方程式をtheta計算のより良いオプションと考えることができますが、値が大きい場合はGradient Descentがはるかに高速であるため、唯一の理由は時間:)

102
jabaldonedo

Yout問題に関する詳細を提供する必要があります-正確に何を求めていますか-1つまたは複数の次元での線形回帰について話しているのですか?単純なものか一般的なものか?

一般に、なぜ人々はGDを使用するのですか?

  • 実装は簡単です
  • 非常に汎用的な最適化手法です。モデルをより一般的なものに変更しても、そのまま使用できます。

では、分析ソリューションについてはどうでしょうか?まあ、私たちはdoそれらを使用します、あなたの主張はここで単純に偽です(一般的に話している場合)、たとえば [〜# 〜] ols [〜#〜] メソッドは閉じた形式の分析ソリューションであり、広く使用されています。分析ソリューションを使用できる場合は、手頃な価格で計算できます(Gdの方が単純に安価または高速である場合があります)。

これは常にいくつかの長所と短所の問題です-分析ソリューションはモデルと強く結びついているため、将来モデルを一般化/変更する予定がある場合、それらの実装は非効率になる可能性があります。それらは、数値近似よりも効率が低い場合があり、実装が難しい場合があります。上記のいずれにも当てはまらない場合-あなたはshould分析ソリューションを使用し、人々は実際にそれを行います。

要約すると、次の場合は分析ソリューションよりもむしろGdを使用します。

  • モデルの変更、一般化、より複雑な用語/正規化/修正の追加を検討している
  • コードとモデルの将来についてあまり知らないため、ジェネリックメソッドが必要です(開発者の1人にすぎません)
  • 分析ソリューションは計算コストが高く、効率が必要です
  • 分析ソリューションはより多くのメモリを必要としますが、あなたは持っていません
  • 分析ソリューションは実装が難しく、簡単でシンプルなコードが必要です
13
lejlot

https://stats.stackexchange.com/questions/23128/solving-for-regression-parameters-in-closed-form-vs-gradient-descent から非常に良い答えを見ました

基本的に、その理由は次のとおりです。

1.ほとんどの非線形回帰問題には、閉形式の解決策はありません。

2.線形回帰(閉じた形式のソリューションが利用できる数少ないケースの1つ)でも、式を使用することは実用的ではない場合があります。次の例は、これが発生する1つの方法を示しています。

7
enaJ