論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
内積
Inner Product / Dot Product
数学基礎
別称: ドット積

🔖 キーワード索引

内積ドット積dot productコサイン類似度射影直交ノルムベクトル

inner product」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「inner product」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。

inner product統計分析SSDSE-B-2026前提条件適用範囲落とし穴関連手法Python 実装検証方法

これらのキーワードは「inner product の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。

💡 30秒で分かる結論

🍰 まずはやさしく

内積はベクトルの掛け算のようなものです。

2つのデータの似具合を調べるために使います。

スマホのオススメ機能などで活用されています。

ここでは内積の基本と計算方法を学びます。

ベクトル積の基本。 類似度・射影に使用

📍 あなたが今見ているもの

🍰 まずはやさしく

内積はデータ分析の主役となる道具です。

機械学習などの高度な計算に欠かせません。

検索エンジンの仕組みなどにも使われています。

定義から実装までを6つの視点で解説します。

Word2Vec の単語類似度、 検索エンジンの文書スコアリング、 ニューラルネットの forward 計算 — 全部内積です。 機械学習の隠れた主役。

本ページでは「inner product」を扱う。 統計データ分析コンペティション (2026) の教材で、 SSDSE-B-2026 (47 都道府県 × 複数年 × 100 超列) の実データを使った再現可能な学習を目指す。

「inner product」は統計・データサイエンスの体系における重要概念のひとつ。 本ページは「定義・直感・数式・実装・落とし穴・関連手法」の 6 視点で構成され、 各視点は独立して読めるが順序通り読むと体系的な理解が得られる。

🎨 直感で掴む

🍰 まずはやさしく

内積は「好みの近さ」を測る物差しです。

データがどれくらい似ているか判断します。

趣味が似ている人を探すイメージです。

入力から解釈までの流れを順に説明します。

2人の人物のベクトル(趣味プロファイル)の内積:

  • 同じ方向=同じ趣味 → 内積大 → 類似度高い
  • 直角=全く違う趣味 → 内積 0 → 無関係
  • 逆方向=対立する趣味 → 内積負 → 不一致

これがコサイン類似度の本質。 推薦システムの基本原理です。

inner product を直感的に理解するには、 「具体的な日常の場面に当てはめる」のが効果的。 抽象的な定義から入るより、 「これは何の役に立つのか」「どんな場面で使うか」「他の手段とどう違うのか」の 3 点を先に押さえることで、 数式や手続きの理解が定着しやすい。

本ページでは inner product を「データから意思決定までの一連のプロセス」に位置付け、 (1) 入力、 (2) 処理、 (3) 出力、 (4) 解釈 の 4 段階で順に解説する。 この枠組みで他の手法と比較すれば、 inner product の独自性と共通性が見えてくる。

具体例として、 SSDSE-B-2026 のデータを使い、 inner product を実際に動かすイメージを次節以降で示す。 数式 → 値代入 → 手計算 → Python 実装 の流れで、 抽象と具体を行き来しながら理解を深める。

📐 定義/数式

🍰 まずはやさしく

内積はドット積とも呼ばれる計算です。

向きや長さの関係を数値にするために使います。

部活の得点データなどの分析に役立ちます。

計算式と図形的な意味について解説します。

内積Inner Product / Dot Product):ベクトル積の基本。 類似度・射影に使用

同義・関連語:ドット積

【内積の定義】
$$ \mathbf{a} \cdot \mathbf{b} = \sum_{i=1}^{n} a_i b_i = \|\mathbf{a}\| \|\mathbf{b}\| \cos\theta $$
代数定義(左)と幾何定義(右)が一致する点が美しい。 $\theta$ は 2ベクトルのなす角。

🔬 記号・用語の読み解き(数式を言葉で読み解く)

