私は線形回帰のために私自身のコードを書こうとしました。普通の方程式beta = inv(X'X)X'Y
に従いました。しかし、平方誤差はのlstsq
関数よりもはるかに大きくなります。 SVDメソッド(lstsqが使用する)が正規方程式よりも正確である理由は誰にも分かりますか?ありがとうございました最小平方法:正規方程式対svd
0
A
答えて
2
あなたのデータはX'X
の行列が高いと思われますcondition number。このような行列の逆数を計算しようとすると、大きな誤差が生じる可能性があります。逆行列を明示的に計算することは、通常はお勧めできません(たとえば、http://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/またはhttp://epubs.siam.org/doi/abs/10.1137/1.9780898718027.ch14を参照)。
numpy.linalg.cond
を使用して条件番号を確認できます。
例を示します。まずX
とY
を作成します。このランダムX
のために
In [186]: X = np.random.randn(500, 30)
In [187]: Y = np.linspace(0, 1, len(X))
を、条件数が大きくない:
In [188]: np.linalg.cond(X.T.dot(X))
Out[188]: 2.4456380658308148
正規方程式とlstsq
は、同じ結果を与える(numpy.allclose
によると、その関数のデフォルトを使用した場合引数:
In [189]: betan = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Y)
In [190]: betal, res, rnk, s = np.linalg.lstsq(X, Y)
In [191]: np.allclose(betan, betal)
Out[191]: True
今すぐ調整するつの列をほぼ同じにすることによって、を生成します。これはX'X
はほとんど単数形になり、それに大きな条件数を与える:
In [192]: X[:,0] = X[:,1] + 1e-8*np.random.randn(len(X))
In [193]: np.linalg.cond(X.T.dot(X))
Out[193]: 3954529794300611.5
今、正規方程式はlstsq
とは異なる結果が得られます。
In [194]: betan = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Y)
In [195]: betal, res, rnk, s = np.linalg.lstsq(X, Y)
In [196]: np.allclose(betan, betal)
Out[196]: False
関連する問題
- 1. SVDを使用して最良のフィッティング平面方程式を計算する際にエラーが発生する
- 2. sympy微分方程式の方程式
- 3. Python/Numpyにおける正規方程式の実装
- 4. 最小二乗解をリニアマトリクス方程式に戻す関数
- 5. 擬似Diophantine方程式を最小化する高速アルゴリズム
- 6. 最小化制約を持つ方程式系(scipy.optimize.minimize)
- 7. 方程式解法アルゴリズム
- 8. ニュートン法(方程式のシステム)
- 9. 最大の微分方程式
- 10. 任意の数の数値に対してC#の平均方程式を書く方法
- 11. ガンマ方程式を書く方法?
- 12. 平面方程式から矩形を生成する方法ax + by + cz = d?
- 13. 一次方程式の平衡をとる簡単な方法は?
- 14. f#式の方程式
- 15. 線形方程式システムソルバー結果(Pythonの対Math.NET対MATLAB)
- 16. スケーリング方程式 - フラッシュ
- 17. ハスケル方程式ルーツコンパイルエラー
- 18. iPhoneの方程式
- 19. OnClick Solve方程式
- 20. 方程式よりも未知数の方程式を解く
- 21. ロジスティック回帰に正規方程式を使用できますか?
- 22. データベース - 平滑化対正規化
- 23. pythonでcvxpyを使ってこの方程式を最小にするには?
- 24. Pythonを使って一対の非線形方程式を解く方法は?
- 25. MatlabでFormularの対象を含む方程式を解く方法
- 26. sympy方程式のシステムを行列形式にする方法
- 27. 象徴的な方程式の解法
- 28. 平面方程式を使用して平面から原点までの最短距離
- 29. 2次微分方程式は、私が一次方程式に、次の2次方程式を変換する方法を理解していない
- 30. 積分微分方程式
再現性の例を教えてください。考えられる理由はいくつかありますが、データがなければ、私はあなたの質問に対する答えを推測することしかできません。 –