本セクションは 行列・線形代数(Matrix Math / Linear Algebra) をジャストインタイム型に学べるよう、 12 観点で再整理した拡張索引です。 各チップは本ページ内の該当節へジャンプします。
🍰 まずはやさしく
行列は数字を並べた表のようなものです。
たくさんのデータをまとめて計算するために使います。
都道府県ごとの人口や支出の表が例です。
この章では行列の基本と使い方を読みます。
data/raw/SSDSE-B-2026.csv に対して実行すれば再現可能。時間が限られている方はこのブロックだけで OK。 ただし、 実務投入前には必ず「⚠️ 落とし穴」と「✅ 実務チェックリスト」を一読してください。 『知っていたが対処を忘れた』が分析事故の最大原因です。
🍰 まずはやさしく
行列は計算に使う共通の言葉のようなものです。
複雑な分析をシンプルに書きたいときに使います。
スマホのアプリなどの計算でも使われています。
ここでは行列を使った分析の手順を読みます。
「行列」は統計・機械学習のあらゆる計算の言語です。 SSDSE-B-2026 のような 47 行 × 110 列 のデータも 1 つの行列 $X$ で表現できます。 回帰係数、 主成分、 クラスタリング距離、 ニューラルネットの重み — どれも行列演算で記述されます。 本ページでは、 都道府県データを行列として扱い、 転置・積・逆行列・固有分解という最小限の操作だけで分析が組み立てられることを示します。
前提知識: ベクトル。 次に学ぶ: 逆行列、 固有値、 主成分分析。
本ページは『2026 統計・データ解析コンペティション』向けジャストインタイム用語集の 行列・線形代数 解説です。 想定読者は、 SSDSE-B-2026 を使った分析レポートを書こうとしている学部・修士・実務初学者層。 数式は最低限に抑え、 公的統計を題材に手を動かしながら習得できるよう設計しています。
| 観点 | 本ページの立ち位置 |
|---|---|
| 対象用語 | 行列・線形代数(Matrix Math / Linear Algebra) |
| カテゴリ | 数学・最適化 |
| 前提知識 | 高校〜大学初年級の数学、 Python の基本(pandas/numpy) |
| 学習目標 | 定義・直感・実装・落とし穴の 4 点を 30 分以内で押さえる |
| 扱うデータ | SSDSE-B-2026.csv(47 都道府県 × 約 110 指標 × 複数年) |
| 推定所要時間 | 通読 25-35 分、 ハンズオン込みで 60-90 分 |
| 難易度 | ★★☆☆☆〜★★★★☆(節により異なる) |
この用語は単独で完結する概念ではなく、 上位概念・並列概念・派生概念のネットワークの一節点です。 ページ末尾の「🔗 関連用語(前提・並列・発展)」と「🌐 関連手法・派生」を併読することを強くおすすめします。
🍰 まずはやさしく
行列は数字の表や変換器のようなものです。
データの形を捉えたり動かしたりするために使います。
エクセルのシートをイメージすると分かりやすいです。
ここでは行列の直感的なイメージを読みます。
イメージ 1: スプレッドシート。 Excel のシートそのものが行列です。 SSDSE-B-2026 を開けば、 行 = 47 都道府県、 列 = 総人口・出生数・消費支出… という $47\times 110$ の表が見えます。 1 マス 1 マスが行列の要素 $x_{ij}$ にあたります。
イメージ 2: 変換器。 $2\times 2$ 行列 $\begin{pmatrix}0 & -1\\ 1 & 0\end{pmatrix}$ をベクトル $\begin{pmatrix}1\\0\end{pmatrix}$ に掛けると $\begin{pmatrix}0\\1\end{pmatrix}$ になる — 反時計回りに $90^{\circ}$ 回転。 行列は座標空間を「ぐにゃっ」と動かす機械です。
イメージ 3: レンズ。 共分散行列 $\Sigma=X^\top X / n$ はデータ雲の形を捉えるレンズ。 固有値が大きい方向 = データが伸びている方向 = 主成分。 つまり「47 都道府県のばらつき」は共分散行列という 1 つの行列に集約できます。
47 都道府県 × 100 列の表は『行列』そのもの。 行列演算はこの表を回転・伸縮・要約する操作。
行列を「① 数の表(Excel の延長)」「② 連立方程式($AX=B$ という解くべき対象)」「③ 線形変換(ベクトル空間を別の空間に写す関数)」の 3 段階 で重ねて理解する。 機械学習で $X^\top X$ や $(X^\top X)^{-1} X^\top y$ が出てきたとき、 ① では「ただの数の集まり」、 ② では「連立方程式の解」、 ③ では「データ空間 $\mathbb{R}^p$ から係数空間 $\mathbb{R}^p$ への射影」と読めるようになる。
numpy.linalg.inv と @ 演算子で同じ式を 1 行で再現し、 47 県の総人口から出生数を予測する係数を求める。🍰 まずはやさしく
行列は数字を縦と横に並べたものです。
計算のルールを正確に決めるために使います。
テストの点数表のように数字を整理して並べます。
ここでは行列の計算ルールについて読みます。
$m\times n$ 行列 $A$ は、 実数(または複素数)を要素にもつ二次元配列:
$$ A = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ a_{m1} & a_{m2} & \cdots & a_{mn}\end{pmatrix} \in \mathbb{R}^{m\times n} $$基本演算:
特別な行列:
$$ I = \begin{pmatrix}1 & 0 & \cdots & 0\\ 0 & 1 & \cdots & 0\\ \vdots & & \ddots & \vdots\\ 0 & 0 & \cdots & 1\end{pmatrix},\quad O = \begin{pmatrix}0 & \cdots & 0\\ \vdots & & \vdots\\ 0 & \cdots & 0\end{pmatrix} $$$I$ は単位行列($Iv=v$)、 $O$ は零行列。 対称行列 $A^\top=A$、 直交行列 $A^\top A=I$、 半正定値 $v^\top A v\ge 0$ などの分類があります。
行列は単なる数の表ではなく、 「空間を変形する装置」と見るのが直感的です。 $2\times 2$ の例で考えると、 行列のタイプごとに空間の動きが対応します。
| 行列 | 幾何的意味 | $\det$ |
|---|---|---|
| $\begin{pmatrix}2&0\\0&2\end{pmatrix}$ | 面積 4 倍の等方拡大 | 4 |
| $\begin{pmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{pmatrix}$ | 角度 $\theta$ の回転 | 1 |
| $\begin{pmatrix}1&1\\0&1\end{pmatrix}$ | 横方向の剪断 | 1 |
| $\begin{pmatrix}1&0\\0&0\end{pmatrix}$ | $x$ 軸への射影(情報半分喪失) | 0 |
| $\begin{pmatrix}-1&0\\0&1\end{pmatrix}$ | $y$ 軸での反射 | -1 |
SSDSE-B で標準化 → PCA を適用するのは、 都道府県という 47 点の雲を「回転 + 射影」で 2 次元に押し込めて見やすくする操作と読み替えられます。 行列の $\det$、 固有値の正負、 直交性が、 そのまま地図上の「向き・拡大率・歪み」に対応するのが面白いところです。
統計・機械学習の主要アルゴリズムは、 基本的にすべて行列演算の組み合わせで表現できます。 「分解」「積」「逆」の 3 ステップで頭の中に図を描けるようにしましょう。
$\hat\beta = (X^\top X)^{-1} X^\top y$。 デザイン行列 $X$ を作り、 グラム行列を作り、 逆を取り、 $y$ と掛けるだけ。 SSDSE-B で「人口・高齢人口 → 出生数」の回帰がこの 1 式で完了します。
$\hat\beta_\lambda = (X^\top X + \lambda I)^{-1} X^\top y$。 単に対角に $\lambda$ を足すだけで、 多重共線性に強い推定が得られます。 行列の言葉だと「対角に足し上げて条件数を下げる」操作です。
$C = X_s^\top X_s / n$ を作り、 固有分解 $C = Q\Lambda Q^\top$。 上位 $k$ 個の固有ベクトル $Q_k$ を取り、 $Z = X_s Q_k$ で射影。 行列分解 1 回で次元削減と可視化が同時に完成します。
$h = \phi(W x + b)$。 ここでも $W$ は重み行列、 $x$ は入力ベクトル、 $\phi$ は非線形関数。 つまり「行列積 + バイアス + 活性化」を積み重ねたのが深層学習です。
類似度行列 $W$ からラプラシアン $L = D - W$ を作り、 小さい固有値に対応する固有ベクトルを取って k-means。 グラフを行列に翻訳した瞬間、 クラスタリングが線形代数の問題になります。
行列・線形代数 の中心的な定義式は次のとおりです。
$$ A\mathbf{x}=\lambda\mathbf{x} $$
この式は、 行列・線形代数 の本質を最も簡潔に表現したもの。 関連分野では同じ概念が別の表記で現れることもあるため、 教科書・論文を読む際は記号定義表を必ず確認してください。
$2\times 2$ 行列 $A=\begin{pmatrix}a&b\\ c&d\end{pmatrix}$ の 4 成分をスライダーで動かすと、 平面がどう変換されるかがリアルタイムで見えます。 薄いグレーが変換前の格子、 色付きが変換後の格子です。 赤い矢印は $\hat{\imath}=\begin{pmatrix}1\\0\end{pmatrix}$ の行き先(= $A$ の第 1 列 $(a,c)$)、 緑の矢印は $\hat{\jmath}=\begin{pmatrix}0\\1\end{pmatrix}$ の行き先(=第 2 列 $(b,d)$)。 塗られた平行四辺形が単位正方形の像で、 その符号付き面積が $\det A$ です。 青い点をドラッグ(マウス/タッチ)すると、 入力ベクトル $v$(灰色の破線)と像 $Av$(青の実線)が動きます。
スライダーをいくら動かしても、 原点は動かず、 格子の直線は直線のまま、 等間隔は等間隔のまま — これが線形変換の定義($A(u+v)=Au+Av$、 $A(cv)=c\,Av$)。 行列 $A$ の中身は「$\hat{\imath}$ と $\hat{\jmath}$ をどこへ送るか」だけを記録した表で、 第 1 列が $\hat{\imath}$ の行き先、 第 2 列が $\hat{\jmath}$ の行き先です。 任意の点 $v=(x,y)$ の像は $Av = x\cdot(\text{第1列}) + y\cdot(\text{第2列})$ という列の重み付き和。 青い点を動かして、 $Av$ が常に赤・緑の矢印の平行四辺形の格子点に乗ることを確かめてください。
「回転 90°」を押すと面積は不変($\det=1$)、 「2 倍拡大」で面積 4 倍($\det=4$)、 「y 軸反転」で平行四辺形が裏返り $\det=-1$(負の符号=向きの反転)。 「退化」を押すと赤と緑の矢印が一直線に重なり、 平面がぺしゃんこの線に潰れて $\det=0$ — このとき情報が失われ、 逆変換(逆行列)は存在しません。
行列積 $AB$ は「まず $B$ で変換し、 次に $A$ で変換する」という変換の合成です(右から順に作用)。 そして合成は順番に依存するため、 一般に $AB \neq BA$(非可換)。 例えば「回転 90°」を $R$、 「せん断」を $S$ とすると、 「先にせん断して回す($RS$)」と「先に回してせん断する($SR$)」は別物になります。 手で確かめると、 $R=\begin{pmatrix}0&-1\\1&0\end{pmatrix}$, $S=\begin{pmatrix}1&1\\0&1\end{pmatrix}$ に対して $RS=\begin{pmatrix}0&-1\\1&1\end{pmatrix}$、 $SR=\begin{pmatrix}1&-1\\1&0\end{pmatrix}$ で、 確かに一致しません。 一方 $\det(AB)=\det A\cdot\det B$ は順番に依らず成り立ちます(面積拡大率は掛け算で合成される)。
注:行列式(determinant)単独の用語ページは未整備のため、 ここでは本文とリンク先で解説しています。
| 記号 | 読み方 | 統計での意味 |
|---|---|---|
| $X$ | エックス | 説明変数の行列 (47 行 × 説明変数列) |
| $X^\top$ | エックス転置 | 行と列を入れ替えた変数 × 都道府県 |
| $X^\top X$ | グラム行列 | 変数間の内積。 共分散・相関の元 |
| $X^{-1}$ | 逆行列 | 変換の取り消し。 正則必須 |
| $\det X$ | デターミナント | 体積比。 0 なら退化 |
| $\mathrm{tr}\,X$ | トレース | 対角和 = 固有値の総和 = 全分散 |
| $\mathrm{rank}\,X$ | 階数 | 独立な行・列の最大本数 |
| $I_n$ | 単位行列 | $n$次の対角 1。 何も変えない変換 |
数式は「言葉の圧縮」。 ここでは上式の各記号を日本語に翻訳します。
| 記号 | 意味 | SSDSE-B-2026 での具体例 |
|---|---|---|
| $n$ | 対象の要素数(サンプルサイズ) | 47 都道府県 |
| $k$ または $p$ | 選ぶ・残す要素数、 次元数、 もしくはパラメータ数 | 総人口(人)を含む 5-10 指標の小集合 |
| $\mathbf{x}_i$ | i 番目の観測ベクトル | 都道府県 i の指標ベクトル |
| $y$ または $\hat{y}$ | 目的変数(実測値/予測値) | A1101(総人口(人)) |
| $\theta, w, \beta$ | モデルパラメータ(係数・重み) | 線形モデルで言えば回帰係数 |
| $\sigma, \Sigma$ | 標準偏差/分散共分散行列 | 47 県の総人口(人)のばらつき |
| $\lambda$ | 固有値・正則化係数など、 文脈で意味が変わる | 主成分の寄与率や Ridge の λ |
同じ記号でも分野により意味が異なる点に注意。 学習の習熟度が上がると、 文脈から自然に解釈できるようになります。
SSDSE-B-2026 は 564 行 × 112 列の行列そのもの。 この行列を A としたとき、 A^T A の固有値・固有ベクトルから主成分分析が、 (A^T A)^{-1} A^T y から最小二乗解が、 SVD(特異値分解)から低ランク近似が得られます。 行列計算は多変量解析・機械学習・深層学習のあらゆる場面で基盤となります。 NumPy の np.linalg、 SciPy の scipy.linalg、 さらに大規模行列向けには sparse 行列や疎行列分解が用意されています。 行列の条件数が大きいときは数値安定性の検討が必須です。
本セクションでは、 行列・線形代数 を理解した方が次に踏み込むべき発展的論点を 5 つ取り上げます。 いずれも 2026 年現在の研究と実務の最前線で問題になっているテーマです。
| 論点 | なぜ重要か | 主な研究の方向 |
|---|---|---|
| ① スケーラビリティ | 大規模データへの適用と計算効率 | 分散並列化、 GPU 化、 近似アルゴリズム |
| ② 解釈可能性 | 結果の説明責任、 規制対応 | SHAP, LIME, 反事実説明 |
| ③ 頑健性 | 分布シフト・外れ値・敵対的入力 | 頑健統計、 OOD 検出、 ドメイン適応 |
| ④ 不確実性定量化 | 予測の信頼度を伝える | Conformal Prediction, ベイズ深層学習 |
| ⑤ 公平性・倫理 | 差別の検知・是正、 説明責任 | Fairness 指標、 偏り除去、 監査 |
これら 5 論点は、 行列・線形代数 単独の話題ではなく統計学・機械学習全般を横断するメタテーマです。 2026 年現在、 各論点について多数の研究と実装ツールが公開されており、 用語ページから関連ページへ辿ることで体系的に学べます。
「3 都道府県 × 3 変数」をイメージした架空の例示値(標準化済みを想定した作例であり、 SSDSE-B-2026 の実測値ではありません)で、 行列 $X\in\mathbb{R}^{3\times 3}$ の演算を追ってみます。
$$ X = \begin{pmatrix} 2.91 & 2.45 & 3.10\\ 1.05 & 1.18 & 1.22\\ 0.31 & 0.42 & 0.28 \end{pmatrix} $$転置 $X^\top$ は変数 × 都道府県の見方になります。 グラム行列 $G=X^\top X$ は変数間の共分散構造(標準化済みなので相関に対応)を表します:
$$ X^\top X = \begin{pmatrix} 9.67 & 8.50 & 10.39\\ 8.50 & 7.57 & 9.15\\ 10.39 & 9.15 & 11.18 \end{pmatrix} $$対角成分は各変数の二乗和(≒ 分散 × $n$)、 非対角は変数間の共分散。 $\mathrm{tr}(X^\top X)=9.67+7.57+11.18=28.42$ が「全分散」、 そのうち最大固有値の比率が「第 1 主成分の寄与率」になります。 つまり 行列 1 個で都道府県データの構造が記述できる ことを実感できます。
| 操作 | 結果 | 解釈 |
|---|---|---|
| $\det(X^\top X)$ | ≈ 0.008 | 小さい → ほぼ多重共線性 |
| $\mathrm{rank}(X)$ | 3 | 完全に独立だがほぼ縮退 |
| 最大固有値 $\lambda_1$ | ≈ 28.35 | 主成分が全分散の 99.8 % |
| 条件数 $\kappa(X^\top X)$ | ≈ 6.3×10³ | 高い → 推定不安定 |
SSDSE-B-2026(公的統計の社会・教育系データセット)を用いて、 行列・線形代数 を体感します。 ファイルは data/raw/SSDSE-B-2026.csv。 読み込みコードは下記です。
1 2 3 4 5 6 7 8 9 | import pandas as pd import numpy as np # SSDSE-B-2026 を読み込む(cp932 / Shift_JIS)。最初の行は英文ヘッダー、2 行目は日本語ヘッダー df = pd.read_csv('data/raw/SSDSE-B-2026.csv', skiprows=[1], encoding='cp932') print('shape:', df.shape) # (564, 112) print('years:', sorted(df['SSDSE-B-2026'].unique())[:5]) latest = df[df['SSDSE-B-2026'] == df['SSDSE-B-2026'].max()].copy() print(latest[['Prefecture', 'A1101']].head()) |
使用列 A1101(総人口(人))を中心に、 47 都道府県の最新値で 行列・線形代数 を計算します。
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 基本統計:平均・標準偏差・四分位範囲 x = latest['A1101'].astype(float).values print(f'n = {len(x)}') print(f'mean = {np.mean(x):,.1f}') print(f'std = {np.std(x, ddof=1):,.1f}') print(f'min = {np.min(x):,.1f} max = {np.max(x):,.1f}') print(f'Q1 = {np.quantile(x, 0.25):,.1f} Q3 = {np.quantile(x, 0.75):,.1f}') # 上位 5 県・下位 5 県 top5 = latest.nlargest(5, 'A1101')[['Prefecture', 'A1101']] bot5 = latest.nsmallest(5, 'A1101')[['Prefecture', 'A1101']] print('TOP5\n', top5.to_string(index=False)) print('BOTTOM5\n', bot5.to_string(index=False)) |
上記の結果から、 47 都道府県の 総人口(人) の散らばり方が一目で分かります。 続いて 行列・線形代数 の本来の演算を当てはめましょう。
1 2 3 4 5 6 7 8 9 | # 標準化(zスコア化) z = (x - x.mean()) / x.std(ddof=1) print('z (head 5) =', np.round(z[:5], 3)) # 上位 10 / 下位 10 / 中位 27 の 3 グループに分けて平均差を確認 import pandas as pd g = pd.qcut(latest['A1101'], q=[0, 0.25, 0.75, 1.0], labels=['low', 'mid', 'high']) grp = latest.assign(group=g).groupby('group', observed=True)['A1101'].agg(['mean', 'std', 'count']) print(grp) |
| グループ | 構成県数 | 総人口(人)平均 | 総人口(人)標準偏差 |
|---|---|---|---|
| low(下位 25%) | 12 県 | 小さい | 中程度 |
| mid(中位 50%) | 23 県 | 中 | 小さい |
| high(上位 25%) | 12 県 | 大きい | 大きい |
行列・線形代数 は、 こうした実データの集計・要約・予測・最適化を支える基盤的な道具です。 SSDSE-B-2026 の他の列(B 系:労働、 E 系:教育、 H 系:医療、 L 系:消費)にも同様に適用できます。
線形回帰の根幹は、 正規方程式 \(X^\top X \beta = X^\top y\) を \(\beta = (X^\top X)^{-1} X^\top y\) で解くか、 数値安定な QR / SVD 経由で解くかの選択です。 ここでは SSDSE-B-2026 の 5 指標 (年少・生産年齢・老年・消費支出・大学学生数) から「年間出生数」を予測する OLS を組み、 3 通りの解法で結果を比較します。
| 解法 | 計算量 | 数値安定性 | SSDSE での挙動 (生データ) |
|---|---|---|---|
| 逆行列 \((X^\top X)^{-1} X^\top y\) | \(O(p^3)+O(np^2)\) | 条件数の二乗で悪化 | \(\kappa\approx10^{15}\)、 ほぼ特異 |
| QR 分解 (Householder) | \(O(np^2)\) | 条件数そのまま | 同程度の係数、 安定 |
| SVD / 疑似逆 \(X^+y\) | \(O(np^2)\) | 最小特異値で truncate 可 | 最も安全、 ランク落ちにも対応 |
| 標準化 + 逆行列 | 同上 | \(\kappa\) を 10 桁改善 | 実務でも十分 |
| Ridge \((X^\top X+\lambda I)^{-1}\) | 同上 | \(\lambda\) で正則化 | 多重共線性に強い |
| 勾配降下 | \(O(np)\) / iter | 学習率次第 | 大規模 \(n\) では有利 |
実用的にはほぼ常に numpy.linalg.lstsq か scipy.linalg.lstsq (内部で QR or SVD) を使います。 自分で \((X^\top X)^{-1}\) を書くのは「教科書のため」だけ。 SSDSE のような桁差の大きいデータでは、 標準化 + lstsq が最も安全です。
このコードでやること: SSDSE-B-2026 の 5 指標から年間出生数を予測する OLS を、 (1) 逆行列直接 (2) np.linalg.lstsq (QR / SVD 内部使用) (3) 標準化 + 疑似逆 の 3 通りで計算し、 係数と決定係数 \(R^2\) を比較する。
📥 入力データ (47 行 × 5 説明 + 1 目的):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import pandas as pd import numpy as np df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df23 = df[df['SSDSE-B-2026'] == 2023].copy() cols = ['A1301', 'A1303', 'A1302', 'L3221', 'E6302'] X = df23[cols].values.astype(float) y = df23['A4101'].values.astype(float) X1 = np.column_stack([np.ones(len(X)), X]) # (1) 逆行列直接 try: beta_inv = np.linalg.inv(X1.T @ X1) @ X1.T @ y except np.linalg.LinAlgError as e: beta_inv = None print('特異:', e) # (2) lstsq (QR / SVD) beta_lstsq, *_ = np.linalg.lstsq(X1, y, rcond=None) # (3) 標準化 + 疑似逆 Xz = (X - X.mean(0)) / X.std(0, ddof=1) Xz1 = np.column_stack([np.ones(len(Xz)), Xz]) beta_pinv = np.linalg.pinv(Xz1) @ y cond = np.linalg.cond(X1.T @ X1) y_hat = X1 @ beta_lstsq r2 = 1 - ((y - y_hat)**2).sum() / ((y - y.mean())**2).sum() print(f'cond(X^TX) = {cond:.2e}') print(f'beta_lstsq = {beta_lstsq.round(4)}') print(f'R^2 = {r2:.4f}') |
📤 実行例:
💬 \(R^2 = 0.9988\) はほぼ完璧な当てはまりですが、 これは「出生数が人口関連指標の線形結合でほぼ決まる」ことを反映しているだけで、 因果ではありません。 注目すべきは \(\mathrm{cond}(X^\top X) \approx 1.3\times10^{15}\) という巨大な条件数で、 消費支出 (L3221) が県ごとにほとんど変わらず切片とほぼ共線的なこと、 年齢 3 区分が総人口的にほぼ線形従属なことが重なり、 \(X^\top X\) は数値的にほぼ特異です。 これが「\(X^\top X\) を逆行列で扱うのは禁忌」のサイン。 lstsq が QR / SVD で対処しているから R^2 が安定しています。 「sklearn の LinearRegression と同じ結果になる」のは、 中身が同じ lstsq だからです。
特異値分解 \(X = U \Sigma V^\top\) は、 任意の \(n\times p\) 行列を「直交行列 \(U\)・対角行列 \(\Sigma\)・直交行列 \(V^\top\)」に分解する道具です。 SSDSE-B-2026 の標準化済み 7 指標行列 \(\tilde X \in \mathbb{R}^{47\times 7}\) を SVD すると、 上位 2 特異値で全分散の 96.8% を説明できます。 これがそのまま PCA の「累積寄与率」と一致します。
| 主成分 | 特異値 \(\sigma_k\) | 寄与率 \(\sigma_k^2/\Sigma\sigma^2\) | 累積寄与率 | 意味づけ (実データの解釈) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 第 1 | 16.48 | 84.4 % | 84.4 % | 第 2 | 6.342 | 12.5 % | 96.8 % | 第 3 | 3.053 | 2.9 % | 99.7 % | 第 4 | 0.809 | 0.2 % | 99.9 % | 第 5 | 0.408 | 0.05 % | 99.99 % | 第 6 | 0.161 | 0.01 % | 100 % | 第 7 | 0.001 | 0.00 % | 100 % |
第 1 主成分 (規模) で東京 / 神奈川 / 大阪 / 愛知 / 埼玉 の大都市圏が他から大きく離れ、 第 2 主成分 (消費支出の高低) で世帯消費の多い県と少ない県が分かれます。 この 2 軸で 96.8% を説明できるので、 47 都道府県の地図を「2 次元の散布図」にまとめて議論することが正当化されます。 SVD は単なる行列の数学ではなく、 都道府県地図の定量的な縮約を提供する道具です。
🐍 Python — SVD で 7 指標を 2 次元へ圧縮、 累積寄与率を確認このコードでやること: SSDSE-B-2026 の 7 指標を標準化し、 \(\tilde X = U\Sigma V^\top\) を計算。 上位 2 特異値で説明できる分散割合を出し、 第 1・第 2 主成分での都道府県プロットの座標 (PC1, PC2) を求める。 📥 入力データ (47 行 × 7 列、 標準化済み): cols = [A1101, A4101, A1301, A1303, A1302, L3221, E6302]
shape = (47, 7)、 各列 平均 0、 標準偏差 1
📤 実行例: 特異値: [1.648e+01 6.342e+00 3.053e+00 8.090e-01 4.080e-01 1.610e-01 1.000e-03]
寄与率: [8.435e-01 1.249e-01 2.900e-02 2.000e-03 5.000e-04 1.000e-04 0.000e+00]
累積: [0.8435 0.9684 0.9974 0.9994 0.9999 1. 1. ]
PC1 が極端な 5 県: ['東京都', '神奈川県', '大阪府', '愛知県', '埼玉県']
💬 上位 2 主成分で累積 96.8%。 残り 5 主成分は合計 3.2% しか持たないので、 「2 次元プロットで都道府県を語ってよい」と判断できます。 PC1 で大きく離れる 5 県は東京・神奈川・大阪・愛知・埼玉 で、 いずれも人口規模の大きい大都市圏。 小規模県は原点付近に密集するため、 まさに「規模軸」の一端が突出して見えます。 線形代数を学んだ価値は、 こうした圧縮を「数式と実データの両方で」説明できる点にあります。 🧮 数式に値を入れて手で計算する: 2x2 行列積合成 A·B を計算する。 Step 1: 行列A = [[1,2],[3,4]]
B = [[5,6],[7,8]]
Step 2: 積 C = A·BC[0,0] = 1·5 + 2·7 = 5+14 = 19
C[0,1] = 1·6 + 2·8 = 6+16 = 22
C[1,0] = 3·5 + 4·7 = 15+28 = 43
C[1,1] = 3·6 + 4·8 = 18+32 = 50
C = [[19,22],[43,50]]
🐍 Python で再現
📤 実行結果[[19 22]
[43 50]]
💬 手計算 (Step 2) と Python 出力が完全一致。 🐍 Python 実装例 1:SSDSE-B-2026 を行列として読み込み、 基本演算を確認。 🎯 解説: SSDSE-B-2026 の都道府県 × 経済指標行列を、 NumPy で読み込んで行列積(共分散行列の計算)を行う基本演算を確認する。
📥 入力例(SSDSE-B-2026 全体:564 行 × 112 列 = 47 都道府県 × 2012〜2023 年)
年度 地域コード 都道府県 A1101(総人口) A1303(65歳以上人口) A4101(出生数) …
2023 R01000 北海道 5,092,000 1,681,000 24,430 …
2023 R13000 東京都 14,086,000 3,205,000 86,348 …
2023 R47000 沖縄県 1,468,000 350,000 12,549 …
…(残り 112 列は住宅・家計・教育・医療など)
📥 入力例: data/raw/SSDSE-B-2026.csv
X.shape = (47, 5) — 47 都道府県、 5 経済指標
📤 実行例:
Σ = (1/n) X.T @ X
Σ.shape = (5, 5)
対角成分 = 各変数の分散
非対角 = 共分散
💬 読み方: X.T @ X は計算機統計の基本演算。 行列積は線形変換の合成、 共分散・線形回帰・PCA すべての基礎。 大規模行列では BLAS の dgemm が高速。 (XX.T) と (X.T X) は転置で次元が違う点に注意。
例 2:転置・積・逆行列。 🎯 解説: 都道府県データの共分散行列の固有値分解を行い、 各固有ベクトルが主成分の方向を示すことを確認する。
📥 入力例: Σ = X.T @ X / n (5×5 共分散行列)
📤 実行例:
固有値 λ = [12.3, 4.4, 2.1, 0.8, 0.4]
対応する固有ベクトル v1, …, v5 が主成分軸
累積寄与率(上位2)= 0.78
💬 読み方: 対称正定値行列の固有値はすべて非負、 固有ベクトルは直交。 PCA は共分散行列の固有値分解と等価。 numpy.linalg.eigh は対称行列専用で高速・数値安定。 一般行列は eig を使う。
例 3:線形回帰の正規方程式。 🎯 解説: 47 都道府県データ行列 X を SVD(特異値分解) X = UΣV.T に分解し、 PCA と同じ情報を得る。
📥 入力例: X.shape = (47, 5) 標準化済み
📤 実行例(実測)
回帰係数: [ 1.70937790e+03 1.32019392e-02 -2.42903346e-02]
予測値: [28101.59985116 28613.84125946 29181.52464464 30264.73882485
30500.64637244]
💬 読み方: SVD は任意の行列に適用可能(固有値分解は正方行列のみ)。 PCA, LSI, 推薦システムの基礎。 σ_i^2 / (n-1) = λ_i(固有値分解との関係)。 numpy.linalg.svd は full_matrices=False が高速。
例 4:共分散行列の固有分解。 🎯 解説: 5×5 共分散行列の逆行列を計算して、 線形回帰の正規方程式 β = (X.T X)^{-1} X.T y を直接解く。
📥 入力例: X.T @ X (5×5), X.T @ y (5×1)
📤 実行例(実測)
上位固有値: [1.25257646e+14 1.19313176e+13 1.54406198e+12 2.61422941e+11
9.18823082e+10]
寄与率: [9.00015058e-01 8.57302196e-02 1.10945645e-02 1.87840496e-03
6.60202897e-04]
💬 読み方: 逆行列計算は数値的に不安定。 実務では np.linalg.solve(LU 分解)か lstsq(QR/SVD)を使う。 X.T X が特異(多重共線性)だと逆行列が暴れる → リッジ回帰で正則化。 条件数で安定性を判定。
🐍 Python 実装(拡張版)pandas + numpy + scipy + scikit-learn を組み合わせた 行列・線形代数 の標準実装を 4 段階で示します。 ① データ読み込みと前処理
📤 実行例(実測)
NA per col (top 5):
SSDSE-B-2026 0
Code 0
H1800 0
G7102 0
G7101 0
dtype: int64
numeric cols: 109
② 基本的な 行列・線形代数 適用
📤 実行例(実測)
X shape: (47, 1) mean: -0.0 std: 1.0
t = -0.000, p = 1.0000
③ 可視化
📤 実行例(実測)
saved figs/matrix-math_dist.png
④ 応用:他指標との結合分析
📤 実行例(実測)
|r| 上位 10:
A1102 1.000
A110201 1.000
A110102 1.000
A110101 1.000
A110202 1.000
A130202 0.999
A1302 0.999
A130201 0.998
E4501 0.997
E4601 0.997
Name: A1101, dtype: float64
|r|>0.95 の組: 1564
これら 4 段階を踏めば、 SSDSE-B-2026 の任意の列に 行列・線形代数 を適用してレポートに使える結果を再現できます。 コードは引数や変数名を最小限にし、 初学者でも読み下せる構成にしました。 🐍 発展的コード例 — 行列・線形代数 を SSDSE-B-2026 で複合的に使う本ページの基礎コードを踏まえ、 行列・線形代数 を複数の指標と組み合わせた発展的な分析例を示します。 すべて A. パネル構造の活用📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行)
都道府県 A1101(総人口)
北海道 5,092,000
東京都 14,086,000
沖縄県 1,468,000
…(全 47 行)
📤 実行例(実測)
panel shape: (47, 12)
SSDSE-B-2026 2012 2013 2014 2015 2016
Prefecture
三重県 1841000.0 1833000.0 1826000.0 1815865.0 1809000.0
京都府 2628000.0 2622000.0 2616000.0 2610353.0 2608000.0
佐賀県 845000.0 841000.0 837000.0 832832.0 829000.0
兵庫県 5575000.0 5565000.0 5550000.0 5534800.0 5526000.0
北海道 5465000.0 5438000.0 5410000.0 5381733.0 5355000.0
増加率(下位 5 県):
Prefecture
秋田県 -0.013634
青森県 -0.011855
高知県 -0.010859
山形県 -0.010551
岩手県 -0.010483
dtype: float64
増加率(上位 5 県):
Prefecture
千葉県 0.000834
埼玉県 0.001439
神奈川県 0.001582
沖縄県
…(以下略)
B. 多指標の同時分析
📤 実行例(実測)
説明率: [0.773 0.049 0.035 0.029 0.018]
累積: [0.773 0.822 0.857 0.887 0.905]
PC1 上位 10:
A130202 0.109
A1302 0.108
A9101 0.108
A110102 0.108
A130201 0.108
A1101 0.108
E4602 0.108
A110202 0.108
A1102 0.108
A4101 0.108
dtype: float64
C. クラスタリングへの応用
📤 実行例(実測)
クラスター別 都道府県数:
cluster
0 20
1 1
2 8
3 18
Name: count, dtype: int64
クラスター 0 の都道府県:
['青森県', '秋田県', '富山県', '石川県', '福井県', '山梨県', '和歌山県', '鳥取県', '島根県', '山口県', '徳島県', '香川県', '愛媛県', '高知県', '佐賀県', '長崎県', '大分県', '宮崎県', '鹿児島県', '沖縄県']
クラスター 1 の都道府県:
['東京都']
D. 結果のレポート用整形
📤 実行例(実測)
metric value
n 4.700000e+01
mean 2.645809e+06
std 2.797551e+06
min 5.370000e+05
max 1.408600e+07
p1 5.889800e+05
p99 1.185178e+07
A-D の 4 段階を踏むことで、 SSDSE-B-2026 を素材とした 行列・線形代数 の応用分析が一通り完成します。 コードはそのまま貼り付けて実行可能、 引数や変数は最小限にして可読性を優先しました。 📊 比較表 — 行列・線形代数 と類似手法の使い分け行列・線形代数 は単独で完結する手法ではなく、 周辺手法と比較して使い分ける必要があります。 以下に主要な類似・代替手法との比較を表でまとめます。
SSDSE-B-2026 の 2 次元表形式(47 県 × 200 変数)を扱う場合は 行列代数で十分。 時間軸を加えた 3 階以上のデータにはテンソル代数、 県同士の隣接関係を扱うならグラフ理論が適切。 いずれも線形代数を基礎とする。 🔭 多角的視点 — 行列・線形代数 を 5 つのレンズで眺める同じ概念でも、 学問分野によって呼び名・記法・強調する側面が異なります。 行列・線形代数 を 5 つの分野視点から眺めることで、 各教科書・論文を読む際の翻訳力が身につきます。 📊 統計学者の視点
行列・線形代数 は確率モデルとして定式化され、 不偏推定量・一致性・最良性などの理論的性質が問われる。 仮定の明示と頑健性の議論を重視。
💻 機械学習エンジニアの視点
行列・線形代数 は学習可能なモデルとして実装され、 訓練/検証/テスト分割とハイパーパラメータ調整が中心の関心事。 性能指標(精度・F1・AUC 等)で評価する。
💼 ビジネスアナリストの視点
行列・線形代数 は意思決定支援の道具。 結果が経営層に伝わるかどうか、 行動に結びつくかどうかが評価軸。 派手な精度より、 解釈可能性と再現性が大事。
🔬 研究者の視点
行列・線形代数 は既存手法との比較対象。 新規性・優位性・汎用性が問われる。 ベンチマーク、 アブレーションスタディ、 統計検定が論文の必須要素。
🎓 教育者の視点
行列・線形代数 を学習者にどう伝えるか。 比喩・図解・実例の組み合わせで段階的に。 数式は『最後の総まとめ』として導入するのが効果的。
同じ 行列・線形代数 でも、 立場により注目する論点が異なります。 自分の関心がどの視点に近いかを意識すると、 学習効率が大きく向上します。 ⚠️ よくある落とし穴❌ 積の順序を混同 $AB$ と $BA$ は一般に違う行列。 サイズも合わないことが多い。 必ず形状 $(m,n)\times(n,p)\to(m,p)$ を確認してから掛ける。 ❌ 逆行列をいつでも計算 $\det X\approx 0$ なら数値的に不安定。 SSDSE で説明変数が線形従属なら $X^\top X$ は特異。 リッジで $\lambda I$ を足すか、 疑似逆行列 np.linalg.pinv を使う。❌ 標準化せずに共分散 人口(千人単位)と販売額(百万円単位)を混ぜると、 共分散行列は単位の大きい変数に支配される。 PCA・距離計算では事前に標準化を。 ❌ 行と列を取り違える NumPy は axis=0 が行方向の集約(縦集計)。 SSDSE で「都道府県ごと平均」を出したいときに axis=1 を指定すると意味が変わる。❌ 単位が混ざった行列の固有値を信用 固有値はスケール依存。 標準化前と後では PCA 結果が大きく変わる。 必ず StandardScaler を通してから固有分解する。⚠️ よくある落とし穴(拡張版)行列・線形代数 を実務で扱う際にハマりやすい 8 件を、 症状・原因・対策の 3 点セットで整理します。
🚨 警告:上記のうち 3 件以上に該当しないことを確認できないまま、 行列・線形代数 の結果をレポートに載せると、 査読・上長レビューで指摘される確率が極めて高くなります。 必ず実行前に「✅ 実務チェックリスト」を確認してください。
⚠️ 行列演算の典型ミス 12 連発 — SSDSE 解析で踏みやすい罠
この 12 件は、 実際に学生が SSDSE 解析で踏んだ罠を整理したものです。 共同作業者と相互レビューする習慣を持つことが防止策になります。 📖 行列・線形代数 用語ミニ辞典・チェックリスト本ページに登場した用語を整理しました。 ジャストインタイム学習のためにあえて凝集度高めに並べています。
レポート提出前のチェックリストとしては、 (1) \(X\).shape の出力を 1 度貼る (2) 標準化しているか書く (3) 条件数を出す (4) PCA 結果に解釈名をつける (5) 結果のスケールが妥当かレビュー、 の 5 点を確認すれば、 線形代数まわりの致命的ミスはほぼ防げます。 📝 Round 643 まとめ — 「行列」を SSDSE で語る 10 ステップ
この 10 ステップを実装できれば、 行列・線形代数を「ただ知っている」から「現場で使える」に引き上げられます。 卒研・コンペ・実務、 どこに行っても通用する基本骨格です。 🗺 概念マップ行列 = データ × 写像 × 関係の三位一体。 ベクトル → 行列 → テンソルと拡張し、 固有分解・特異値分解・行列分解を経て PCA / 回帰 / ニューラルネットへ。 [ベクトル] → [行列] → [テンソル] │ ├─ 線形変換 → 回転・射影・スケーリング ├─ 連立方程式 → 逆行列・最小二乗 ├─ 固有分解 → PCA・スペクトルクラスタリング └─ 特異値分解 → SVD・推薦システム・低ランク近似 学習ロードマップ:
🗺 適用判断フローチャート — 行列・線形代数 を使うべきか行列・線形代数の道具は、 タスク (連立方程式・分解・最適化) と問題サイズによって使い分けます。 以下のフローチャートで判定してください。 [START] ↓ Q1: 解きたいのは何か? ├ 連立方程式 Ax = b → A の構造を見る (Q2) ├ 主成分・低ランク近似 → SVD / 固有値分解(np.linalg.svd) ├ 最小二乗回帰 → 正規方程式 / QR 分解(lstsq) └ 行列指数・微分方程式 → expm / 数値積分 Q2: 行列 A の性質は? ├ 対称正定値 → コレスキー分解 (cho_solve) ├ 一般正方行列 → LU 分解 (solve) ├ 長方形・過剰決定 → 最小二乗解 (lstsq) └ スパース・大規模 → 反復法 (CG / GMRES, scipy.sparse.linalg) Q3: 数値安定性が心配な場面か? ├ Yes (条件数 大 / 正則化が要) → 正規方程式は避け SVD / QR を選択 └ No (小規模・十分疎) → 直接法で OK [END] → 採用した分解を本ページ「🐍 Python 実装」の例で確認 フローチャートで A 判定が出たら、 本ページの実装をそのまま流用できます。 別手法に分岐した場合は、 ページ末尾の「🔗 関連用語(発展)」リンクから移動してください。 🚧 よくある誤用集 — レビューで指摘される 10 パターン行列・線形代数を用いた解析で、 共同作業者・査読者に高確率で指摘される 10 パターンを並べます。 提出前に自分のコードと突き合わせてください。
10 件のうち 2-3 件は誰でもやってしまいます。 重要なのは『指摘される前に自分で潰す』姿勢です。 チェックリストを印刷して机に置いておくと事故率が激減します。 📝 報告書テンプレート — 行列・線形代数 結果の書き方行列・線形代数 を使った分析結果を報告書・論文・スライドに載せる際のテンプレートです。 5 つの構成要素を順に埋めれば、 過不足のない記述になります。
【方法】
本研究では SSDSE-B-2026(出典:独立行政法人統計センター)の
47 都道府県 × 最新年度データを対象に、 行列・線形代数 を適用した。
中心となる目的変数は A1101(総人口(人))である。
前処理として欠損確認・標準化を実施し、 Python 3.11 と
pandas / scipy / scikit-learn 系ライブラリを使用した。
【結果】
行列・線形代数 の主要出力は次の通り:
(数値、 表、 図番号を記載)
標本サイズ n=47、 推定値、 95% 信頼区間も併記する。
【解釈】
得られた結果は、 47 都道府県の 総人口(人) について
[具体的な傾向] を示唆する。
ただし、 [仮定 X] が成立する範囲に限定される点に注意。
【限界】
本分析の限界として、
(1) [単一年度] のクロスセクションデータであること、
(2) [因果関係の特定には適していない] こと、
(3) [外れ値の取り扱い] に依存することが挙げられる。
【再現性】
データ:data/raw/SSDSE-B-2026.csv
コード:本ページ「🐍 Python 実装(拡張)」と同等
環境:Python 3.11, pandas 2.x, scikit-learn 1.x
このテンプレートを使えば、 査読プロセスでよく指摘される『方法の透明性』『限界の明示』『再現性』の 3 観点をカバーできます。 📜 歴史と背景 — 行列・線形代数 のあゆみ行列 は、 統計学と計算機科学の流れの中から生まれました。 下の年表はこの分野全体の流れで、 行列 固有の年表ではありません。 この用語がどの時代の産物かを掴むために置いています。
歴史を知ると、 各手法が『なぜそのような形をしているか』が腹落ちします。 特に新手法を学ぶときは、 既存手法との関係・歴史的経緯を併せて押さえると、 表面的な暗記を超えた理解に到達できます。 ✅ 実務チェックリスト — 行列・線形代数 を使う前に確認すべき 15 項目行列・線形代数 を実務・コンペで使う前に、 以下の 15 項目をすべてチェックしてください。 1 つでも未確認なら、 結果の信頼性が大きく揺らぐ可能性があります。 📋 データ理解(5 項目)
🔬 適用条件(5 項目)
📊 報告(5 項目)
❓ FAQ — 行列・線形代数 に関するよくある質問Q1. 行列・線形代数 と類似概念の違いが分かりません
A. 本ページの「🌐 関連手法・派生」と「🔗 関連用語」を併読してください。 多くの場合、 適用条件と仮定の違いで使い分けます。 具体的な選択フローはカテゴリのグループ教材を参照。
Q2. 数式は理解必須ですか?
A. 結論から:暗記は不要、 意味は必要。 分母/分子それぞれが何を表現しているかを言葉で説明できれば十分です。 本ページの「🔬 数式を言葉で読み解く(拡張)」がその目的のセクションです。
Q3. 実務で使う Python パッケージは?
A. 本ページ「🐍 Python 実装(拡張)」のコードがそのまま叩き台になります。 scikit-learn・pandas・scipy・statsmodels が大半のケースをカバー。
Q4. 論文・報告書にどう書けば良い?
A. 「使ったデータの出典」「サンプル数」「前提条件の確認結果」「推定値と不確実性」「解釈と限界」の 5 点セットで書くと過不足が出にくいです。 本ページ「📝 報告書テンプレート」を参照。
Q5. 適用条件を満たさないと分かったら?
A. 代替手法を本ページ「🌐 関連手法・派生(拡張)」から選びます。 「条件を満たさなかった」事実を報告に明記することが、 透明性のあるデータサイエンスの基本姿勢です。
Q6. SSDSE-B-2026 以外のデータでも使えますか?
A. はい。 SSDSE-B-2026 は典型的な「47 都道府県 × 多列 × 多年」のパネルデータで、 多くの公的統計が同様の構造を持ちます。 国勢調査、 経済センサス、 RESAS データなどでも同じコードが応用できます。
Q7. 学習のおすすめ順は?
A. ① 直感 → ② 数式 → ③ 実装 → ④ 落とし穴 → ⑤ 関連用語、 の順で本ページを読むのが効率的です。 完璧に理解できなくても OK、 必要になった時に戻ってきてください(ジャストインタイム学習)。
Q8. 行列・線形代数 の計算コストは?
A. 47 都道府県・最新年度(n=47)であれば一瞬で終わります。 47 × 100 × 複数年でも数秒〜数十秒。 ただし大規模データや反復計算(クロスバリデーションなど)では時間がかかるため、 必要なら numpy 化・並列化を検討してください。
📋 ミニ用語辞典 — 行列・線形代数 周辺で必ず出会う 20 語行列・線形代数 を学ぶ過程で頻出する 20 の関連用語を、 1 行ずつ簡潔に定義します。 詳細はそれぞれの専用ページへリンクされています。
🎯 拡張版まとめ — 行列・線形代数 を 1 分で復習本ページでは 行列・線形代数(Matrix Math / Linear Algebra) を 12 セクション + 拡張 8 セクションで体系的に整理しました。 ジャストインタイム学習の原則に従い、 すべての節は独立して読めるよう設計されています。 必要な節だけ拾い読みしても OK、 通読しても OK。
本ページが役に立ったら、 ページ末尾の「🔗 関連用語(前提・並列・発展)」と「📚 関連グループ教材」から次の用語に進んでください。 知識のネットワークが少しずつ広がり、 全体像が見えてきます。 🔗 隣接手法への橋渡し行列代数は単独の道具ではなく、 上流のデータ表現 (X ∈ ℝ^{n×p})、 並列の連立方程式・固有値分解・特異値分解、 下流の主成分分析・回帰・ニューラルネット重み行列と接続する。 機械学習の数学的言語と言える。
SSDSE-B-2026 を 47×35 の行列 X に並べると、 上流で各列を中心化、 中段で共分散行列 X'X / (n-1) を計算、 下流で固有値分解して主成分軸 + 寄与率を出す、 という流れで PCA / 線形回帰 / 判別分析が一気通貫で扱える。 🌳 手法選択フロー行列計算の手法選択は、 (1) 正方行列か矩形か、 (2) フルランクか特異か、 (3) サイズ n が大きいか (疎か密か)、 (4) 数値安定性の優先度、 で決まる。 矩形なら SVD、 正方フルランクなら LU、 正方対称正定値なら Cholesky、 疎大規模なら反復解法 (CG / GMRES)。 章 14 で挙げた上流 (特徴量行列構築)・並列 (テンソル/グラフ)・下流 (PCA / 回帰) と統合した 5 段分岐で示す。 5 段分岐フローチャート (ASCII): [Step 1] 行列のサイズと密度は? │ ├─ 疎大規模 (n > 10^4, 非零率 < 5%) → 反復解法 CG / GMRES (scipy.sparse.linalg) └─ 密 (n ≤ 10^4) ↓ [Step 2] 正方行列 (n×n) か矩形 (m×n, m≠n) か? │ ├─ 矩形 (m≠n) → SVD (特異値分解) / 最小二乗 lstsq │ └─ PCA / 次元削減 / 擬似逆行列の用途 └─ 正方 (n×n) ↓ [Step 3] 対称行列 (A = Aᵀ) か? │ ├─ No → LU 分解 (np.linalg.solve)、 一般連立方程式 └─ Yes ↓ [Step 4] 正定値 (固有値 > 0) か? │ ├─ Yes → Cholesky 分解 (LL^T) — LU の 2 倍高速、 共分散行列に最適 (今ここ) └─ No ↓ [Step 5] 用途は何か? │ ├─ 固有値・固有ベクトル抽出 → 固有値分解 (np.linalg.eig) │ └─ 後段: PCA の主成分軸 → 章 14 の下流活用へ ├─ 連立方程式 Ax = b 解く → LDL^T 分解 (対称不定値) └─ 行列式・ランク確認 → QR 分解 各分岐の詳細条件:
実務では数値安定性を最優先し、 逆行列を直接計算せず np.linalg.solve / lstsq を使うのが鉄則で、 SSDSE-B-2026 規模 (47×35) なら全手法 0.001 秒未満で計算できる。 章 14 で挙げた PCA / 回帰 へ進む場合、 Step 2 → 矩形 → SVD で次元削減、 または Step 4 → 共分散行列の固有値分解で主成分軸を求めるのが定石ルート。 🔎 解説を深める — 「二つのグラム行列」から読む行列演算ここでは他ページと重複しない角度として、 データ行列 $X$ から作れる $X^\top X$(変数空間)と $XX^\top$(都道府県空間)の対比 を軸に、 行列積の順序依存・次元の適合を実測値で確認します。 数値は 🎨 直感標準化データ行列は $X\in\mathbb{R}^{47\times 3}$。 同じ $X$ から「掛ける順序」を変えるだけで、 意味もサイズも別物の 2 つの行列が生まれます。
対角が $46=n-1$ なのは各列を標準化した必然。 非対角から「出生率と気温は $+0.502$(暖かい県ほど出生率が高い傾向)」「出生率と 65 歳以上人口は $-0.587$(高齢化が進むほど出生率が低い)」「気温と高齢人口は $+0.084$ でほぼ無相関」と、 行列 1 個が 3 変数の相関構造をまるごと保持していることが読めます。
同じ素材から生まれる兄弟でも、 $3\times 3$ か $47\times 47$ か でその後の解析(PCA は $X^\top X$、 サンプル間類似度は $XX^\top$)が完全に分岐します。 ⚠️ 落とし穴(重要)
🚀 発展$X=U\Sigma V^\top$ と特異値分解すると、 $X^\top X=V\Sigma^2 V^\top$($3\times 3$)と $XX^\top=U\Sigma^2 U^\top$($47\times 47$)は 同じ非零固有値 $\sigma_i^2$ を共有します。 だからトレースが $138.0$ で一致し、 主成分の寄与率はどちらから計算しても同じ。 大標本($n\gg p$)で PCA を回すときに小さい方 $X^\top X$($3\times 3$)を固有分解するのは、 この「非零固有値が共通」という保証があるからこその計算量削減です。 一般に $X^\top X\succeq 0$(半正定値)なので固有値は非負であり、 負の固有値が出たら数値誤差か入力ミスを疑います。 🔗 関連ページ
補足:本節の相関値・トレース・$CD/DC$ は上記 CSV から Python で算出した実測値です。 重み行列 $D=\mathrm{diag}(1,2,3)$ は順序依存を示すための架空の作例です。 |