内積の定義式 $\mathbf{a} \cdot \mathbf{b} = \sum_{i=1}^{n} a_i b_i$ は、 「2 つのベクトルの対応する成分どうしを掛け合わせて足す」というシンプルな計算ですが、 同時に $\mathbf{a} \cdot \mathbf{b} = \|\mathbf{a}\| \|\mathbf{b}\| \cos\theta$ という幾何的表現と一致するのが内積の核心です。 代数的には「ただの成分計算」に見えますが、 幾何的には「ベクトルの『揃い具合』を測る」操作。 ベクトル $\mathbf{b}$ をベクトル $\mathbf{a}$ の方向に正射影した長さに、 $\|\mathbf{a}\|$ を掛けた値が内積になります。 これは「類似度の最も自然な定義」と言える性質で、 機械学習・統計・物理・工学の至るところで顔を出します。たとえば線形回帰の予測式 $\hat{y} = \mathbf{w} \cdot \mathbf{x}$ は「重みベクトル $\mathbf{w}$ と特徴量ベクトル $\mathbf{x}$ の内積」で、 ニューラルネットワークの 1 ニューロンの出力 $z = \mathbf{w} \cdot \mathbf{x} + b$ も同じ。 推薦システムにおける協調フィルタリングの行列分解(Matrix Factorization)では、 ユーザーベクトル $\mathbf{u}$ とアイテムベクトル $\mathbf{v}$ の内積 $\mathbf{u} \cdot \mathbf{v}$ で評価予測を行います。 また、 直交性(直角)の判定が「内積 = 0」という 1 行の条件で表せるのも重要。 PCA(主成分分析)が「データを直交基底に展開する」ためには、 内積の零条件が本質的役割を果たします。 つまり内積は 線形代数の万能演算。 「ベクトルの類似度」「射影の長さ」「直交性の判定」「カーネル法」「重み付き和」とあらゆる場面で同じ操作が現れる、 と認識すると見通しが立ちます。

記号・用語意味と読み方
$\mathbf{a}\cdot\mathbf{b}$内積(dot product)。 結果はスカラー値。 ベクトルの揃い具合
$\langle \mathbf{a}, \mathbf{b} \rangle$内積の別表記。 関数空間や複素ベクトルでよく使われる
$\|\mathbf{a}\|$ / $\|\mathbf{a}\|_2$L2 ノルム。 $\sqrt{\mathbf{a} \cdot \mathbf{a}}$。 ベクトルの長さ
$\theta$ベクトル間のなす角度(0〜π)
$\cos\theta$コサイン類似度。 $\mathbf{a}\cdot\mathbf{b} / (\|\mathbf{a}\|\|\mathbf{b}\|)$、 範囲 [-1, 1]
直交$\mathbf{a}\cdot\mathbf{b}=0$ ⇔ 90°。 線形独立より強い条件
射影$\text{proj}_{\mathbf{a}}\mathbf{b} = \frac{\mathbf{a}\cdot\mathbf{b}}{\|\mathbf{a}\|^2}\mathbf{a}$。 $\mathbf{b}$ の $\mathbf{a}$ 方向成分
$\mathbf{a}^\top \mathbf{b}$行列表記の内積。 $1 \times n$ 行ベクトルと $n \times 1$ 列ベクトルの積
$\mathbf{a}\mathbf{b}^\top$外積(行列)。 $n \times n$ 行列。 内積と混同しがち
Frobenius 内積$\langle A, B \rangle_F = \text{tr}(A^\top B) = \sum_{i,j} A_{ij}B_{ij}$。 行列版内積
Cauchy-Schwarz 不等式$|\mathbf{a}\cdot\mathbf{b}| \le \|\mathbf{a}\|\|\mathbf{b}\|$。 内積の上限保証

🔬 詳細な解説(深掘り)

概念の本質

内積(Inner Product / Dot Product)は、 単に用語の定義を覚えるだけでは本当には理解できません。 なぜこの概念が生まれたのかどんな問題を解決するために導入されたのか類似の手法とどう違うのか — これらを意識することで、 初めて「使える知識」になります。

数式や Python コードはあくまで 道具。 道具の使い方を覚える前に、 その道具で何をしたいか(目的) を明確にすることが、 データサイエンス学習の鉄則です。

他の概念との関係

この用語は、 単独で存在するわけではなく、 多くの関連概念とネットワークを形成しています。 上の「関連用語」セクションに挙げたリンク先を1つずつ辿ると、 全体像が見えてきます。 特に:

実務で気をつけるポイント

理論を学ぶことと、 実務で使えることは別物です。 公的統計(SSDSE、 e-Stat 等)の実データで実装・実験することで、 教科書だけでは見えない罠 に気付けます。 たとえば:

これらは 内積 に限った話ではなく、 データサイエンス全般に共通する作法です。 「落とし穴」セクションの内容と合わせて、 自分なりのチェックリストを作るとよいでしょう。

📊 評価・検証の視点

内積 を使った分析の 正しさを担保する ためには、 以下の観点で検証するのが定番です。

