🔖 キーワード索引
#多様体学習 #次元削減 #manifold #可視化 #Roweis-Saul #PCA代替 #manifold #非線形次元削減 #Roweis #Saul #scikit-learn #k近傍 #固有値分解 #局所線形
「LLE (Locally Linear Embedding)」は各点を近傍点の線形結合で復元 し、 その重みを保存したまま低次元埋め込みを構成する非線形次元削減 (Roweis & Saul, 2000)。 本ページの中核キーワードを以下に整理する。
LLE Roweis-Saul (2000) k 近傍 (n_neighbors) 局所線形重み W 復元誤差 Σ‖x-Σw·x_j‖² スパース固有値問題 スイスロール展開 Isomap / t-SNE / UMAP との対比 多様体仮説 SSDSE-B-2026 47 都道府県
これらのキーワードは「lle の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。
💡 30秒で分かる結論
🍰 まずはやさしく
曲がったデータを平らに伸ばす道具です。
データの形を保ったまま次元を減らします。
スマホの地図を広げるイメージに似ています。
仕組みと弱点について解説します。
LLE :局所線形性を保つ非線形次元削減
局所近傍の線形関係を保ったまま低次元化 する多様体学習。
PCA (線形) では捉えられない曲面構造を保持。
アルゴリズム:(1) 各点の k 近傍特定 → (2) 線形再構成重み計算 → (3) 重みを保つ低次元埋め込み。
弱点:外れ値に弱い・新規データ対応困難。 現代は UMAP・t-SNE が主流。
∑ 数学的導出: LLE の数式の出どころ
本ページの「📐 定義・数式」セクションでは結果だけを示しましたが、 ここではより詳細に導出を追います。 数式の出どころ が分かると、 公式を暗記するのではなく、 必要に応じて再導出できるようになります。
LLE の数学を再構成最適化問題から固有値問題への帰着まで丁寧に追います。 各点 $\mathbf{x}_i$ の k 近傍 $\mathcal{N}(i)$ に対する再構成重み $\mathbf{w}_i = (w_{i,j_1}, \dots, w_{i,j_k})^\top$ を求める問題: $\min \| \mathbf{x}_i - \sum_{j \in \mathcal{N}(i)} w_{ij} \mathbf{x}_j \|^2$ s.t. $\sum_j w_{ij} = 1$。 これを $\mathbf{x}_i = \sum_j w_{ij} \mathbf{x}_i$ (制約より) と書き直すと、 $\| \sum_j w_{ij} (\mathbf{x}_i - \mathbf{x}_j) \|^2 = \mathbf{w}_i^\top C_i \mathbf{w}_i$、 ここで $C_i^{(jk)} = (\mathbf{x}_i - \mathbf{x}_j)^\top (\mathbf{x}_i - \mathbf{x}_k)$ は局所共分散行列。 制約付き二次計画の解は Lagrange 乗数法により $\mathbf{w}_i = C_i^{-1} \mathbf{1} / (\mathbf{1}^\top C_i^{-1} \mathbf{1})$。 数値的安定性のため Tikhonov 正則化 $C_i \to C_i + \delta I$ ($\delta = \epsilon \cdot \text{tr}(C_i) / k$ が典型) を適用。 続いて重み $W$ を固定し、 低次元埋め込み $Y \in \mathbb{R}^{N \times d}$ について $\Phi(Y) = \sum_i \| \mathbf{y}_i - \sum_j W_{ij} \mathbf{y}_j \|^2 = \text{tr}(Y^\top (I-W)^\top (I-W) Y)$ を $Y^\top Y / N = I$, $\mathbf{1}^\top Y = 0$ で最小化。 これは行列 $M = (I-W)^\top (I-W)$ の固有値問題に帰着し、 最小の自明固有値 (0、 固有ベクトル $\mathbf{1}/\sqrt{N}$) を除いた次の $d$ 個の固有ベクトルが埋め込み行列 $Y$ の列を構成します。 計算量は $O(D N k^3)$ (重み計算) + $O(d N^2)$ (固有値分解、 ARPACK 等のスパース法を使えば $O(d N k)$ まで削減可能)。
📍 文脈ボックス
🍰 まずはやさしく
データの次元を減らす手法のひとつです。
似たもの同士を近くに集めるために使います。
都道府県のデータを分析して可視化します。
他の手法との違いについて説明します。
この用語は 次元削減 カテゴリに属します。 関連する別称・略号:(なし) 。
論文・実務レポートで LLE が登場したら、 まず本ページの「30秒で分かる結論」と「直感で掴む」を読めば、 その文脈で何を言っているか把握できます。
本ページでは LLE (Locally Linear Embedding、 局所線形埋め込み) を扱う。 多様体学習の代表的手法で、 高次元データの「ご近所同士の重み付き関係」を保ったまま低次元に埋め込む。 SSDSE-B-2026 の都道府県多指標データを 2D に圧縮し、 産業構造の似た県が近くに集まる可視化を行う。
LLE は t-SNE / UMAP / Isomap と並ぶ非線形次元削減で、 局所構造のみを保存する点が特徴。 グローバルな距離関係は失われやすいが、 多様体上の局所的な位置関係は高精度に再現する。 近傍数 k の選び方が結果に大きく影響する。
🎨 直感で掴む
🍰 まずはやさしく
巻いた紙を丁寧に広げるような方法です。
近くの点との関係性を守るために使います。
部活のメンバー同士の距離感に似ています。
計算が進む4つのステップを解説します。
スイスロール (くるくる巻いた紙) のような 3D データを 2D に「展開」したい。 PCA だと巻いたまま潰してしまうが、 LLE は「近くの点同士の関係」を保ちながら開く。 局所線形性 ── 「ご近所はだいたい平面」── という仮定で、 グローバル構造を再構成。
LLE (Locally Linear Embedding) のキモは「全体は曲がっていても、 ご近所だけ見れば平面」という仮定だ。 各点について k 個の近傍を選び、 「それらの重み付き和で元の点を再現する」係数 w_ij を求め、 同じ重みで低次元空間に埋め込み直す。 巻物のような曲面が「ぐにゃっと平らに開く」イメージ。
本ページでは入力 (高次元データ) → 近傍探索 (k-NN) → 局所重みの最適化 → 全体埋め込み (固有値問題) の 4 段階で処理を追う。 この枠組みで t-SNE / UMAP / Isomap と比較すれば、 LLE が「局所構造のみ重視」「グローバル距離は捨てる」という特性が見えてくる。
具体例として SSDSE-B-2026 の都道府県データに LLE を適用し、 産業構造の似た県が 2D 上で近くに集まる埋め込みを得る流れを次節以降で示す。
🎮 触って理解する
LLE の第 1 段階「局所線形再構成の重み $w$ 」を、 合成デモ (2D 渦巻き曲線上の 26 点、 実データではありません)で体感します。 姉妹ページ Isomap (測地線距離)や 多様体学習 (内在次元)が「距離」に注目したのに対し、 ここでは LLE 固有の視点 ──「各点は近傍の重み付き平均で書ける 」── だけに集中します。
① 点を選んで、 近傍の線形結合で再構成してみる
曲線上の点をクリック(タップ)して選択すると、 その k 近傍 がハイライトされ、 制約 $\sum_j w_{ij}=1$ 付きの最小二乗で求めた重み $w$ による再構成点 (赤の ×)が表示されます。 選択点と × のズレが「局所線形近似の誤差」。 k を動かすと、 局所的には曲線もほぼ直線なので誤差が小さい こと、 k を広げすぎると曲率を拾って挙動が変わることが分かります。 正則化 $\delta$($C_i + \delta\,\mathrm{tr}(C_i)/k \cdot I$)を極端に小さくすると、 k > 元次元 (=2) で劣決定になり重みが増大していく傾向も観察できます(この 2D 渦巻きデモでは制約 $\sum_j w_{ij}=1$ の正規化が効くため max|w| は 3 程度までで、 極端な発散までは起きません)。
近傍数 k:
4
正則化 δ:
1e-8 (ほぼ無し)
1e-5
1e-3 (標準)
1e-1 (強)
点をクリック / タップで選択
② 重みバー ── どの近傍がどれだけ寄与するか
中央の縦線が 0。 右(緑)が正の重み、 左(橙)が負の重み です。 制約は $\sum w = 1$ だけなので、 個々の重みは負にもなり得ます (「隣 A に行き過ぎた分を隣 B 側へ引き戻す」外挿的な役割)。 選択点が近傍の凸包の外にあるとき、 特に曲線の端点で負の重みが出やすいことを確かめてください。
③ 展開結果 ── 重みを保存して 1 次元へ(固有値問題は事前計算)
第 2 段階($M=(I-W)^\top(I-W)$ の固有値問題)はブラウザでは重いので、 上と同一の 26 点・k=4・δ=1e-3 について node.js で事前計算した結果 を転記して表示します。 最小固有値は 0(自明解)、 2 番目に小さい固有ベクトルが下の 1D 座標です。 色は上の曲線と対応:渦巻きの並び順が 1 直線上で完全に保存 (順序の逆転 0 件)されており、 「距離ではなく近傍の重みを保っただけで、 曲がった多様体がほどける」ことが確認できます。
④ Isomap との違い ── 「距離の保存」ではなく「重みの保存」
Isomap: 測地線「距離」を保存
直線距離は使わない
曲線に沿った距離 d を測り、低次元でも d を再現
大域的な「遠い・近い」を数値で保つ
LLE: 近傍の「重み w」を保存
w₁
w₂
w₃
低次元でも同じ w₁, w₂, w₃ で再構成できる配置を探す
距離の数値は保存しない (縮尺・回転は自由)
Isomap は「点 i と点 j はグラフ上で距離いくつ」という大域的な距離行列 を作ってから MDS で埋め込みますが、 LLE は距離の数値を一切保存せず、 「点 i は近傍たちの この混合比 で書ける」という局所的な関係(重み) だけを低次元へ持ち込みます。 重みは回転・並進・スケールに不変なので、 埋め込みは形を保ったまま自由に置ける ── その分、 大域的な縮尺の情報は失われます(t-SNE が確率的類似度、 UMAP がファジー近傍グラフを保存するのとも対照的)。
🔍 デモから読み取る落とし穴と発展
k の選択 : 上のデモで k=2 だと再構成は「2 点を通る直線への射影」になり誤差が出やすく、 k=8 だと曲線の反対側まで近傍に入り局所性が崩れ始めます。 「局所線形」が成り立つ範囲に k を収めるのが原則で、 これは 多様体学習 全般に共通する近傍サイズ問題です。 正則化 δ : 元次元 D=2 に対し k>2 では局所グラム行列 $C_i$ がランク落ちし、 δ を 1e-8 まで下げると重みが増大する方向に働きます(ただし上のデモの 2D 渦巻きでは制約 $\sum_j w_{ij}=1$ による正規化が発散を打ち消すため、 max|w| はおおむね 3 程度までにとどまり、ウィジェットの不安定警告(>5)は発火しません)。 一方、 高次元・高相関でグラム行列がより強く縮退する実データでは、 同じ操作で重みがはるかに大きく暴れて第 2 段階の固有値問題も不安定化しうるため、 scikit-learn の reg(既定 1e-3)を不用意に下げないこと。 密度の不均一 : k-NN は「個数」で近傍を切るため、 点が密な領域では物理的に狭い範囲、 疎な領域では広い範囲を「局所」と見なしてしまい、 密度差の激しいデータでは展開が歪みます(事前の標準化 や部分サンプリングで緩和)。 穴あき・非凸な多様体 : ドーナツ状に穴の空いたデータでは、 穴の縁で近傍が「対岸」を拾って重みグラフが短絡し、 埋め込みが折り畳まれることがあります。 発展 : これらの弱点に対し、 局所ヘシアンで等長性を強める Hessian LLE 、 重み計算を複数ベクトルで安定化する Modified LLE (いずれも scikit-learn の method='hessian' / 'modified')、 局所接空間を張り合わせる LTSA が提案されています。 線形で足りるかまず PCA (や Kernel PCA )で確認してから LLE 系へ進むのが実務の定石です。
🔬 数式を言葉で読み解く
数式に出てくる記号の意味を 1 つずつ確認しましょう。
$N(i)$
$i$ 番目データの k 近傍集合。
$w_{ij}$
近傍点 $j$ で $i$ を再構成する線形重み。
$\mathbf{y}_i$
低次元埋め込み座標。
$k$
近傍数 (ハイパーパラメータ)。
🧮 実値で計算してみる
scikit-learn の LocallyLinearEmbedding を都道府県データで使う例。
STEP 1
高次元特徴量準備
47 都道府県の複数列を取得。
STEP 2
標準化
各列を平均 0 分散 1 に。
STEP 3
LLE 適用
n_neighbors=8, n_components=2 で 2D へ。
🧮 数式に値を入れて手で計算する: 局所線形再構成重み
合成 1D データで点 x を近傍 2 点の凸結合で表現する重みを計算する。
Step 1: データ
x = 3 を近傍 x_1=1, x_2=5 で再構成
重み w_1, w_2, w_1 + w_2 = 1
Step 2: 解
3 = w_1·1 + w_2·5
w_1 + w_2 = 1
連立解: w_1 = 0.5, w_2 = 0.5
再構成: 0.5·1 + 0.5·5 = 3 ✓
🐍 Python で再現
📋 コピー import numpy as np
A = np . array ([[ 1 , 5 ], [ 1 , 1 ]])
b = np . array ([ 3 , 1 ])
w = np . linalg . solve ( A , b )
print ( f "重み: { w } " )
print ( f "再構成: { w [ 0 ] * 1 + w [ 1 ] * 5 } " )
📤 実行結果
重み: [0.5 0.5]
再構成: 3.0
💬 手計算 (Step 2) [0.5, 0.5] と Python 出力が完全一致。
🐍 Python 実装
最小実装の例。 SSDSE のような実データに対して、 まずはコピペで動かしてみるのが理解の早道です。
📥 入力例(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 列は住宅・家計・教育・医療など)
📋 コピー from sklearn.manifold import LocallyLinearEmbedding
from sklearn.preprocessing import StandardScaler
import pandas as pd
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , skiprows = [ 1 ] , encoding = 'cp932' )
X = StandardScaler () . fit_transform ( df . select_dtypes ( 'number' ))
Y = LocallyLinearEmbedding ( n_neighbors = 8 , n_components = 2 ) . fit_transform ( X )
print ( Y [: 5 ])
📤 実行例(実測)
[[ 9.53970570e-16 -3.22297695e-16]
[ 9.53457150e-16 -3.15484918e-16]
[ 9.60966740e-16 -3.33849170e-16]
[ 9.60301187e-16 -3.27874461e-16]
[ 9.62206877e-16 -3.17435874e-16]]
🐍 詳細実装例 (SSDSE-B-2026 適用版)
本ページ冒頭の Python 実装はミニマル版でした。 ここでは LLE を SSDSE-B-2026 の実データに適用する完全な実装例を掲載します。 コピペすればそのまま動く形になっています。 ファイルパスは data/raw/SSDSE-B-2026.csv を想定。
📥 入力例(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 列は住宅・家計・教育・医療など)
📋 コピー 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 import os
os . makedirs ( 'output' , exist_ok = True ) # 保存先のフォルダを作っておく
# === scikit-learn で LLE を SSDSE-B-2026 に適用 ===
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.manifold import LocallyLinearEmbedding
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
# データ読み込み
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , skiprows = [ 1 ], encoding = 'cp932' )
prefs = df [ 'Prefecture' ] . values
X = df . select_dtypes ( include = 'number' ) . dropna ( axis = 1 ) . values
# 標準化
X_scaled = StandardScaler () . fit_transform ( X )
# LLE (k=8, 2 次元)
lle = LocallyLinearEmbedding ( n_neighbors = 8 , n_components = 2 , reg = 1e-3 , random_state = 42 )
Y_lle = lle . fit_transform ( X_scaled )
print ( f 'LLE reconstruction error: { lle . reconstruction_error_ : .6f } ' )
# PCA と比較
Y_pca = PCA ( n_components = 2 ) . fit_transform ( X_scaled )
# 並べて可視化
fig , axes = plt . subplots ( 1 , 2 , figsize = ( 14 , 6 ))
axes [ 0 ] . scatter ( Y_lle [:, 0 ], Y_lle [:, 1 ], c = 'C0' , s = 80 )
for i , p in enumerate ( prefs ):
axes [ 0 ] . annotate ( p , ( Y_lle [ i , 0 ], Y_lle [ i , 1 ]), fontsize = 8 )
axes [ 0 ] . set_title ( 'LLE (k=8)' )
axes [ 1 ] . scatter ( Y_pca [:, 0 ], Y_pca [:, 1 ], c = 'C1' , s = 80 )
for i , p in enumerate ( prefs ):
axes [ 1 ] . annotate ( p , ( Y_pca [ i , 0 ], Y_pca [ i , 1 ]), fontsize = 8 )
axes [ 1 ] . set_title ( 'PCA' )
plt . tight_layout ()
plt . savefig ( 'output/lle_vs_pca_ssdse.png' , dpi = 150 )
# 近傍数 k の感度解析
ks = [ 3 , 5 , 8 , 12 , 16 , 20 ]
fig , axes = plt . subplots ( 2 , 3 , figsize = ( 15 , 10 ))
for ax , k in zip ( axes . flatten (), ks ):
Y_k = LocallyLinearEmbedding ( n_neighbors = k , n_components = 2 , reg = 1e-3 ) . fit_transform ( X_scaled )
ax . scatter ( Y_k [:, 0 ], Y_k [:, 1 ], s = 50 )
ax . set_title ( f 'k = { k } ' )
plt . tight_layout ()
plt . savefig ( 'output/lle_k_sensitivity.png' , dpi = 150 )
📤 実行例(実測)
LLE reconstruction error: -0.000000
⚠️ 実行前に pip install -r requirements.txt で依存パッケージをインストール。 また、 SSDSE-B-2026 の列名は版によって若干異なるので、 df.columns で確認のうえ実コードに合わせて読み替えてください。
⚠️ よくある落とし穴
この用語を使うときに陥りがちな失敗パターン。 経験者ほどここに 1 度はハマっています。
❌ 1. k (近傍数)の選択を間違える
小さすぎる k (例:3)だとグラフが断片化し、 「離島」のような孤立クラスタが大量発生して埋め込みが歪む。 大きすぎる k (例:n の半分)だと曲面の局所性が消え、 ほぼ PCA と同じ結果になり LLE の意味が失われる。 SSDSE-B-2026 (n=47) なら k = 5〜12 が現実的。 trustworthiness 指標や下流タスクの精度で CV するのが定石。
❌ 2. 外れ値・ノイズへの脆弱性
k-NN グラフで決まる局所重みは外れ値の影響を直接受け、 1 点ノイズが入っただけで近傍重みの線形方程式が不安定化、 2D 配置全体が回転・反転することも。 robust 版 (RLLE) や、 前処理での外れ値除外、 modified LLE (MLLE) などで対策。
❌ 3. 新規データへの非外挿 (Out-of-Sample 問題)
LLE は学習データに対する固有値分解で埋め込みを得るので、 「新しい点をその空間に投影する明示的な写像」が存在しない。 新規予測には Nyström 近似や Parametric LLE が必要。 本番運用では PCA+kernel PCA / Autoencoder の方が再現性が高いことも。
❌ 4. グローバル構造の歪み
局所重視の設計のため、 大域的な距離(クラスタ間の遠近)は保証されない 。 SSDSE で「東京と沖縄」が偶然 2D 上で近くに来ても、 元空間で似ているとは限らない。 大域構造も保ちたいなら Isomap (測地距離) や UMAP (大域 + 局所) を併用検討。
❌ 5. 標準化忘れ
k-NN ベースなので距離計算前にスケーリング必須。 単位の異なる「人口(万単位)」「高齢化率(0-1)」を混在させると人口だけで近傍が決まる。 StandardScaler → LLE の順で適用する。
❌ 近傍数 k の感度
k を変えるだけで埋め込み形状が劇的に変わります。複数の k で結果を比較し、安定する範囲を探してください。SSDSE n=47 では k=5〜10 程度が目安。
❌ グローバル構造の欠如
LLE は局所構造のみを保存するため、遠く離れたクラスター間の相対距離は保証されません。PCA や UMAP との比較が有益。
❌ 正則化の必要
近傍点数 k > 元次元のとき、再構成重みの最小二乗が劣決定となり数値的に不安定。`reg=1e-3` 程度の正則化を入れてください。
❌ 外れ値感受性
孤立した外れ値は近傍が遠くなり、埋め込みで歪みを生みます。事前に外れ値検出 (IsolationForest 等) を行うのが安全。
🌐 関連手法・派生
この用語を理解したら、 自然と気になる発展トピック・派生手法を紹介します。
🌐 UMAP
現代の標準。 t-SNE より高速・グローバル構造保持。
🌐 Diffusion Map
拡散過程に基づく多様体学習。
🌐 エコシステム: LLE の周辺ツール群
どんなに優れた手法でも、 周辺ツール・ライブラリ・コミュニティの厚みが実用性を決めます。 ここでは LLE をめぐる現代的エコシステムを俯瞰し、 自分の用途に合うツールを選べるようにします。
次元削減エコシステム全体の中で LLE を位置づけると、 Python では scikit-learn の manifold サブモジュール (LocallyLinearEmbedding, Isomap, SpectralEmbedding, TSNE, MDS) が標準で、 umap-learn (UMAP)・openTSNE (高速 t-SNE)・PHATE ・diffusion-maps といった専用ライブラリも豊富。 R では lle ・vegan ・Rtsne ・umap 。 GPU 加速版は RAPIDS cuML が UMAP・t-SNE を CUDA で高速化、 LLE は通常 CPU で十分。 単細胞ゲノミクス分野では Scanpy (Python)・Seurat (R) が UMAP/PCA をデフォルトで使い、 LLE は教育・比較ベースラインとして登場。 教科書は Lee & Verleysen『Nonlinear Dimensionality Reduction』、 Burges『Dimension Reduction: A Guided Tour』、 van der Maaten ら『Dimensionality Reduction: A Comparative Review』。 SSDSE-B-2026 を題材にした次元削減の比較教材としては、 PCA・LLE・t-SNE・UMAP を同じデータに適用し、 47 都道府県の散布図を 4 枚並べると、 各手法の特性 (大域 vs 局所、 決定論的 vs 確率的) が一目で分かる優れた可視化になります。
🎯 このページのまとめ
📌 1 ページまとめ
LLE (次元削減) は、 局所線形性を保つ非線形次元削減
要点: 局所近傍の線形関係を保ったまま低次元化 する多様体学習。
次のステップ: 本ページの「🔗 関連用語」から派生概念をたどるか、 「📚 さらに学ぶには」の書籍・教材で深く学んでください。 そして何より、 自分の手でデータに当てはめて結果を出す のが一番の理解の近道です。 ジャストインタイム型教材として、 必要なときに何度でも戻ってきてください。
🧭 サイト内ナビゲーション
本ページは、 統計・データ解析コンペティションの再現論文集に付随する用語解説の 1 ページです。 LLE 以外の用語も、 同じフォーマットで以下からたどれます。
本サイトは「ジャストインタイム型データサイエンス教育 」を掲げ、 「学んでから使う」ではなく「使うときに学ぶ」スタイルで設計されています。 ある論文の手法を理解する過程で出会った専門用語を、 その場で本ページに飛んで補完してから論文に戻る ── そのような使い方を想定しています。
📊 R293 補講 — LLE を「47 都道府県」で深掘りする
本セクションは、 LLE(Locally Linear Embedding)の「現場での運用直感」を強化するための補講である。 SSDSE-B-2026 の 47 都道府県・複数指標(総人口・合計特殊出生率・65歳以上人口・消費支出・15 歳未満人口など)を使い、 LLE が「局所的に線形」と仮定しつつ全体としては非線形多様体を平面に押し当てる仕組みを、 図 3 枚と pygblock 2 件で学ぶ。 R293 では特に「k 近傍数の選び方が結果をどう変えるか」「LLE は欠損や外れ値にどう振る舞うか」を体験的に把握できるよう設計した。 ここで使う数値はすべて公的統計に基づき、 合成データは一切使っていない。
🗺 図 1: LLE 2 次元埋め込みの概念図
下の SVG は、 高次元空間でスイスロール状にカールしているデータを LLE で 2 次元に展開した模式図。 局所近傍の線形関係(点を近傍の重み付き和で再構成)を保ったまま、 全体の「曲がった面」を平面に押し広げる動きを示す。
🗺 図 2: 近傍数 k の影響
k=5 / 10 / 20 と変化させると、 埋め込み形状が大きく変わる。 k が小さすぎると断片化し、 大きすぎると全体を平均化して構造を失う。 SSDSE-B-2026 の都道府県データで k を試行し、 47 県の「地域集積パターン」が最もよく見える k を探すのが実務。
🗺 図 3: LLE と PCA の比較
PCA が「全体の分散最大方向」を取るのに対し、 LLE は「局所的近傍関係」を保つ。 SSDSE-B-2026 の県別指標を 2D 化すると、 PCA は人口の大きい順に並ぶが、 LLE は「地方ブロックごとの近接構造」を浮き上がらせる。
🔬 数式を言葉で読み解く
LLE は 2 段階の最適化で表現できる。 第 1 段階は「再構成重み」$W$ の決定: 各点 $x_i$ について、 その k 近傍 $\{x_j\}$ の線形結合で $x_i$ をできるだけ正確に近似する重み $w_{ij}$ を求める。 数式は $\min_W \sum_i \| x_i - \sum_j w_{ij} x_j \|^2$ s.t. $\sum_j w_{ij} = 1$。 言葉で言うと「私(点 i)を、 私の近所(点 j)の混合比でどう書けるか」を最小二乗で求めている。 制約 $\sum_j w_{ij} = 1$ は「重み付き平均」になるためのもので、 これにより回転・並進・スケール不変性が得られる。 第 2 段階は「低次元埋め込み」$Y$ の決定: 同じ重み $w_{ij}$ を保ったまま、 低次元空間 $Y$ で各点 $y_i$ を $\sum_j w_{ij} y_j$ に近づける。 数式は $\min_Y \sum_i \| y_i - \sum_j w_{ij} y_j \|^2$ s.t. $Y^T Y = I$(直交制約)と $\sum_i y_i = 0$(中心化)。 制約 $Y^T Y = I$ は「埋め込みが退化しない」よう次元間の直交性を強制する。 この 2 段階を要約すると「局所的にどう書けるか」を $W$ で固定 → 「その書き方を低次元で再現する $Y$」を解く、 という流れ。 結果として高次元の曲がった多様体を、 局所線形性を保ったまま 2 次元に「展開」できる。 SSDSE-B-2026 の都道府県データで考えると、 $W$ は「県 i を近傍県の重みでどう書くか」、 $Y$ は「地方ブロックを 2D 平面で表現する」と読み替えられる。 PCA との違いは、 PCA が「全データの共分散」を見るのに対し、 LLE は「k 個ずつの近傍関係」を局所的に扱う点にある。 これにより、 線形に展開できない曲がった構造(スイスロール、 球面、 螺旋)にも対応できる。
🐍 R293 追加 Python ブロック (1/2): SSDSE-B-2026 で LLE 埋め込み
このコードでやること : SSDSE-B-2026 の 2023 年・47 都道府県データから総人口(A1101)・合計特殊出生率(A4103)・65歳以上人口(A1303)・消費支出(L3221)の 4 変数を抜き、 sklearn の LocallyLinearEmbedding で 2 次元に埋め込み、 近傍数 k=8 / 14 / 20 の影響を比較する。
📥 入力例 : SSDSE-B-2026 の 2023 年 47 都道府県 4 変数。
Prefecture A1101(総人口/千人) A4103(出生率) A1303(65歳以上/千人) L3221(消費支出/円)
北海道 5092 1.06 1681 296888
東京都 14086 0.99 3205 341320
大阪府 8763 1.19 2424 271246
福岡県 5103 1.26 1452 309000
沖縄県 1468 1.60 350 251222
📋 コピー 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 # LLE で都道府県の 4 変数を 2D に埋め込む
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.manifold import LocallyLinearEmbedding
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , skiprows = [ 1 ] , encoding = 'cp932' )
d23 = df [ df [ 'SSDSE-B-2026' ] == 2023 ] . copy ()
X = d23 [[ 'A1101' , 'A4103' , 'L3221' , 'A1303' ]] . values
Xs = StandardScaler () . fit_transform ( X )
for k in [ 8 , 14 , 20 ]:
lle = LocallyLinearEmbedding ( n_neighbors = k , n_components = 2 , random_state = 0 )
Y = lle . fit_transform ( Xs )
print ( f 'k= { k : 2d } reconstruction_error_ = { lle . reconstruction_error_ : .6f } ' )
print ( f ' Y[0] = { Y [ 0 ] } , Y[12] = { Y [ 12 ] } ' )
📤 実行例 :
k= 8 reconstruction_error_ = 0.000008
Y[0] = [ 0.100 -0.192], Y[12] = [ 0.504 -0.032]
k=14 reconstruction_error_ = 0.000021
Y[0] = [-0.045 0.113], Y[12] = [-0.294 0.473]
k=20 reconstruction_error_ = 0.000046
Y[0] = [-0.175 0.221], Y[12] = [-0.417 0.139]
💬 結果の読み方 : 再構成誤差 reconstruction_error_ は埋め込み側 (第 2 段階) の残差で、 このデータでは k が大きいほどむしろ増える(近傍を広げるほど局所線形近似が緩み、 低次元での当てはめ残差が増えるため)。 重要なのは Y の散らばり方が k=8 と k=20 で大きく違うこと。 都道府県の地域構造を見るには k=10〜15 が経験的に良い。 東京 (Y[12]) と北海道 (Y[0]) は LLE 平面上でも遠く配置され、 「人口規模 + 65 歳以上人口」軸での違いが反映されている。
🐍 R293 追加 Python ブロック (2/2): LLE と PCA の埋め込み比較
このコードでやること : 同じ SSDSE-B-2026 の 4 変数を LLE と PCA の両方で 2 次元化し、 第 1 軸の分散と「最も離れた 2 県」を比較する。
📥 入力例 : 標準化済み 47 県 × 4 変数行列。
Xs.shape = (47, 4)
type = float64
平均 0.0 / 標準偏差 1.0 (StandardScaler後)
📋 コピー 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 # LLE と PCA の比較
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.manifold import LocallyLinearEmbedding
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , skiprows = [ 1 ] , encoding = 'cp932' )
d23 = df [ df [ 'SSDSE-B-2026' ] == 2023 ] . copy ()
X = d23 [[ 'A1101' , 'A4103' , 'L3221' , 'A1303' ]] . values
Xs = StandardScaler () . fit_transform ( X )
labels = d23 [ 'Prefecture' ] . values
Y_lle = LocallyLinearEmbedding ( n_neighbors = 12 , n_components = 2 , random_state = 0 ) . fit_transform ( Xs )
Y_pca = PCA ( n_components = 2 ) . fit_transform ( Xs )
# 第 1 軸の分散
print ( f 'LLE axis1 var = { Y_lle [:, 0 ] . var () : .4f } ' )
print ( f 'PCA axis1 var = { Y_pca [:, 0 ] . var () : .4f } ' )
# 最も離れた 2 県
def farthest ( Y , labels ):
from scipy.spatial.distance import pdist , squareform
D = squareform ( pdist ( Y ))
i , j = np . unravel_index ( np . argmax ( D ), D . shape )
return labels [ i ], labels [ j ], D [ i , j ]
print ( 'LLE 最遠ペア:' , farthest ( Y_lle , labels ))
print ( 'PCA 最遠ペア:' , farthest ( Y_pca , labels ))
📤 実行例 :
LLE axis1 var = 0.0213
PCA axis1 var = 2.6896
LLE 最遠ペア: ('東京都', '愛媛県', 0.835)
PCA 最遠ペア: ('東京都', '沖縄県', 8.578)
💬 結果の読み方 : PCA の第 1 軸分散 2.69 は LLE の 0.02 に比べ 100 倍以上。 これは PCA が「線形に分散が大きい方向」を取り、 結果として東京 vs 沖縄のような「人口規模・消費水準の差」が最大に出るため。 一方 LLE は局所構造保持を優先するので、 東京 vs 愛媛のような局所近傍関係に基づく対比が最遠になる。 同じデータでも視点が変わるのが LLE の魅力。
📋 R293 練習問題(理解度チェック)
本セクションで学んだ LLE を、 SSDSE-B-2026 の都道府県データ・スイスロール例・他次元削減との比較の文脈で再確認する。 自分で式を立て、 紙とペンで答えを出してから、 上の pygblock を実行して答え合わせをしよう。 練習問題は易から難まで 8 題用意した。
練習 1(易) : LLE は何の略か? (答: Locally Linear Embedding)
練習 2(易) : LLE は局所近傍を「線形 / 非線形」のどちらで扱うか? (答: 線形)
練習 3(中) : LLE の第 1 段階の制約 $\sum_j w_{ij} = 1$ は何を保証するか? (答: 並進・スケール不変性)
練習 4(中) : 近傍数 k を増やすと再構成誤差はどうなるか? (答: 小さくなるが過剰平滑化のリスク)
練習 5(中) : SSDSE-B-2026 の 5 変数(総人口・合計特殊出生率・65歳以上人口・消費支出・15 歳未満人口)で LLE を試し、 k=10 と k=20 の結果を可視化せよ。
練習 6(やや難) : LLE と t-SNE / UMAP の違いを一言で表せ。 (答: LLE=線形再構成、 t-SNE=確率的類似度、 UMAP=多様体構造)
練習 7(やや難) : LLE 後に k-means や階層クラスタリングを適用し、 都道府県を 5 グループに分けて地方ブロックと比較せよ。
練習 8(難) : LLE の埋め込み Y を異なる random_state で 10 回実行し、 結果の安定性(最遠ペアの一致率)を測定せよ。
📌 R293 実務 Tips 15 選
LLE は外れ値に弱い。 前処理で外れ値検出(IQR / Z-score)を必ず行う。
標準化(StandardScaler)は必須。 単位が違う変数を混ぜると距離計算が破綻する。
近傍数 k は「n の 5-15%」が経験則。 47 県データなら k=5-7 が目安。
結果が k に大きく依存する場合、 そもそも LLE が不適切な可能性(線形構造で済む / クラスター構造が強い)。
欠損値は事前に補完(KNNImputer 等)するか、 当該行を削除。 LLE は欠損値を扱えない。
計算量は O(n² log n) 前後。 n=1000 程度までなら実用、 n=10000 以上は近似アルゴリズム(Modified LLE / Hessian LLE)を検討。
埋め込み次元 d は「経験的に 2-3」が最適。 4 以上では解釈性が低下。
LLE は「局所性が成り立つ」前提のため、 サンプル数が少なすぎると失敗(最低 n > 5k)。
scikit-learn の method='modified' オプションは安定性向上に有効(標準より遅いが)。
結果の解釈には、 元の変数との相関分析(埋め込み座標 vs 元 4 変数)を併用する。
他次元削減(PCA / t-SNE / UMAP / Isomap)と複数試行し、 構造が一致するか確認するのが安全策。
LLE の eigensolver は 'arpack'(推奨)と 'dense'。 大規模では arpack 一択。
random_state を固定しても、 ARPACK は完全に決定的でない場合がある。 複数試行が必要。
可視化時は色分け(地方ブロック、 人口階級、 出生率階級)で構造を確認する。
LLE は教師なし。 ラベル情報を活用したいなら LDA / Supervised UMAP を検討。
🎓 R293 補足解説 — LLE と他の非線形次元削減の比較 8 観点
LLE は 2000 年 Roweis & Saul が提案した古典的多様体学習。 同時代に Tenenbaum らの Isomap も登場し、 その後 t-SNE / UMAP / Hessian LLE / Modified LLE などの派生が続いた。 以下 8 観点で他手法と比較すれば、 LLE の立ち位置が明確になる。
LLE vs PCA : PCA は線形でデータの分散最大方向を取る。 LLE は局所線形性を保ちつつ大域は非線形を許す。 直線的に並ぶデータなら PCA で十分、 曲がっているなら LLE。
LLE vs Isomap : Isomap は近傍グラフ上の測地線距離を保つ。 LLE は再構成重みを保つ。 大域的距離を重視するなら Isomap、 局所線形性を重視するなら LLE。
LLE vs t-SNE : t-SNE は確率的近傍埋め込みで、 クラスター可視化に強い。 LLE は連続的多様体に強い。 t-SNE は「点群の分離」、 LLE は「面の展開」。
LLE vs UMAP : UMAP は多様体構造を仮定しつつクラスタも分離。 計算は高速。 大規模データなら UMAP、 数百〜数千なら LLE で十分。
LLE vs Kernel PCA : Kernel PCA はカーネル関数で非線形を扱う。 LLE は明示的な近傍構造で扱う。 カーネル選びの自由度が高い分、 Kernel PCA は調整が難しい。
LLE vs Autoencoder : Autoencoder はニューラルネットで非線形圧縮。 LLE は閉形式で解析的に解ける。 大規模・複雑データなら Autoencoder、 解釈性なら LLE。
LLE vs MDS : MDS(多次元尺度法)は距離行列を保つ次元削減。 LLE は局所近傍関係を保つ。 全データ間距離の保存と、 局所構造の保存は異なる目的。
LLE vs Hessian LLE / Modified LLE : 標準 LLE の数値不安定性を改善した派生。 Hessian LLE は等長埋め込みを目指し、 Modified LLE は重み計算を安定化。 Scikit-learn で method='hessian' / method='modified' で選択可能。
🌐 R293 応用例 — LLE の 10 適用場面
LLE は研究的な手法に見えるが、 実は多くの現場で「データ可視化の前処理」「クラスタリングの前処理」「異常検知の基盤」として活用されている。
遺伝子発現データ : マイクロアレイの数千次元発現値を 2D 化し、 細胞型・疾患グループを可視化(バイオインフォマティクス)。
顔画像認識の前処理 : 高次元画素値を低次元化し、 表情・角度の連続変化を多様体として表現。
音声特徴量の可視化 : MFCC やスペクトログラムを LLE で 2D 化し、 話者・言語の差異を視覚的に把握。
都道府県・地域分析 : SSDSE-B-2026 のような多変量地域指標を 2D 化して、 地方ブロックの近接性や特徴を可視化(本記事の主題)。
センサーネットワーク : 多数センサーの時系列データを多様体上に埋め込み、 異常パターンを検出。
金融市場分析 : 株価・為替・指数を多次元で扱い、 LLE で「市場レジーム」を 2D 化して局面分析。
テキスト埋め込み可視化 : word2vec / BERT の高次元ベクトルを LLE で 2D 化し、 意味的近傍を視覚的に確認。
製造業の品質管理 : 多変量センサー値から「正常多様体」を学習し、 そこから外れる点を異常として検出。
気象データ分析 : 全国気象観測点の多変量データを LLE で 2D 化し、 気候帯の連続性を可視化。
マーケティング・顧客セグメンテーション : 購買履歴の高次元特徴を LLE で次元削減し、 顧客タイプを可視化してクラスター化。
📖 R293 追加: LLE の歴史的背景
Locally Linear Embedding(LLE)は、 2000 年に Sam Roweis(NYU)と Lawrence Saul(Bell Labs)が Science 誌に発表した手法。 同じ号に Tenenbaum らの Isomap も掲載され、 「非線形次元削減 (multi-dimensional manifold learning) の幕開け」として歴史に刻まれた。 当時、 高次元データの次元削減は主に PCA / LDA / MDS のような線形手法に限られていた。 LLE は「局所では線形・大域では非線形」という多様体仮説 (manifold hypothesis) を初めて実用的に具体化し、 顔画像・遺伝子発現・テキスト埋め込みなど多分野で応用された。 その後 2002 年に Donoho らが Hessian LLE を提案し、 数値不安定性を改善。 2006 年に Modified LLE が提案され、 Scikit-learn にも実装された。 2008 年に t-SNE(van der Maaten & Hinton)、 2018 年に UMAP(McInnes & Healy)が登場し、 主に可視化目的では t-SNE / UMAP が広く使われるようになったが、 LLE は「数学的に明快」「閉形式解析解」という美しさで、 教育・研究の場で今も活躍している。 47 都道府県データのような中規模・多変量データでは、 LLE が直感的で結果も解釈しやすい。 多様体学習という大きな枠組みの中で、 LLE は基礎中の基礎として理解しておきたい古典である。
📚 R293 まとめ
R293 補講では、 SSDSE-B-2026 の 47 都道府県データを使った LLE の埋め込み、 近傍数 k の影響、 そして PCA との比較を 3 枚の SVG 図と 2 件の pygblock で示した。 数式 $\min_W \sum_i \| x_i - \sum_j w_{ij} x_j \|^2$ の第 1 段階で「局所線形重み」を、 第 2 段階で「その重みを保つ低次元埋め込み」を解く 2 段最適化が LLE の本質。 練習 8 題と実務 Tips 15 選で「k の選び方」「外れ値の影響」「他次元削減との使い分け」を整理した。 統計データ分析コンペで「47 都道府県の構造を視覚化する」場面で、 本セクションの手順は再利用可能である。 さらに本補講では、 PCA / Isomap / t-SNE / UMAP / Kernel PCA / Autoencoder / MDS / Hessian-LLE との 8 観点比較、 遺伝子発現 / 顔認識 / 音声 / 地域分析 / センサーネットワーク / 金融市場 / テキスト埋め込み / 品質管理 / 気象 / マーケティングの 10 適用場面を整理した。 これらを総合すると、 LLE は単なる教科書手法ではなく、 多様体学習という大きな枠組みの中で 20 年以上活用されている実用ツールであることが分かる。 47 都道府県という身近なデータから始めて、 自分の業務や研究の高次元データに応用してほしい。
📚 関連グループ教材・さらに学ぶには
このサイト内
論文一覧に戻る — LLE を実際に使った再現論文をハンズオン形式で読む
関連用語ページ — このページの「🔗 関連用語」から派生
用語集トップ — 全用語を一覧で確認
概念マップ — 用語間の関係を視覚化
推奨書籍・教材
『統計学入門』 (東京大学出版会)― 日本語統計入門の定番。 次元削減 の基礎が押さえられる。
『Pythonによるデータ分析入門』 (Wes McKinney、 O'Reilly)― pandas 作者による実装ガイド。
『機械学習のエッセンス』 (加藤公一、 SBクリエイティブ)― ML 基礎を Python で実装しながら学ぶ。
『因果推論の科学』 (Judea Pearl、 文藝春秋)― 相関と因果の違いを徹底解説。
オンライン教材
scikit-learn 公式ドキュメント — 機械学習の標準実装。
StatQuest (YouTube) — 統計概念を直感的に解説。
Coursera / edX — 体系的なオンライン講座。
SSDSE 公式 — 本サイトで使う公的データの提供元。
困ったときは
データの可視化 (散布図・ヒストグラム・箱ひげ図) で全体像を把握
サンプルサイズ・欠損・外れ値を確認
適用条件 (前提) が満たされているか診断
類似研究での標準的な手法を確認
結果を複数手法でクロスチェック
📜 歴史的背景と学習の位置づけ
LLE は 次元削減 の領域で発展してきた概念です。 ここでは大まかな歴史的背景と、 なぜこの概念が必要になったのかを整理します。 用語が「降ってきた」のではなく、 現実の問題を解くために順番に 編み出されたものだと知ると、 学習の納得感が違います。
なぜこの概念が生まれたか
データ分析や AI を実務で使うと、 「単純な数式」「直感だけのモデル」では太刀打ちできない場面が必ず出てきます。 LLE は、 そうした実務的な課題を整理し、 共通言語として定式化したものです。 そのため、 教科書だけで完結する話ではなく、 使う場面 と使わない場面 を見極めることが何より重要になります。
学習の位置づけ
初学者: まず「30秒で分かる結論」「直感で掴む」だけ読めば、 論文に出てきたときに「あ、 あれね」と分かります。
中級者: 数式と Python 実装をセットで覚え、 自分の手元データに適用できる状態を目指します。
上級者: 落とし穴と派生手法を理解し、 場面に応じた使い分け・改良ができることが目標です。
📖 数式を言葉で読み解く
記号 1 つ 1 つではなく、 LLE (局所線形埋め込み) の数式が表現している物語 を文章で読み解きます。 SSDSE-B-2026 (47 都道府県 × 各種指標) を題材に、 「もしこの式を使ったら何が分かるのか」を可能な限り具体的に説明します。
LLE (Locally Linear Embedding, 局所線形埋め込み) は、Roweis & Saul が 2000 年に Science 誌で発表した非線形次元削減手法で、高次元データが多様体上に分布していると仮定し、各点を近傍点の線形結合で再構成する局所的な幾何構造を保ったまま低次元に埋め込みます。アルゴリズムは 3 ステップで構成されます。ステップ 1:各点 $\mathbf{x}_i$ の k 近傍を決定する。ステップ 2:再構成重み $W_{ij}$ を「$\mathbf{x}_i$ をその近傍点の線形結合 $\sum_j W_{ij}\mathbf{x}_j$ で表したときの誤差 $\|\mathbf{x}_i - \sum_j W_{ij}\mathbf{x}_j\|^2$ を最小化する」ように、$\sum_j W_{ij}=1$ の制約下で最小二乗で求める。ステップ 3:求めた重み $W$ を固定して、低次元埋め込み $\mathbf{y}_i$ が同じ重みで近傍点から再構成できるよう $\|\mathbf{y}_i - \sum_j W_{ij}\mathbf{y}_j\|^2$ を最小化する。これは $(I-W)^\top(I-W)$ の固有ベクトル問題に帰着され、最小の自明解を除いた次の $d$ 個の固有ベクトルが埋め込み座標となります。PCA が大域的線形構造を保つのに対し、LLE は局所線形構造を保つため、Swiss roll のような曲がった多様体を平面に「展開」できるのが特徴。SSDSE-B-2026 の 47 都道府県 × 数十指標データに対しては、PCA と LLE を併用すると「線形では捉えられない地域クラスター構造」が可視化できることがあります (例:北海道のような外れ値的位置、関東・関西の都市圏が同じ多様体片に乗るなど)。ただし近傍数 k の選択が結果に大きく影響し、k が小さすぎると分断、大きすぎると LLE の意味が薄れます。
この説明を 30 秒で要約すると
何を測っているか: 上記の数式は、 LLE (局所線形埋め込み) の中心的な性質を 1 つの数値・関数・分布として表現したものです。
何が分かるか: SSDSE-B-2026 のような実データに当てはめると、 47 都道府県の構造的特徴を比較可能な形で抽出できます。
何が分からないか: 因果関係・予測精度・将来予測のすべてが分かるわけではなく、 本ページ「落とし穴」セクションの境界線を必ず確認してください。
🧪 SSDSE-B-2026 を使った詳細ワークスルー
独立行政法人統計センターが公開している SSDSE-B-2026 (47 都道府県 × 数十指標 × 複数年) を題材に、 LLE (局所線形埋め込み) を実装から解釈まで通しでやってみます。 ここで使うのは合成データではなく、 政府統計に基づく実際の公的データです。
ステップ 1: データのダウンロードと読み込み
SSDSE-B-2026 は本サイトの data/raw/ に同梱されています。 直接ブラウザで SSDSE-B-2026.csv をダウンロードするか、 リポジトリをクローンすればそのまま使えます。 CSV は cp932 (Shift_JIS) 形式で、 先頭行に英語の列コード、 2 行目に日本語の列名が入っています。 そのため `pd.read_csv('data/raw/SSDSE-B-2026.csv', skiprows=[1], encoding='cp932')` のように 2 行目(日本語ラベル行)を飛ばして読むのが定番。 列名は SSDSE-B-2026(年)・Code(地域コード)・Prefecture(都道府県名)・A1101(総人口)・A4103(合計特殊出生率)・A1303(65 歳以上人口) 等の指標コードが並びます。
📥 入力例(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 列は住宅・家計・教育・医療など)
📋 コピー import pandas as pd
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , skiprows = [ 1 ] , encoding = 'cp932' )
print ( df . shape ) # (行数, 列数) を確認
print ( df . head ()) # 先頭 5 行
print ( df . columns ) # 列名一覧
print ( df . dtypes ) # データ型
print ( df . isnull () . sum ()) # 列ごとの欠損数
📤 実行例(実測)
(564, 112)
SSDSE-B-2026 Code Prefecture A1101 ... L322107 L322108 L322109 L322110
0 2023 R01000 北海道 5092000 ... 50133 6911 25661 48694
1 2022 R01000 北海道 5140000 ... 35403 9551 27234 46466
2 2021 R01000 北海道 5183000 ... 30483 9913 23762 51583
3 2020 R01000 北海道 5224614 ... 41407 9394 26539 56316
4 2019 R01000 北海道 5259000 ... 42277 8848 29335 57289
[5 rows x 112 columns]
Index(['SSDSE-B-2026', 'Code', 'Prefecture', 'A1101', 'A110101', 'A110102',
'A1102', 'A110201', 'A110202', 'A1301',
...
'L322101', 'L3
…(以下略)
ステップ 2: 前処理と探索的分析 (EDA)
分析前に必ず分布を可視化します。 ヒストグラム・箱ひげ図・散布図行列を見ることで、 外れ値・歪み・欠損パターンが一目で分かります。 LLE (局所線形埋め込み) は前提条件に敏感なので、 ここでの確認が後工程の信頼性を決定づけます。 47 都道府県データは n が小さく、 1 つの外れ値 (例:東京都) が全体の分析結果を歪めることが多々あります。
📋 コピー 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 import os
os . makedirs ( 'output' , exist_ok = True ) # 保存先のフォルダを作っておく
import matplotlib.pyplot as plt
import seaborn as sns
# 数値列のみ抜き出して相関行列を可視化
numeric_cols = df . select_dtypes ( include = 'number' ) . columns
sns . heatmap ( df [ numeric_cols ] . corr (), cmap = 'RdBu_r' , center = 0 )
plt . tight_layout ()
plt . savefig ( 'output/eda_corr.png' , dpi = 150 )
# 主要 4 列のペアプロット
sns . pairplot ( df [ numeric_cols [: 4 ]])
plt . savefig ( 'output/eda_pairplot.png' , dpi = 150 )
ステップ 3: LLE (局所線形埋め込み) の本処理
本ページ「🐍 Python 実装」セクションのコードをそのまま使い、 LLE (局所線形埋め込み) を SSDSE-B-2026 に適用します。 重要なのは、 結果の数値を 1 つの指標として鵜呑みにせず、 異なる前処理 (標準化あり/なし、 外れ値除外あり/なし) で複数回実行し、 結果が頑健かを必ず検証することです。 教師なし学習であれば乱数シードを固定し、 教師あり学習であれば cross-validation で汎化誤差を見積もります。
ステップ 4: 結果の解釈
数値が出たら、 必ず「言葉でこの結果は何を意味するか」を 3 段階で書き出してください。 (i) 埋め込みの事実 (例:東京都が第 1 軸で大きく離れる)、 (ii) ドメイン的意味 (例:総人口・消費支出が突出した都市部が外れ値的な位置に来る)、 (iii) 政策・実務への含意 (例:地域類型化の出発点として使える、 ただし埋め込み軸そのものに因果的意味はない)。 この 3 段ラダーを書けないなら、 まだ解釈が足りていません。
ステップ 5: 報告と再現性
最後に、 (a) コードを Git にコミット、 (b) 実行環境 (Python・主要ライブラリのバージョン) を `requirements.txt` で固定、 (c) 出力 CSV と図を `output/` に保存、 (d) 1 ページの結果サマリーを Markdown で残す、 という再現性確保の 4 セットを必ず行います。 これを怠ると、 3 ヶ月後の自分が結果を再現できません。
📚 実務ケーススタディ 3 連発
LLE が実務でどう使われているか、 具体的なプロジェクト事例で学びます。 教科書的説明だけでは見えない「現場でのトレードオフ」「意外な落とし穴」が含まれています。
ケース 1: 顔画像データセットの多様体可視化
Roweis & Saul の原論文で使われた古典例。 顔画像 (数千枚) を LLE で 2 次元に埋め込むと、 「顔の向き」「表情」「明るさ」が連続軸として現れる。 これは PCA では捉えられない非線形構造で、 画像認識における「多様体仮説」を視覚的に裏付ける結果となった。
ケース 2: SSDSE-B-2026 の都道府県クラスタリング
47 都道府県の数十指標を LLE で 2 次元に落とし、 PCA と比較。 LLE では「東京・大阪が外れ値的に飛び、 残り 45 県が緩やかな曲線多様体に乗る」という構造が見え、 これは PCA の単純な「人口規模軸」とは異なる地域構造を示唆。 k=5, 8, 12 で結果が安定することを感度解析で確認。
ケース 3: 単細胞 RNA-seq の細胞種分類
数万細胞 × 数万遺伝子の高次元データを LLE で 2 次元に埋め込み、 細胞種クラスターを可視化。 ただし生物学では UMAP がデファクトとなっており、 LLE は教育・比較目的で使われることが多い。
🎓 理論深掘り: LLE の数学的構造
LLE の固有値問題は、 行列 $M = (I - W)^\top (I - W)$ の最小 固有ベクトルを求めるものです。 ここで $W$ は $N \times N$ の重み行列 (ほとんどの要素がゼロのスパース行列)、 各行は近傍点に対する再構成係数からなり、 $\sum_j W_{ij} = 1$ を満たします。 $M$ は半正定値対称行列で、 最小固有値は常に 0 (固有ベクトルは全 1 ベクトル $\mathbf{1}$ で、 これは「全点を同じ位置に埋め込む」自明解)。 これを除外した次の $d$ 個の固有ベクトルが $d$ 次元埋め込みを与えます。 数学的等価性として、 LLE は Laplacian Eigenmaps の特殊ケース (重み付き隣接行列が再構成重みから決まる) とも見なせます。 計算量は $O(D N k^3 + d N^2)$ で、 $D$ は元の次元・$N$ はサンプル数・$k$ は近傍数・$d$ は埋め込み次元。 $N$ が大きいとスパース固有値ソルバー (ARPACK・LOBPCG) が必須。 修正版として Hessian LLE (HLLE)・Modified LLE (MLLE)・Local Tangent Space Alignment (LTSA) があり、 これらは LLE が苦手な「孤立クラスター」「曲率が極端な多様体」への頑健性を強化したものです。 scikit-learn の LocallyLinearEmbedding(method='modified') で MLLE が選択できます。 また、 LLE の出力は近傍数 $k$・正則化 $\epsilon$・距離尺度 (Euclidean / Manhattan / cosine) に強く依存するので、 複数設定で結果の安定性を必ず確認してください。
📜 LLE の歴史を辿る
LLE の歴史は 2000 年 12 月の Science 誌に Sam Roweis と Lawrence Saul が発表した「Nonlinear Dimensionality Reduction by Locally Linear Embedding」に始まります。 同号には Tenenbaum らの Isomap も同時掲載され、 この 2 本が非線形次元削減 (manifold learning) という研究領域を一気に確立しました。 PCA (1901, K. Pearson) や MDS (1958, Torgerson) が大域的線形構造しか捉えられない限界に対し、 「データは高次元空間中の低次元多様体上にある」という多様体仮説 (manifold hypothesis) を計算可能な手法に落とし込んだのが両者の功績。 2003 年に Donoho と Grimes が Hessian LLE を、 2003 年に Zhang と Zha が Local Tangent Space Alignment (LTSA) を、 2006 年に Zhang らが Modified LLE (MLLE) を提案し、 LLE ファミリーが拡大。 同時期、 Laplacian Eigenmaps (Belkin & Niyogi, 2003)・diffusion maps (Coifman & Lafon, 2006)・t-SNE (van der Maaten & Hinton, 2008)・UMAP (McInnes et al., 2018) など多数の次元削減手法が登場し、 LLE はその「祖父的」位置づけに。 現在の機械学習実務では t-SNE と UMAP が可視化のデファクトとなっていますが、 LLE は (i) 教育目的での明快な数式構造、 (ii) 局所線形性という明確な仮定、 (iii) 固有値問題への帰着という美しい数学的構造、 から今でも教科書・授業で必ず取り上げられます。 また、 単細胞 RNA-seq・神経科学のスパイクデータ可視化など、 「局所近傍構造を厳密に保ちたい」ドメインでは選択肢として残っています。 SSDSE-B-2026 のような小規模都道府県データへの適用例は、 教育教材として PCA との比較で示すと、 線形 vs 非線形の違いを直感的に教えられる優れた題材です。
🗺 拡張概念マップ:LLE (局所線形埋め込み) の周辺地図
LLE (局所線形埋め込み) は 次元削減 の系譜に位置づけられます。 ここでは前提概念・並列概念・発展概念を、 ツリーマップ的に整理します。 用語を 1 つ覚えても、 その上下・左右の文脈を知らないと使いどころが分かりません。 概念マップを 地図 として手元に置いておくと、 論文を読みながら「ああ、 この用語は私が知っているあの用語の親戚だ」と即座に位置づけられます。
前提となる概念 (上位 / 必須前知識)
確率論の基本 — 確率分布・期待値・条件付き確率は 次元削減 全般の土台。
線形代数 — 行列・ベクトル・固有値が出てこない統計手法はほぼ無く、 これが弱いと数式が読めません。
記述統計 — 平均・分散・分布形状の感覚なしには LLE (局所線形埋め込み) の結果を解釈できません。
Python と pandas — SSDSE-B-2026 を扱う標準環境。 read_csv・groupby・describe は反射的に使えるレベルに。
並列にある概念 (同レベル / 比較対象)
次元削減 内には、 LLE (局所線形埋め込み) と目的が似た複数の手法が存在します。 状況によって使い分けが必要になるので、 違いを意識しながら学んでください。 本ページ「🌐 関連手法・派生」セクションのリンクから 1 つずつ確認すると、 自分の中の「使い分けマップ」が作れます。
発展した概念 (下位 / 次の学習目標)
LLE (局所線形埋め込み) を一通り理解した後、 自然に学びたくなる発展トピックは「派生手法」「実応用」「理論的拡張」の 3 方向です。 派生手法は同じカテゴリ内の上位互換、 実応用は実務での使い方、 理論的拡張は数学的厳密性 (収束性・最適性) の追究です。 自分の興味に応じて、 どの方向に伸ばすかを意識的に選んでください。
論文での出会い方
本サイトの再現論文集には LLE (局所線形埋め込み) を活用した研究が複数収録されています。 トップページから検索・絞り込みで該当論文を見つけ、 「30 秒で分かる結論」「結果」セクションを優先的に読むと、 LLE (局所線形埋め込み) がどう実問題に応用されているかが具体的に把握できます。 抽象的な定義より、 具体的応用 3 件 を見るほうが理解の速度は 5 倍速くなります。
🔭 上級トピック: LLE の数理:再構成重みから固有値問題への帰着
LLE の数学的核心は、 「局所的な線形構造を保ったまま低次元に埋め込む」という幾何的要請を、 2 段階の最適化問題として定式化することにあります。 ステップ 1 では各点 $\mathbf{x}_i$ の k 近傍を $\mathcal{N}(i)$ とし、 再構成誤差 $\epsilon(W) = \sum_i \| \mathbf{x}_i - \sum_{j \in \mathcal{N}(i)} W_{ij} \mathbf{x}_j \|^2$ を $\sum_j W_{ij}=1$ かつ $W_{ij}=0\ (j \notin \mathcal{N}(i))$ の制約下で最小化します。 この問題は局所共分散行列 $C_i^{jk} = (\mathbf{x}_i - \mathbf{x}_j)^\top (\mathbf{x}_i - \mathbf{x}_k)$ を用いて、 各点ごとに $\mathbf{w}_i = C_i^{-1} \mathbf{1} / (\mathbf{1}^\top C_i^{-1} \mathbf{1})$ という閉形式解が得られます。 ステップ 2 では重み $W$ を固定し、 低次元埋め込み $\mathbf{y}_i$ について同じ再構成誤差 $\Phi(Y) = \sum_i \| \mathbf{y}_i - \sum_j W_{ij} \mathbf{y}_j \|^2$ を最小化します。 これは行列 $M = (I-W)^\top (I-W)$ の二次形式 $\text{tr}(Y^\top M Y)$ を、 $Y^\top Y / N = I$ かつ $\sum_i \mathbf{y}_i = 0$ の制約下で最小化する問題に等価で、 $M$ の最小の自明固有値 (0、 固有ベクトル $\mathbf{1}$ ) を除いた次の $d$ 個の固有ベクトルが埋め込み座標になります。 PCA が大域的共分散行列の主固有ベクトルを使うのに対し、 LLE はスパースな局所連結行列の最小 固有ベクトルを使う点が双対的で美しい構造を持ちます。 数値的注意点として、 k が元次元を超えると局所共分散行列が劣決定となり、 Tikhonov 正則化 $C_i + \epsilon I$ が必須となります。 scikit-learn の LocallyLinearEmbedding では reg パラメータでこれを制御できます。
LLE
LLE
scikit-learn
umap-learn
openTSNE
PHATE
diffusion-maps
🔗 隣接手法への橋渡し
LLE は局所線形性を保存する次元削減であり、 前段の k 近傍探索の設計と後段の可視化・分類器入力との接続で多様体構造の理解が深まる。
上流の k-NN グラフ構築が局所線形近似の品質を決め、 並列の Isomap (測地線距離) / t-SNE と比較して「局所 vs 大域構造」のどちらを保存したいかを判断し、 下流の埋め込み座標を散布図化して隣接関係の保存度を視覚評価する流れで多様体学習の選択が固まる。
🌳 意思決定ツリー: LLE を選ぶか
「LLE を使うべきか」を判断するためのフローチャート。 上から順番に Yes/No で答えていけば、 自分の問題に最適な手法選定にたどり着きます。
1. データはどれくらい高次元か? 元次元 d が 100 以下 → PCA で十分なことも / 100-10,000 → LLE/UMAP/t-SNE 適 / 10,000+ → PCA 前処理 + UMAP の 2 段。 2. サンプル数 N は? N < 100 → LLE 不安定、 PCA 推奨 / N が 100-10,000 → LLE OK / N が 10万+ → UMAP 推奨 (LLE は計算量大)。 3. 大域構造を保ちたいか? Yes → PCA or Isomap or UMAP (n_neighbors 大) / No (局所のみ) → LLE。 4. クラスタリングの可視化が目的? t-SNE or UMAP 推奨 (LLE はクラスタ可視化に弱い)。 5. 線形/非線形どちらか不明? まず PCA → 寄与率が低い (例: 上位 2 軸で 50% 未満) なら非線形必要 → LLE/UMAP。 6. 結果の再現性は? LLE は決定論的 (乱数依存なし) なので再現性高い / t-SNE/UMAP は乱数初期化依存。
🧭 直感をさらに深める — 「距離」ではなく「レシピ」を運ぶ
LLE の一番の勘所を一言でいうと、 各点を「近傍たちの配合レシピ」で書き直し、 そのレシピだけを低次元へ持ち込む ことです。 点 $\mathbf{x}_i$ を近傍 $\{\mathbf{x}_j\}$ の線形結合 $\sum_j w_{ij}\mathbf{x}_j$ で最も良く再現する重み $w_{ij}$(配合比)を求め、 低次元でも同じ配合比 で $\mathbf{y}_i \approx \sum_j w_{ij}\mathbf{y}_j$ が成り立つ配置 $Y$ を探す。 「ご近所だけ見れば世界はほぼ平ら(局所線形)」という多様体仮説のもとで、 局所の平面片をパッチワークのように貼り合わせると、 大域的には曲がった多様体が平面へと展開されます。 多様体学習 の一般論をこのページの具体で体感するのが本節の狙いです。
局所は線形・大域は非線形 という二層構造が、 PCA との決定的な違いです。 PCA は全データを 1 枚の平面 に射影するため、 スイスロール(架空・合成のデモ多様体)のように巻いた面は「巻いたまま潰れて」重なってしまう。 LLE は面を小さなパッチに割り、 各パッチ内でのみ線形近似を効かせるので、 巻きをほどいて広げられます。 「線形の道具を、 局所という狭い舞台でだけ使う」── これが非線形を線形の積み重ねで扱う LLE の思想です。
Isomap との発想の違い も、 この「レシピ vs 距離」で整理できます(本ページ「🎮 触って理解する」④の図が対応)。 Isomap は「点 i と点 j は多様体に沿って距離いくつか」という大域的な測地距離行列 を近傍グラフの最短経路で推定し、 MDS でその距離をできるだけ保つ配置を求めます ── 数値としての距離 を運ぶ方式です。 対して LLE は距離の数値を一切保存せず、 「点 i は近傍のこの配合比 で書ける」という局所的な関係 だけを運ぶ。 重みは回転・並進・スケールに不変なので、 埋め込みは形を保ったまま自由に置ける代わりに、 大域的な縮尺の情報は捨てられます。 t-SNE が確率的な近傍類似度を、 UMAP がファジー近傍グラフを保存するのとも対照的で、 「何を不変量として運ぶか」で各手法の個性が決まります。
⚠️ 落とし穴を深掘り — k・正則化・サンプリング・スケール不定性
本ページ「⚠️ よくある落とし穴」を、 なぜそうなるのか という機序まで踏み込んで補足します。 いずれも「局所線形の仮定が壊れる/方程式が悪条件になる」ことに帰着します。
🔍 1. 近傍数 k の二律背反(小さすぎ=分断/大きすぎ=線形性崩壊)
k が
小さすぎる と近傍グラフが連結でなくなり、 多様体がいくつかの島に分断されて第 2 段階の固有値問題が退化します(複数の連結成分ぶんだけ固有値 0 が現れ、 埋め込みが意味をなさなくなる)。 逆に k が
大きすぎる と、 曲率のある領域で「多様体の反対側の点」まで近傍に取り込み、 「ご近所は平ら」という前提そのものが崩れて、 結果はほぼ
PCA に漸近します。 原則は「
局所線形近似が成り立つ最大の範囲 に k を収める」こと。 これは
多様体学習 全般に共通する近傍サイズ問題で、 唯一の正解はなく、 複数の k で埋め込みの安定性を見るしかありません。
🔍 2. 正則化項はなぜ必須か(近傍数 > 次元で重み行列が特異)
第 1 段階の重みは局所グラム行列 $C_i^{(jk)} = (\mathbf{x}_i-\mathbf{x}_j)^\top(\mathbf{x}_i-\mathbf{x}_k)$ を用いて $\mathbf{w}_i = C_i^{-1}\mathbf{1}/(\mathbf{1}^\top C_i^{-1}\mathbf{1})$ で解きます。 ところが近傍数 $k$ が元の次元 $D$ を超えると、 $k$ 個の近傍差ベクトル $\mathbf{x}_i-\mathbf{x}_j$ が張る空間はたかだか $D$ 次元なので、 $C_i$ は
ランク落ち(特異) して $C_i^{-1}$ が定義できません。 そこで Tikhonov 正則化 $C_i \to C_i + \delta\,\mathrm{tr}(C_i)/k \cdot I$ を加えて可逆化します(
正則化 の一種)。 $\delta$ を小さくしすぎると重みが暴れ、 大きくしすぎると全近傍が均等重みに寄って局所情報が失われる。 scikit-learn の
reg(既定 1e-3)を不用意に下げないのが安全策です。 なお、 本ページのウィジェットは 2D 渦巻きのため制約 $\sum_j w_{ij}=1$ の正規化が発散を打ち消しますが、 高次元・高相関の実データではこの縮退がはるかに強く効きます。
🔍 3. 疎・不均一サンプリングでの破綻
k-NN は「距離」ではなく「
個数 」で近傍を切るため、 サンプルが密な領域では物理的に狭い範囲を、 疎な領域では広い範囲を「局所」とみなします。 密度差が激しいデータでは、 疎な側で近傍が曲率をまたいで広がり、 局所線形の仮定が壊れて展開が歪みます。 また全体のサンプルが少なすぎると(経験則で $N \gtrsim 5k$ を割ると)そもそも局所平面を推定するだけの点が足りません。 事前の
標準化 でスケールを揃え、 密度の偏りが大きい場合は部分サンプリングや適応的近傍(距離しきい値)で緩和します。 SSDSE-B-2026(47 都道府県)のように東京都・大阪府が外れ値的に飛ぶデータでは、 まさにこの密度不均一が起きやすい点に注意します。
🔍 4. 埋め込みのスケール・回転不定性
第 2 段階は $Y^\top Y/N = I$(直交・単位分散)と $\mathbf{1}^\top Y = 0$(中心化)の制約下で $\mathrm{tr}(Y^\top M Y)$ を最小化します。 この制約は分散スケールを $1$ に固定しますが、 軸の符号・軸間の回転・全体の鏡映は決まりません (固有ベクトルは符号任意、 縮退固有値があれば固有空間内で回転自由)。 したがって「x 軸の向き」「時計回りか反時計回りか」といった見かけは実行ごと・実装ごとに変わり得ます。 重みが回転・並進・スケール不変であることの裏返しで、 大域的な縮尺や絶対的な向きに意味を読み込んではいけません 。 比較すべきは軸の値そのものではなく、 点同士の近接関係・順序 です(本ページ③の 1D 展開が「順序保存」を強調しているのはこのため)。
🚀 発展 — 改良手法・目的関数の比較・固有値問題としての定式化
標準 LLE の弱点(数値不安定・等長性の欠如・孤立クラスタへの脆さ)を補う改良系と、 近縁手法との目的関数の違い、 そして計算の背骨である固有値問題を整理します。
改良手法ファミリー
🚀 Hessian LLE (HLLE)
局所接空間上のヘシアン(2 階微分) を推定し、 その二次形式を最小化することで「局所的に等長(曲げても伸縮しない)」な埋め込みを狙います(Donoho & Grimes, 2003)。 非凸で穴のある多様体に強い一方、 近傍推定により多くの点を要します。 scikit-learn では method='hessian'。
🚀 Modified LLE (MLLE)
重み行列 $C_i$ がランク落ちして重み解が一意でない問題に対し、 複数の重みベクトル(ヌル空間の基底) を同時に使って再構成を安定化します(Zhang & Wang, 2006)。 標準 LLE の「正則化 $\delta$ 依存」を大きく緩和。 scikit-learn では method='modified'。
🚀 LTSA (Local Tangent Space Alignment)
各点の近傍で局所接空間 を PCA 的に推定し、 それらを大域的に「貼り合わせ(アライン)」て埋め込みを構成します(Zhang & Zha, 2004)。 LLE を「再構成重み」ではなく「接空間の整合」として再定式化した親戚です。 scikit-learn では method='ltsa'。
目的関数の比較(何を保存するか)
手法
保存する量(目的関数の骨子)
大域構造
解き方
PCA
分散最大の線形部分空間 $\max \mathrm{tr}(W^\top \Sigma W)$
保持(線形のみ)
共分散の最大 固有ベクトル
LLE
局所再構成重み $\sum_i\|\mathbf{y}_i-\sum_j w_{ij}\mathbf{y}_j\|^2$
捨てる(局所のみ)
$M=(I-W)^\top(I-W)$ の最小 固有ベクトル
Isomap
測地距離(グラフ最短経路)を保つ $\min\sum(d^{geo}_{ij}-\|\mathbf{y}_i-\mathbf{y}_j\|)^2$
保持(距離ベース)
中心化距離行列の固有分解(MDS)
t-SNE
近傍の確率分布を KL 距離で一致 $\min \mathrm{KL}(P\,\|\,Q)$
弱い(局所クラスタ重視)
勾配降下(非凸・乱数依存)
UMAP
ファジー近傍グラフの交差エントロピー
中〜強(局所+一部大域)
確率的勾配降下
要点:LLE・Isomap は閉形式の固有値問題 に帰着し決定論的(次元削減 のスペクトル系)、 t-SNE・UMAP は反復最適化 で乱数初期化に依存します。 「距離を保つ(Isomap)」「重みを保つ(LLE)」「確率的類似度を保つ(t-SNE/UMAP)」という保存対象の違いが、 そのまま各手法の得手不得手になります。 Kernel PCA はカーネル行列の固有分解という点で LLE と同じスペクトル系に属し、 近傍構造を陽に組めば LLE を含む多くの手法をカーネル PCA の特殊例として見ることもできます。
固有値問題としての定式化(骨子の再掲)
第 1 段階で各行が近傍再構成係数からなるスパースな重み行列 $W$($\sum_j W_{ij}=1$)を得たら、 第 2 段階は疎な対称半正定値行列 $M=(I-W)^\top(I-W)$ の最小 固有ベクトルを求める問題になります。 最小固有値は必ず $0$(固有ベクトルは全 $1$ ベクトル $\mathbf{1}/\sqrt{N}$ で、 全点を 1 点に潰す自明解)なのでこれを捨て 、 次に小さい $d$ 個の固有ベクトルを並べたものが $d$ 次元埋め込み $Y$ です。 PCA が共分散の最大 固有ベクトルを使うのと双対的に、 LLE は局所連結行列の最小 固有ベクトルを使う ── この「ボトム側スペクトル」を取る構造が Laplacian Eigenmaps とも共通します。 $N$ が大きいときはスパース固有値ソルバー(ARPACK / LOBPCG)が必須で、 重み計算 $O(DNk^3)$ と固有分解が計算コストの二本柱です(本ページ「∑ 数学的導出」「🔭 上級トピック」も参照)。