本文を読み飛ばす

リッジ回帰は推定量が過少になる傾向がある?

(2021-01-16 追記: 回帰係数の推定量 (\(\hat{\beta}\)) についての記述を、予測値についての記述と勘違いしたまま、 的外れな妄言を書き連ねていた。以下に書いている話は、ほぼ価値が無い)


色々あってスパース回帰分析を勉強しており、講談社データサイエンス入門シリーズの 「スパース回帰分析とパターン認識」 を読んでいる。まったく理解に苦労しており、全然読めていないのだけれど。

ともあれ、その p.16 に次のような記述があった:

リッジ推定量は x に対して傾き \(\frac{1}{1-λ}\) の直線であることから, 大きな x に対しては軟しきい値作用素や硬しきい値作用素と比べて, 最小2乗推定量との乖離が大きくなることが見て取れる.

リッジ回帰では推定量が過少になるということなのだろうか。 取り急ぎ、プログラムを書いて少し様子を見ていた。

続きを読む…

最小二乗法 (Ordinary Least Squares) の説明

今日は最小二乗法の考え方を言語化してみた。 可能な限り統計用語を使わず、かつ数学的に厳密な記述にすることで学びを得られればと思ってのこと。 簡単だろうと思っていたのだけれど、残念ながら今の自分には想像を遥かに上回る難しさで。 改めて、数学の才能は無いなぁと思った次第。

続きを読む…

NumPyをマルチスレッドで計算させる

Anaconda / Miniconda や pip で普通に NumPy をインストールすると、その計算は複数 CPU コアを備えた計算機でも常にシングルスレッドで実行され…ると今日まで思い込んでいた。が、実は環境変数を設定すれば NumPy はマルチスレッドで計算してくれるらしい。もっと早く知っておきたかったな。。。

ということで、今日は NumPy のマルチスレッド計算を有効化する環境変数について備忘録。

続きを読む…

Pythonで組み込み関数と同名の変数を使うべきでない理由

Python では input()len() など、様々な組み込み関数を用意している。そして、これらと同じ名前で変数や関数を後から定義すると、それらを「上書き」できる。つまり、例えば input という名前の変数にファイルから読み出したデータを格納するようなコードを書くと、以後 input という名前は組み込み関数ではなく、読み出されたデータを指すようになるわけだ。

さて、言語仕様として許可されているコレは、お作法的には良いのか悪いのか。個人的には否定派だったのだけれど、「気持ち悪い」という主観以外に理由を挙げられずにいた。ところが先日、ついに否定の根拠になるような嫌な思いをする機会に恵まれた(?)ので、今日はそれについて書いておこうと思う。

続きを読む…

Go言語。channelを閉じることで任意の数のgoroutineに終了を指示できる

Go 言語で子スレッド、もとい子 goroutine を立ち上げてタスクを処理させる状況で、かつ起動するワーカーの数が事前に決定されていない(処理要求の到着に応じて起動するような)場合。channel を使って安全に子スレッドに終了を指示する方法を調べたので備忘録。

続きを読む…

「corecrt.hが(あるのに)見つからない」ためBoostビルド不可、を解決

先日の CMake と Boost の記事を書くために色々と試行錯誤する中で、Visual Studio 2015 をアップデートしたり古い Windows 10 SDK をアンインストールしたりした結果、いつの間にか Boost をビルドできなくなっていた。対策に時間を取られた「b2 の罠」と対策について備忘録。なおビルドできないというのは、具体的には b2 を実行すると次のように corecrt.h が見つからない」というエラーが出る状態のこと:

続きを読む…