確認する点内積 で何を見るか
スケールの影響ベクトル長が違えば内積も巨大に。 類似度比較ではコサインへ。
負の値の解釈コサイン負=逆方向、 内積負=反対の意味(推薦システムでは「嫌い」)。
高次元の呪い次元が増えるとほぼ全ペアの cos が 0 付近(直交)に近づく。
零ベクトルノルム0で割り算エラー。 事前チェック。
再現性同じデータ・同じコードで同じ結果が出るか。このページの ▶ 実行ボタンで確かめられます

💼 業界別の使われ方

内積 は分野横断で活躍する概念です。 業界別に見ると以下のような使われ方があります。

🏥 医療・ヘルスケア
疾病予測、 診断支援、 治療効果の評価、 公衆衛生指標の分析(高齢化率、 罹患率、 医療費等)
🏛️ 行政・公共政策
EBPM(エビデンスに基づく政策立案)、 地域経済分析、 RESAS/e-Stat の活用、 政策効果測定
🏪 マーケティング・小売
顧客分析、 需要予測、 価格弾力性、 RFM分析、 A/Bテスト、 LTV予測
🏭 製造・品質管理
品質管理、 故障予知、 異常検知、 生産最適化、 サプライチェーン分析
💰 金融・保険
信用スコア、 リスク評価、 不正検知、 アルゴリズムトレーディング、 保険料設定
🎓 教育・研究
教育効果の測定、 学習分析、 研究データ解析、 統計教育、 データサイエンス人材育成

📈 公的統計データ(SSDSE)での具体例

内積 を実際のデータで学ぶときは、 SSDSE(教育用標準データセット、 総務省統計局)が便利です。

これらは 統計センターの SSDSE ページ から CSV で直接ダウンロードできます。 上の Python コード例で data/raw/SSDSE-B-2026.csv としているのが、 まさにこれです。

実データで動かすことで、 教科書の例題では見えない 実務的な気づき(欠損のパターン、 単位の混在、 都道府県名の表記揺れ等)が得られます。

🔧 よくあるトラブルと対処

🐍 Python コードが動かない
→ Python 3.10+ と必要ライブラリ(pandas、 numpy、 scikit-learn 等)がインストール済みか確認。 pip install pandas numpy scikit-learn matplotlib で揃います。
📁 CSVファイルが読み込めない
→ ファイルパスを確認。 文字コードが utf-8 ではなく shift_jiscp932 の場合がある(古い日本の公的統計に多い)。 encoding='cp932' を試してください。
📐 数式が表示されない
→ ページが KaTeX を読み込んでいるはずです。 ブラウザのキャッシュをクリアするか、 開発者ツールで JavaScript エラーを確認。
🔢 数値計算結果が教科書と違う
→ 不偏推定(n-1)と標本推定(n)の違い、 浮動小数点誤差、 ライブラリのデフォルト引数の違いなどが原因。 ドキュメントを確認。
📊 グラフが描画されない
→ Jupyter Notebook なら %matplotlib inline、 スクリプト実行なら plt.show() を忘れずに。 日本語フォントは matplotlib 用に別途設定(japanize-matplotlib 等)が必要。

🧮 実値で計算してみる

例:$\mathbf{a}=(1,2,3)$、 $\mathbf{b}=(4,5,6)$ → $\mathbf{a}\cdot\mathbf{b} = 1\cdot4 + 2\cdot5 + 3\cdot6 = 4+10+18 = 32$。
$\|\mathbf{a}\| = \sqrt{14}, \|\mathbf{b}\| = \sqrt{77}$ → コサイン類似度 = $32/\sqrt{14\cdot77} \approx 0.975$。

🧮 数式に値を入れて手で計算する: 内積

合成 3 次元ベクトル a, b の内積とコサインを計算する。

Step 1: ベクトル

a = [1, 2, 3] b = [4, 5, 6]

Step 2: 内積

a·b = 1·4 + 2·5 + 3·6 = 4+10+18 = 32

Step 3: ノルムとコサイン

|a| = √14 ≈ 3.742 |b| = √77 ≈ 8.775 cos θ = 32/(3.742·8.775) ≈ 0.975

🐍 Python で再現

1
2
3
4
5
6
7
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
dot = a @ b
cos = dot / (np.linalg.norm(a) * np.linalg.norm(b))
print(f"内積: {dot}")
print(f"cos θ: {cos:.3f}")

📤 実行結果

