質問

私は行列システムを持っています:

A x B = C

Aanで、BbCです。 <=>と<=>の両方は不明ですが、<=>に関する部分的な情報があります(すべてではありませんが、いくつかの値があります)。 <=>の all 行または<=>の列が過度に制約されている必要はありません。

最小二乗のようなものを探しています 線形回帰を使用して、このシステムに最適なものを見つけます(注:単一のユニークなソリューションはないことを知っていますが、必要なのは最高のソリューションの1つ)


具体的な例を作成するには;すべてのaとbは不明であり、すべてのcは既知であり、?は無視されます。知っているcのみを考慮して a 最小二乗解を見つけたい。

[ a11, a12 ]                                     [ c11, c12, c13, c14, ?   ]
[ a21, a22 ]   [ b11, b12, b13, b14, b15]        [ c21, c22, c23, c24, c25 ]
[ a31, a32 ] x [ b21, b22, b23, b24, b25] = C ~= [ c31, c32, c33, ?,   c35 ]
[ a41, a42 ]                                     [ ?,   ?,   c43, c44, c45 ]
[ a51, a52 ]                                     [ c51, c52, c53, c54, c55 ]

Bがb11とb21のみにトリミングされ、未知の行4が削除された場合、これはほぼ標準の最小二乗線形回帰問題であることに注意してください。

役に立ちましたか?

解決

欠損値の処理方法がわからないので、その問題を無視します。

独自のソリューションはありません。最適なソリューションを見つけるには、それらを判断するための何らかのメトリックが必要です。最小二乗メトリックを使用すると仮定します。つまり、AとBの最良の推測値は、数値の合計[C_ij-(A B)_ij] ^ 2。

です。

言及していないことの1つは、nに使用する値を決定する方法です。要するに、1 <!> lt; = n <!> lt; = bの場合、「良い」ソリューションを思いつくことができます。これは、1 <!> lt; = rank(span(C))<!> lt; = b。ここで、rank(span(C))= Cの列スペースの次元。これは<!> gt; = bを想定していることに注意してください。より正確にするには、1 <!> lt; = rank(span(C))<!> lt; = min(a、b)を記述します。

今、1 <!> lt; = n <!> lt; = bとなるnを選択したと仮定します。 span(A)= span(Cの最初のn個の固有ベクトル)になるようにAの列を選択した場合、残差平方和を最小化します。他に理由がなければ、Aの列を選択してCの最初のn個の固有ベクトルにします。Aを選択したら、通常の線形回帰の方法でBの値を取得できます。つまりB =(A'A)^(-1)A 'C

他のヒント

この問題は、説明されているように不適切です。

A、B、C = 5をスカラーにします。あなたは解決を求めています a * b = 5 無限の数のソリューションがあります。

上記の情報に関する1つのアプローチは、最小化することです 定義されている関数g

g(A、B)= || AB-C || ^ 2 = trace((AB-C)*(AB-C))^ 2

ニュートン法または準割線アプローチ(BFGS)を使用。
(ここで勾配を簡単に計算できます)。 M *はMの転置であり、乗算は暗黙的です。 (標準はフロベニウス標準です...私は削除しました アンダースコアFは正しく表示されていなかったためです)

これは本質的に非線形の問題であるため、標準線形 代数アプローチは適用されません。

詳細な情報を提供していただければ、さらにお手伝いできる場合があります。


いくつかの質問:問題はここにあると思います 詳細については、<!> quot;最良の解決策<!> quot;はありません。必要がある 探しているもののより具体的なアイデアを決定します。 1つのアイデアとして、<!> quot; sparsest <!> quot;溶液。このエリアは 研究のホットな領域であり、 ここで働いている世界(Terry Taoほか、Nuclear Normの研究を参照) この問題は扱いやすいが、まだ難しい。


残念ながら、私はまだコメントすることができませんので、ここにコメントを追加します。 以下で述べたように、LMはこれを解決するための優れたアプローチであり、1つのアプローチにすぎません。 ニュートン型の線に沿って 最適化問題または非線形解法問題。

上記の例を使用したアイデアを以下に示します。 21個の要素を持つ2つの新しいベクトルVおよびU(定義された数とまったく同じ数) C)の要素。

Vは正確にCの既知の要素であり、列が順序付けられているため(matlab表記)

V = [C11; C21; C31; C51; C12; ....; C55]

Uは、製品ABの列順序であるベクトルです。 LEAVING OUT THE 「?」に対応する要素マトリックスC 内。すべての変数をxに収集する 私たちは
x = [a11、a21、.. a52、b11、b21 ...、b25]。

f(x)= U(上記で定義)。

お気に入りの非線形最小二乗法でf(x)= Vを解こうとすることができます。

余談ですが、以下のポスターではシミュレーテッドアニーリングが推奨されていますが、 それに対して。動作するいくつかの問題がありますが、これは発見的です。あなたが持っているとき Gauss-NewtonやLMなどの強力な分析メソッドを使用すると言います。 (私自身で 経験)

ワイルドな推測:特異値の分解がトリックを行う可能性がありますか?

いくつかのオプションがあります。通常、 Levenberg-Marquadtアルゴリズムは、最良のLSメソッドとして認識されています。無料の実装は、こちらで入手できます。ただし、計算が高速で適切な数のパラメーターがある場合は、シミュレーテッドアニーリング

回答内のいくつかのパラメーターセットから開始し、そのうちの1つをランダムな割合で最大まで増やします。次に、システムのフィットネス関数を計算します。さて、ここにトリックがあります。悪い答えを捨てないでください。ボルツマン確率分布でそれらを受け入れます。

P = exp(-(x-x0)/T)

ここで、Tは温度パラメーター、x-x0は現在のフィットネス値から前の値を引いたものです。 x回の反復の後、Tを一定量減少させます(これを冷却スケジュールと呼びます)。その後、別のランダムパラメーターに対してこのプロセスを繰り返します。 Tが減少するにつれて、選択される貧弱なソリューションは少なくなり、最終的に手順は<!> quot; greedy search <!> quot;になります。適合性を改善するソリューションのみを受け入れます。システムに多くの空きパラメータがある場合(<!> gt; 10程度)、これが本当にグローバルな最小値に到達する可能性がある場所に行く唯一の方法です。このフィッティング方法は、コードを記述するのに約20分かかり、微調整するのに数時間かかります。これがお役に立てば幸いです。

FYI、Wolframは巡回セールスマン問題の文脈でこれについて良い議論をしており、私はそれを非常にうまく使っていくつかの非常に難しいグローバルな最小化問題を解決しました。 LMメソッドよりも遅くなりますが、最も難しい/比較的大きなケースでははるかに優れています。

B
  1. ランダムな値を持つシードA。
  2. Bの各列を個別に解決します。
  3. 問題を作り直して、ステップ2のBの値を与えられたAの各行を解決できるようにします。
  4. 問題が解決するまでステップ2を繰り返します。

それが安定しているかどうかはわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top