データセットの分散は、各点から平均までの距離の二乗和として定義されるため、最初に平均を計算し、その後で平均からの差の二乗を計算する必要があるように思われる。しかし、分散はデータを1回だけ走査するワンパスアルゴリズムで計算できる。本稿ではその代表例を紹介する。
johndcook-com
johndcook-com から 30 件
カルバック・ライブラー(K-L)ダイバージェンスは非負で同一分布の場合にのみゼロとなるが、非対称性などの理由から距離関数ではない。本記事では、対称性の問題をジェフリーズ・ダイバージェンスで修正し、さらにジェンセン・シャノン・ダイバージェンスによって平方根が真の距離関数となる方法を解説する。
先日、Metaのロゴがベサシ曲線(Besace曲線)であるという投稿を見かけた。ベサシ曲線は陰関数形式と媒介変数形式で表され、パラメータtは[0, 2π]の範囲をとる。では、Metaロゴのようなベサシ曲線が与えられたとき、どのようにパラメータaとbを求めて曲線にフィッティングすればよいのか、その方法を解説する。
正規標本の期待範囲の計算
0.5標準正規分布N(0,1)から抽出したn個の標本における期待範囲(最大値と最小値の差)を計算する方法を解説。前回の記事で取り上げた陪審員12人のIQ範囲の事例を一般化し、σが1でない場合には結果にσを乗じることで対応できることを示す。
最近、IQの大きな差がコミュニケーションを困難にするという議論がネット上で行われている。研究でもこの効果は確認されているが、克服できないわけではなく意図的な努力が必要だ。ある人が「陪審員の中でのIQの期待差」を挙げてこの困難を軽視したことに対し、記事では統計的な観点から反論している。
本記事では、関数のフーリエ級数とそのヒルベルト変換のフーリエ級数の関係を、無限行列の観点から解説する。以前の投稿で示した関係式を再検討し、フーリエ係数への作用が無限行列として表現できることを示す。この視点により、ヒルベルト変換の数学的構造がより明確になる。
実部と虚部
0.5本記事は、Henry Baker氏の論文に基づき、複素変数の関数を実変数の関数で表現する方法について解説したメモを紹介する。具体的には、f(x + iy) = u(x, y) + i v(x, y) となる関数u(x, y)とv(x, y)を求める手法を扱う。
数ヶ月前、筆者は複素数の正弦と余弦を実変数の実関数のみを使って計算する方法を紹介した。すべての初等関数に対して同様のことが可能だが、方程式は上記のものよりかなり複雑になる場合もある。
ローリング・ストーンズの歌詞を引き合いに、円関数と双曲線関数が本来は可逆ではないにもかかわらず、逆関数として定義されている不思議を解説。定義域の複数の点が値域の同じ点に対応する「多対一」の写像を、逆方向に一意に定める際に生じる「couth(行儀の良い)」ペアと「uncouth(行儀の悪い)」ペアの対比がテーマ。
円関数(三角関数)と双曲線関数の関係は、回転(虚数単位iの乗算)で説明できます。例えば、cosh(z) = cos(iz) という式は、zを左に90度回転させてから余弦を取ると、双曲線余弦が得られることを示しています。
x² − 1 の平方根
1.0√(z² − 1) をどう定義すべきか。一見単純に見えるが、実は微妙な問題である。x が非負実数の場合、√x は2乗して x となる非負実数と定義されるが、複素数を含む一般の z に対しては、分枝切断や主値の選択など、より注意深い扱いが必要となる。
恒等式を詳しく見る
0.5前回の記事で導出した恒等式について、x > 1 かつ y > 1 で成り立つという注釈の理由を検証。Mathematicaでプロットすると、x > 1 の領域では確かに平坦になり恒等式が成立することが確認できる。
マルコフ方程式の近似
0.5マルコフ数はx² + y² + z² = 3xyzの整数解である。ドン・ザギエはこの方程式をx² + y² + z² = 3xyz + 4/9で近似し、f(t) = arccosh(3t/2)と定義するとf(x) + f(y) = f(z)と等価になることを示した。本記事ではこの近似の数学的背景を解説する。
本稿では、乱数生成器xorshift128の内部状態をリバースエンジニアリングする方法を解説する。Mersenne Twisterやlehmer64に続くシリーズの一環として、128ビットの状態(a, b, c, d)をPythonコードの出力から復元する手法を具体的に示す。
C言語で128ビット符号なし整数(__uint128_t)を初期化する際、64ビット値で代用する簡単な方法がある。また、printfを使って128ビット整数を表示するには、64ビットの上位・下位部分に分割して出力する必要がある。これらのテクニックを紹介する。
先日Mersenne Twisterのハッキング手法を紹介したが、今回はさらにシンプルな実装を持つlehmer64乱数生成器を解析する。Daniel Lemireによって「最速の乱数生成器」と評されたこのアルゴリズムの内部状態を、出力ストリームからどのように復元できるかを解説する。
オイラー関数
1.0本稿では、有限体上のランダム行列が正則行列である確率について考察する。体の要素数をq、行列の次元をn×nとすると、その確率はnに関して非常に速く収束することが観察される。
逆シフト
1.0「シフト」の逆操作を考えたとき、右シフトの逆は単純な左シフトではありません。8ビットのシーケンス「abcdefgh」を右シフトすると「0abcdefg」になりますが、これを左シフトすると「abcdefg0」となり、元のシーケンスは復元できません。この記事では、右シフトの逆演算について考察します。
0と1のエントリを持つn×n行列をランダムに生成したとき、それが正則(可逆)である確率について考察する。バイナリ行列の正則性を判定する方法は複数あり、特に「逆行列」の解釈(通常の逆行列か、GF(2)上の逆行列か)によって確率の計算方法が異なる点に注目する。
ビット演算の線形代数
1.0前回の投稿では、メルセンヌ・ツイスタのテンパリング処理を、ビット演算の系列を(mod 2の)行列乗算として定式化して考察した。本稿ではその構成要素をさらに詳しく見ていく。線形代数の定理は一般にスカラー体に依存せず成り立つが、典型的には体はℝやℂであり、[以下略]
メルセンヌ・ツイスタ(MT)は統計的特性に優れた擬似乱数生成器(PRNG)だが、暗号学的に安全ではない(CSPRNGではない)。本記事では、MTの出力から内部状態を線形代数を用いて復元する方法を解説する。ビット操作によるアプローチは従来から知られているが、ここでは線形代数の手法に焦点を当てている。
曲率の計算
1.0曲率は概念としては単純だが、通常は計算が難しい。特に、f(x, y) = c で表される等高線(レベルセット曲線)の場合、曲率 κ の式は複雑になりがちで、たとえ f が比較的単純な形であっても計算は容易ではない。本記事ではその導出と計算方法について解説する。
平滑化された多角形
1.0前回の記事では、スクィアコル(squircle)の三角形版を構築した。これはp-ノルムにおける単位円で、pは通常4程度である。p=2の場合はユークリッド円、p→∞の極限ではユークリッド正方形となる。本記事では、各関数のレベル集合が三角形やその他の多角形の滑らかな近似を形成する3つの関数Li(x, y)を紹介する。
スクイルクルの三角形版
0.5本記事では、スクイルクル(正方形と円の中間的な形状)を三角形へ応用した「三角形版スクイルクル」について考察する。スクイルクルは単に角の丸い正方形ではなく、辺が連続的に湾曲している形状であり、その類似物を三角形に対して定義する方法を探る。
統一設定ファイル
0.5異なるコンピュータ間で一貫した作業環境を維持するための工夫として、実用的な範囲で同じキーが同じ動作をするようキー割り当てを再マッピングする方法を紹介。重要でない差異を減らし、統一感のある設定環境を実現する。
圏論の神話
0.5ジョン・D・クック氏が友人との会話とQiaochu Yuan氏の投稿をきっかけに、圏論が有用なパターン記述言語である一方、何もなしで何かを得られるという非現実的な期待を抱く人々がいる「神話」について考察する。圏論の過大評価と実用的な価値のバランスを指摘した一編。
Xで「ハイフンをenダッシュに変えるとPDFファイルサイズが約10バイト増える」という投稿を見た。ハイフンはASCII文字だがenダッシュはそうではないため、UTF-8エンコードのテキストファイルでは文字数が変わる。この変更がPDF内部でどのように影響するかを考察する。
ギターピックの形状
0.5X(旧Twitter)で (log x)² + (log y)² = 1 のプロットを見たという投稿がきっかけ。通常の x² + y² = 1 は円を描くが、対数を取るとどのような形状になるのかを考察。右辺を1、2…と変えたときの等高線が、ギターピックのような形になることを示している。
本記事では、バーンマンの定理を用いて偶関数を余弦の冪で近似する手法を解説する。ベッセル関数J(x)を(1+cos(x))/2で近似した例を出発点に、この定理がより高次の近似を系統的に構築する枠組みを提供することを示す。コメントで指摘された通り、この近似はバーンマン級数の一次項に相当する。
関数が古典的な意味で微分不可能な場合、一般化された導関数を計算する方法は複数存在する。本記事では、古典的な導関数の3つの一般化を、ニューラルネットワークで広く使われる活性化関数ReLU(ランプ関数)に適用して解説する。