内積: 32 cos θ: 0.975

💬 手計算 (Step 2,3) と Python 出力が完全一致。

🐍 Python での実装例

SSDSE-B-2026 などの実データを使った最小コード(7行):

1
2
3
4
5
6
7
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print('内積:', np.dot(a, b))           # 32
print('ノルムa,b:', np.linalg.norm(a).round(3), np.linalg.norm(b).round(3))
cos = np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
print('コサイン類似度:', cos.round(3))
📤 実行例(実測) 内積: 32 ノルムa,b: 3.742 8.775 コサイン類似度: 0.975

data/raw/SSDSE-B-2026.csve-Stat SSDSE から取得した実データを想定。

🎮 触って理解する

内積の幾何的な正体は「$\mathbf{b}$ を $\mathbf{a}$ の方向へ正射影した符号付き長さ × $\|\mathbf{a}\|$」。 つまり $\mathbf{a}\cdot\mathbf{b} = \|\mathbf{a}\|\,(\|\mathbf{b}\|\cos\theta)$ は「長さ × 射影」という 符号付き長方形の面積 として絵に描ける。 下の 2 つのデモを指やマウスで直接動かして、 (1) 射影×長さの面積、 (2) 内積が統計に現れる場面(共分散・相関)を体感しよう。

① 内積 = 射影 × 長さ(符号付き面積)

矢印の先端をドラッグ(タッチ対応)。 青い長方形の面積が $|\mathbf{a}\cdot\mathbf{b}|$、 色が符号。 $\theta$ が 90° を跨ぐ瞬間に符号が反転し、 $|\mathbf{a}|$ や $|\mathbf{b}|$ を伸縮しても向きが同じなら符号は変わらないことを確かめよう。

a = (3.00, 1.00) |a| = 3.16
b = (1.20, 2.60) |b| = 2.86
なす角 θ = ° cos θ =
b の a 方向への射影 = |b|cos θ =
a·b = |a| × 射影 =
(成分計算 a₁b₁+a₂b₂ = と必ず一致)
θ < 90° → 内積は正

👀 観察ポイント: ① b を回して θ=90° ちょうどにすると面積が消える(直交=内積 0)。 ② そのまま b を少し倒すと色が青→赤に反転(射影の符号反転)。 ③ 「|b| を 1.5 倍」を何度押しても符号は変わらず大きさだけ変わる — 内積の値はスケールに依存し、 符号と cos θ は向きだけで決まる。 これが「類似度比較ではコサインに正規化する」理由。

② 内積が統計に現れる瞬間 — 中心化ベクトルの内積 = 共分散 × n

5 個のデータ点 $(x_i, y_i)$ をドラッグすると、 平均 $(\bar{x}, \bar{y})$ からの偏差の積 $\sum_i (x_i-\bar{x})(y_i-\bar{y})$ — つまり 中心化ベクトル $\mathbf{x}_c$ と $\mathbf{y}_c$(5 次元)の内積 — がリアルタイムに変わる。 各点と平均を結ぶ長方形(青=正の寄与、 赤=負の寄与)の符号付き面積の合計がこの内積。 $n$ で割れば共分散、 両ノルムで割れば相関係数 $r$(= 中心化ベクトルどうしの cos θ)になる。

平均: x̄ = , ȳ =
中心化ベクトルの内積
x_c·y_c = Σ(xᵢ−x̄)(yᵢ−ȳ) =
共分散 = x_c·y_c ÷ n =
相関 r = cos θ(x_c, y_c) =
※ ここでは母共分散(÷n、n=5)。 pandas の cov() は不偏(÷(n−1))なので値が 5/4 倍違う点に注意。 r はどちらでも同じ。

👀 観察ポイント: 点を右上・左下(平均に対して同じ側)へ動かすと青い面積が増えて r が +1 に近づき、 右下・左上に散らすと赤が増えて r が −1 へ。 相関係数とは「データを 47 次元(都道府県数)や 5 次元のベクトルとみなしたときの、 中心化後のコサイン類似度」そのもの。 「関連手法」節の 総人口×出生数 r≈0.995(SSDSE-B-2026、 2023 年度実測)も、 47 次元の中心化ベクトルがほぼ同じ向きを向いている、 という幾何の話になる。

💡 直感の言語化 — 内積は「どれだけ同じ向きか × どれだけ大きいか」

