#Julia言語 『数値計算の常識』という有名な本があって第5章のタイトルが「逆行列よさようなら」です。

Juliaでは計画行列Xによるバックスラッシュ演算

β̂ = X \ y

の一発で最小二乗法も計算できます。

github.com/genkuroki/publ…
#数楽 Xが縦長の行列で、β, y が縦ベクトルのときの、βの成分に関する連立一次方程式

Xβ = y

は一般に解を持たないのですが、Xβとyのユークリッド距離を最小にするようなβをβ̂と書いて、「解」とみなすのが最小二乗法の考え方です。その「解」を

β̂ = X \ y

と書くことは記号法的に自然です。
#Julia言語 Juliaがバックスラッシュ二項演算子で最小二乗法も可能にしていることの背景には以上のような数学が隠れています。
#数楽 はい、それも正しいです。

しかし、「ムーアペンローズ一般化逆行列」の話は結構複雑で、「部分空間{Xβ|β∈ℝʳ}⊂ℝⁿの点Xβと点yのユークリッド距離が最小になるβ=β̂を求める」の方がより基本的な考え方だと思います。続く
#数楽 縦長のn×r行列Xがランクがrになる場合にはβ̂が一意的に決まる。

そうでない場合には、β̂が一意的ではなくなるので、数値計算では複数の仕様が考えられる。ノルムが最小のβ̂を選んだり、sparseで計算しているならβ̂は"sparsest"になるようにしたい。後者でβ̂はMP一般化逆行列解ではなくなる。
実際、#Julia言語 のdiscourseでは、sparseの場合の最小二乗法(もしくは直交射影)に関係した質問が定期的に出て来ている感じ。

最近では↓

discourse.julialang.org/t/differences-…

sparse行列AについてA\bはpinv(Matrix(A))*bと一致しない。

github.com/genkuroki/publ…
#数楽 「Moore-Penroseの一般化逆行列」は直観的もしくは視覚的には易しく感じられる「線形写像の像への直交射影」の「実装の詳細」にあたる複雑な話題だと思います。

「実装の詳細」以外にも、「線形写像の像への直交射影」について図を描いて直観的にも理解しておいた方が私は得だと思います。
#数楽 最小二乗法が直交射影の特別な場合であることについては、解説が私のツイログにたくさんあります。

twilog.org/genkuroki/sear…

部分空間のW=Xℝʳの点で点yに最も近いものは、点yの部分空間Wへの直交射影になっています。この手のことは実質的に高校数学でも習っているはずのことだと思います。
#数楽 Xが縦長のn×r行列で、yが長さnの縦ベクトルのとき、長さrの縦ベクトルβに関する一次方程式

Xβ = y

は一般に解を持ちません。しかし、残差eを許して

Xβ + e = y

の形なら解を作れる。そのとき、残差eをユークリッドノルムを最小化するのが最小二乗法です。
#統計 1つ前のツイートのような説明をすると、なぜかより複雑で難しい「Moore-Penroseの一般化逆行列」もしくは「rank X=rの場合のその公式 (X'X)⁻¹X' 」(X'はXの転置)で最小二乗法について勉強してしまった人は、「知っている話と違う!」となってしまう。これはちょっと不幸な感じがします。
#数楽 Moore-Penroseの一般化逆行列の真の理解のためには、直交射影の線形代数をやる必要があり、結果的に私が上で述べたシンプルな理解に戻ることになります。

そして、一般化逆行列に頼らずに直交射影によって理解していれば、解β̂が一意に決まらない場合のsparseでの計算にも対応できます。
もっとはっきり言えば、sparse行列の場合には「#Julia言語 におけるA\bはMoore-Penroseの一般化逆行列の意味でAx=bを解いた結果になる」という主張は誤りです。

それに対して「#Julia言語 において、Axとbの距離が最小になるxはA\bで求められる」ならば、sparse行列でも正しいです。

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with 黒木玄 Gen Kuroki

黒木玄 Gen Kuroki Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @genkuroki

13 Sep
#統計 #数楽 この短い動画も非常にためになるし楽しめる。

「変分ベイズ」「変分推論」のように呼ばれる方法は、計算が大変な真の分布φ(w)を特別な形の分布ψ(w)でφ(w)から最も出て来やすいもので近似する方法。続く
#統計 Kullback-Leibler情報量 D(ψ||φ) は、Sanovの定理より、「分布φのサンプルの分布として分布ψに近いものの出て来やすさ」を意味する。

もしも分布ψの台が分布φの台よりも真に大きいならば、そのはみ出した部分の値はφから出て来ないので、D(ψ||φ) = ∞ となる。

続く
#統計 D(ψ||φ) < ∞ ならばψの台はφの台に含まれる。

