NumPy, belirsiz sistemler için en küçük kareleri nasıl çözer?


13

Diyelim ki X şekilli (2, 5)
ve y şekilli (2,)

Bu çalışıyor: np.linalg.lstsq(X, y)

Bunun sadece X şeklindeyse (N, 5) N> = 5 olduğunda çalışmasını bekleriz Ama neden ve nasıl?

Beklendiği gibi 5 ağırlık geri alıyoruz, ancak bu sorun nasıl çözüldü?

2 denklem ve 5 bilinmeyen varmış gibi değil mi?
Numpy bunu nasıl çözebilir?
Daha fazla yapay denklem oluşturmak için enterpolasyon gibi bir şey yapmalı mı? ..


3
Neden işe yaramasın ki? Belirsiz bir sistemin birçok çözümü vardır.
Matthew Gunn

İlgili teoriye bir bağlantınız olabilir mi?
George Pligoropoulos

Yanıtlar:


18

Anladığım kadarıyla numpy.linalg.lstsq , LAPACK rutin dgelsd'sine dayanıyor .

Sorun şu:

minimize(overx)Axb2

Tabii ki, bunun derecesi vektörünün uzunluğundan daha az olan A matrisi için benzersiz bir çözümü yoktur . Belirsiz bir sistem söz konusu olduğunda, bir çözüm sağlar :bzdgelsdz

  • Az=b
  • z2x2 karşılayan tüm için . (yani , belirlenmemiş sistem için minimum norm çözümüdür.xAx=bz

Örneğin, sistem , numpy.linalg.lstsq .x+y=1x=.5,y=.5

Dgelsd nasıl çalışır?

Rutin , A'nın tekil değer ayrışmasını (SVD) dgelsdhesaplar .

Doğrusal bir sistemi çözmek için bir SVD kullanmanın arkasındaki fikri çizeceğim. Tekil değer ayrışımı bir çarpanlara olan burada ve dik matrisler ve köşegen girişleri tekil değerler olarak bilinen bir köşegenel matristir.UΣV=AUVΣ

matrisinin etkili sırası , etkin bir şekilde sıfır olmayan tekil değerlerin sayısı olacaktır (yani, makine hassasiyetine göre sıfırdan yeterince farklıdır ...). sıfır olmayan tekil değerlerin köşegen matrisi olsun . SVD böylece:AS

A=U[S000]V

Yalancı ters bir ile verilir:A

A=V[S1000]U

çözümünü düşünün . Sonra:x=Ab

Axb=U[S000]VV[S1000]Ubb=U[I000]Ubb

Burada temelde iki vaka var:

  1. Sıfır olmayan tekil değerlerin (yani matris boyutu ) sayısı uzunluğundan daha azdır . Buradaki çözüm kesin olmayacak; lineer sistemi en küçük kareler anlamında çözeceğiz.Ib
  2. Axb=0

Bu son bölüm biraz zor ... matris boyutlarını takip etmek ve dikey bir matris olduğunu kullanmak gerekiyor .U

Yalancı tersin denkliği

Ne zaman doğrusal bağımsız satır vardır (örneğin, bir yağ matrisi vardır.), O zaman: A

A=A(AA)1

Belirsiz bir sistem için, sahte tersin size minimum norm çözümünü verdiğini gösterebilirsiniz.

Ne zaman doğrusal bağımsız sütun vardır (örneğin, bir zayıf matris vardır.), O zaman: A

A=(AA)1A


dgelsd SVD kullanıyor ancak R lm QR kullanıyor?
Haitao Du

@ hxd1011R lm, varsayılan olarak QR çarpanlarına ayırmayı kullanır, ancak alternatifler belirleyebilirsiniz.
Sycorax, Reinstate Monica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.