デモ①で見た通り、 内積は「向きの一致度(cos θ)」と「2 本の長さ」の積に分解できる。 だから内積が大きい理由は 2 通りある — 向きがよく揃っているか、 単にベクトルが長いか。 この 2 つを分離したいときに、 長さで割って向きだけ取り出したものがコサイン類似度、 さらに「平均を引いてから」向きを比べたものが相関係数。 デモ②はまさにその関係 $r = \dfrac{\mathbf{x}_c \cdot \mathbf{y}_c}{\|\mathbf{x}_c\|\,\|\mathbf{y}_c\|}$ を動かして見せている。

⚠️ 触って分かる落とし穴(深掘り)

🚀 発展 — 内積が主役になる 3 つの場面

ベクトル・射影そのものの操作練習は ベクトル演算 のインタラクティブ、 長さの定義は ノルム、 直交基底への展開は 主成分分析 を参照。

⚠️ よくある落とし穴

❌ スケールの影響
内積はベクトルの長さに比例するので、 出現回数の多い文書や人口の大きい都道府県ほど値が大きくなる。 「似ている度合い」を比べたいのに「量の大きさ」を測ってしまう典型的な取り違え。 比較が目的ならノルムで割ったコサイン類似度を使う。
❌ 負の値の解釈
内積が負なら 2 つのベクトルは 90 度より開いており、 「無関係」ではなく「逆向き」を意味する。 推薦システムの埋め込みなら「関心が薄い」ではなく「反対の嗜好」と読むべき場面がある。 0 付近(直交=無関係)と負(逆向き)を混同しないこと。
❌ 高次元の呪い
次元が上がると、 独立に生成した 2 本のベクトルのコサインはほぼ 0 に集中する。 数百次元の埋め込みでは「cos=0.1 でも十分似ている」ことがあり、 低次元の感覚で閾値を決めると全部「似ていない」になる。 閾値は必ずそのデータの分布を見て決める。
❌ 零ベクトル
全要素が 0 のベクトルはノルムが 0 なので、 コサイン類似度の分母が 0 になり NaN や ZeroDivisionError を招く。 TF-IDF で語がすべて未知語だった文書、 全項目が欠損の行などで実際に起きる。 計算前にノルム 0 の行を除くか、 分母に微小値を足す。

🗺 概念マップ

関連概念を視覚的に整理した概念マップ。

inner product ベクトル空間 コサイン類似度 射影 / 直交性 行列積 (X^T X) np.dot / @ 演算子 Σ aᵢ bᵢ

内積 a·b = Σ aᵢ bᵢ は、 2 つのベクトルの「類似性」と「投影量」を 1 つの数値に集約する基本演算。 上図中心の「内積」から、 ベクトル空間理論 ・ 公的統計 (SSDSE データ) の活用 ・ 実務応用 (コサイン類似度 / 線形回帰の係数) ・ 拡張概念 (外積・テンソル積) の軸が放射する。 機械学習のほぼすべての線形演算は内積で書ける。

🔗 隣接手法への橋渡し

内積は単独の計算ではなく、 線形代数のあらゆる演算 (行列積・直交性判定・射影・類似度) の構成要素として現れる。

内積が 0 → 直交 (相関無し)、 内積が正で大 → 同方向 (強い類似)、 内積が負 → 反対方向 (負の相関)。 このシンプルな解釈が機械学習・統計の基礎を支える。

🌳 手法選択フロー

内積を使う場面と、 関連演算の選び分けを 3 段階で判定する。

  1. 2 ベクトルの類似度を測りたいか? Yes → 長さで正規化したコサイン類似度 = a·b / (|a||b|) を使う、 No (絶対量を残したい) → 純粋な内積
  2. 多変数の線形結合を計算したいか? Yes → 行列ベクトル積 Xβ (= 各行 xᵢ と係数 β の内積) を X @ beta で計算、 効率化なら numpy.dot / scipy.sparse の疎行列演算
  3. 直交性を確認したいか? a·b = 0 を厳密判定するときは浮動小数誤差を考慮 (絶対値 < 1e-10 で 0 とみなす)、 統計検定なら相関係数 r = 0 の検定 (t = r√(n-2)/√(1-r²)) を使う

内積は計算コスト O(n) と軽量だが、 高次元 (n > 10000) では SIMD / BLAS 呼び出しで桁違いに高速化される。 numpy / pytorch / tensorflow はすべて内部で BLAS を呼ぶ。