固定されたφに対して、特別な形のψを動かして、D(ψ||φ) を最小化すると(変分推論!)、分布ψは分布φよりも狭い部分に集中した感じの分布になり易い。

以下のリンク先の場合には実際に概ねそうなっているように見える。
Read 16 tweets
12 Sep
素晴らしいスレッドだったので大量にRTしました。

しかし、最後に「立式」という聴き慣れない有害で特殊な意味を持つ算数教育用語を使ってしまっている点は、人権問題に発展するかもしれないので注意が必要だと思いました。😝

「式  答え 」のスタイルそのものが子供を悪しき枠にはめている。
多くの人が誤解していることですが、「立式」という用語は国語辞典にも載っていない用語で、単に「式を作る」というようなニュートラルな意味を持つ無害な用語ではありません。

子供を害するちょー算数の中核部分と関係している極めて有害な用語なので取り扱い注意です。
「立式」という特殊な用語が歴史的にどのように使われていたかについては、以下のスレッドを参照。

「立式の意図」を以下のリンク先の意味で子供に問う行為は、人権問題に発展する恐れが十分にあります。😝
Read 6 tweets
12 Sep
東京大学出版会の『統計学入門』を運悪く「真面目」に読んでしまい、それに従って、「確率ではなく、割合だ」というスタイルで「信頼区間警察」をやっている側が狼藉之義也の「ヒャッハー」達だという問題。

へたをするとこれが高校数学にも伝搬する恐れがある。
最近の例では

tjo.hatenablog.com/entry/2021/07/…
渋谷駅前で働くデータサイエンティストのブログ
2021-07-16
95%信頼区間の「95%」の意味

がひどい。

教科書に書いてあるという事実は正しいことの証拠にはなりません。
#統計 正しい考え方

* 信頼区間の計算では通常パラメータを持つモデル(例えば正規分布モデルや二項分布モデルなど)が使われる。

* 95%信頼区間の95%はそのモデル内での標本分布で測った確率(の近似値)になる。

* 使用したモデルが現実において妥当でなければ、信頼区間は信頼できないものになる。
Read 22 tweets
12 Sep
一般に印象操作に一所懸命な変な人の意見は適当にスルーした方がよいと思いました。
一般に、難しいことを理解できない人たちで周囲を固めている人の観測範囲内でそれが受け入れられていないことと、それが実際に有用であるか否かは無関係。
大学で統計学が専門じゃないのに統計学の講義を受け持つことになった人にとって、カイヤンさんが説明してくれていることの多くが参考になると思います。

ついつい「流行っている」という理由でベイズ統計の話題に触れるときに、注意するべきことがあります。「主義」に関わる話題は本当に要注意。
Read 6 tweets
11 Sep
#Julia言語 1万人に一人あたり100万円配って、その後ランダムに誰かから1万円を取り上げて(破産していたら取るのを諦める)、別の誰かに配ることを繰り返したときの、保有金額の分布の推移のアニメーション。

分布の収束先は不平等な指数分布。

これは「税額一定」の場合。

github.com/genkuroki/publ…
#Julia言語 不平等な指数分布になった後に、今度はランダムに誰かを選んで保有金額の5%の税金を徴収して別の誰かに配ることを繰り返すとこうなる。

分布の収束先はかなり平等的なガンマ分布。

証明は知らない。誰か教えて!(笑)

(((わざと真剣に考えていない)))

github.com/genkuroki/publ…
#Julia言語 ここからが真に面白い話になる。

さて、ついさっき税額ではなく、税率を一定にしたランダムな富の分配で平等に近付けることができることを紹介した。

税率は5%だった。

問題:税率を50%に上げるとさらに平等になるか?
Read 21 tweets
11 Sep
#Julia言語

色々よく分かっていないあいだは、内部コンストラクタを定義しない方が無難だという話。

添付画像は

github.com/genkuroki/publ…

より。これの1つ前のコードでは赤枠部分の外部コンストラクタしか定義されていなかった。青枠部分は後で追加された。

続く
#Julia言語

struct Foo{T}
a::T
b::T
Foo(a::T) where T = new{T}(a, T(2)a)
end

と内部コンストラクタFoo(a)を定義すると、これ以外にFoo型のオブジェクトを作る方法が失われ、フィールドbは常にaの2倍になることになります。

この仕様を変更するにはコードの変更が必要になる。
#Julia言語 一方、

struct Bar{T}
a::T
b::T
end
Bar(a::T) where T = Bar{T}(a, T(2)a)

と内部コンストラクタを定義せずに、外部コンストラクタBar(a)を定義しているなら、デフォルトで定義されているBar(a, b)を使ってbをaの2倍以外の値に設定できます。
Read 8 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(