🔎 深掘り追補:直感・落とし穴・発展を SSDSE 実データで

ここまでの各節を、 SSDSE-B-2026(cp932・2 行目のコード行をスキップ・2023 年度・47 都道府県)の実測値で裏取りしながら、 「直感 → 落とし穴 → 発展」の順に凝縮する。 使う県ベクトルは 4 指標 [総人口 A1101, 15歳未満人口 A1301, 65歳以上人口 A1303, 出生数 A4101] とする。 実際の値(2023 年度実測)は次の通り。

総人口 15歳未満 65歳以上 出生数 東京都 14086000 1513000 3205000 86348 神奈川県 9229000 1031000 2390000 53991 鳥取県 537000 65000 179000 3263 島根県 650000 77000 227000 3759

🎨 直感:成分の積和 = |a||b|cosθ = 射影 × 長さ

内積 $\mathbf{a}\cdot\mathbf{b}=\sum_i a_i b_i$ は「対応成分を掛けて足すだけ」。 その値が同時に $\|\mathbf{a}\|\|\mathbf{b}\|\cos\theta$ に等しいので、 2 本のベクトルがどれだけ同じ方向を向いているか(=揃い具合)に長さを掛けたものと読める。 $\mathbf{b}$ を $\mathbf{a}$ 方向へ正射影した符号付き長さ $\|\mathbf{b}\|\cos\theta$ に $\|\mathbf{a}\|$ を掛けた面積、 と言い換えてもよい。 だから内積が測るのは「射影の長さ/類似度/なす角」であり、 直交(90°)なら内積は 0、 鋭角なら正、 鈍角なら負になる。 上の 4 県ベクトルなら、 鳥取県と島根県は「小規模・同構成」で同じ向き、 東京都はまるで長さの違う別方向のベクトル、 という幾何が数値に現れる(下記)。

⚠️ 落とし穴①:標準化前の内積は「一番大きい列」に支配される(実測)

生の内積は単位・桁の大きい成分がほぼ全部を決める。 東京都×神奈川県の生の内積 $1.392\times10^{14}$ を成分ごとに分解すると:

成分積 $a_i b_i$寄与率
総人口$1.300\times10^{14}$93.37%
65歳以上人口$7.660\times10^{12}$5.50%
15歳未満人口$1.560\times10^{12}$1.12%
出生数$4.662\times10^{9}$0.00%

総人口だけで 93% を占め、 出生数は桁が小さすぎて実質ゼロ寄与。 生の内積は「出生数の似方」をまったく見ていない。 さらに危険なのは大小関係の逆転で、 生の内積は 東京都×鳥取県 $=8.24\times10^{12}$ が 鳥取県×島根県 $=3.95\times10^{11}$ の 20 倍もある。 これを見て「東京と鳥取は、 鳥取と島根より似ている」と読むのは完全な誤り — 単に東京の長さ(規模)が大きいだけ。 列ごとに標準化(zスコア化)してから内積・コサインを取ると幾何が正しく出る。

県ペア生の内積標準化後の内積標準化後 cosθ読み
東京都 × 神奈川県$1.39\times10^{14}$36.950.997同方向(大都市)
東京都 × 鳥取県$8.24\times10^{12}$−12.22−0.992逆方向(規模が真逆)
鳥取県 × 島根県$3.95\times10^{11}$2.291.000ほぼ完全一致

標準化後は直感通り:東京都と神奈川県はほぼ同方向(0.997)、 鳥取県と島根県は事実上同一方向(1.000)、 東京都と鳥取県は正反対(−0.992)。 生の内積の「20 倍」は完全な錯覚だった。 これが「類似度を測るなら標準化 → コサイン化が前提」の実データ証拠。 標準化は各列を平均 0・標準偏差 1 に揃える(標準化)操作で、 これをせずに内積・距離を取ると単位の大きい列(円 vs 千円など)だけで結論が決まってしまう。

⚠️ 落とし穴②:混同しやすい 4 つ

🚀 発展:内積を「包む」と統計の主要量が全部出る

※ 本節の数値はすべて SSDSE-B-2026(2023 年度・47 都道府県)の実測から算出。 合成例(架空のベクトル)は用いていない。 再現するには pd.read_csv(..., encoding='cp932', skiprows=[1]) で読み、 年度列 SSDSE-B-2026==2023 で絞り、 上記 4 列を列ごとに z 標準化してから内積・コサインを取ればよい。