100万×50万=5000億の行列を、特異値分解で100万×100、100×100、100×50万の3つの行列の積にして、成分数を1/3000以下にできる理由とは?
巨大な行列(100万×50万)には無数のデータが詰まっていますが、実はすべてが独立した情報ではありません。
多くの場合、似たような「パターン」から成り立っているのです。
例えば:
- 画像データなら、背景や同じ模様の部分が繰り返される。
- テキストデータなら、よく使われる単語の組み合わせが共通している。
つまり、情報の本質は少数の「特徴的なパターン」に集約されるのです。
SVDの原理をエクセルデータで説明
1. エクセル表のイメージ
100万行 × 50万列のエクセルデータがあるとします。例えば次のような内容です:
- 行:ユーザー(100万人)
- 列:商品(50万種類)
- セルの中身は「購入回数」とします。
この巨大な表では多くの行や列で「重複するパターン」があります。
2. 問題:無駄にデータが重複している
例えば:
- ユーザー間のパターン
- 多くのユーザーは似たような商品セットを購入しています。
- 例えば「若者層はゲームとスマホを購入」「中年層は家電と日用品」など。
- 商品間のパターン
- ゲームソフト A と B をセットで買う人が多い。
つまり、エクセル表は実質的には「わずかなパターンの組み合わせ」で成り立っているのです。
3. SVDのアプローチ
SVDはこの表のデータを「本質的なパターン」に分解します。
- U(100万行 × 100列)
各ユーザーがどのパターンに属しているかを示す「ユーザーパターン」行列です。 - Σ(100 × 100)
そのパターンの重要度を示す「スケール値」です。 - VT(100 × 50万列)
各商品の特徴がどのパターンに対応するかを示す「商品パターン」行列です。
4. 具体的な圧縮の仕組み
例えば、次のような具体的パターンがあるとします:
- パターン1:若者層の購入傾向(ゲーム・スマホ)
- パターン2:中年層の購入傾向(家電・日用品)
- パターン3:ビジネス層の購入傾向(PC・ソフトウェア)
すると、100万行 × 50万列のすべてのデータを埋める必要はなく、「100個のパターン」とそれぞれの重み(Σ)で表現できます。
5. 特異値分解の数学的役割
SVDでは、エクセル表全体をベクトル空間で見たとき、重要なパターンを見抜いて次元を落とします。
- Σ に特異値が小さい次元は「ほとんど情報がない」と判断し、無視できます。
- これにより、元の5000億成分を、わずか「3000分の1以下」にまで圧縮できます。
要するに
- SVDはエクセル表内の「似たようなパターン(線形従属)」を自動的に見抜いて、無駄な情報を削ります。
- これにより「本当に必要な情報だけ」を保持することで圧縮が可能になります。
===
"make you feel, make you think."
SGT&BD
(Saionji General Trading & Business Development)
説明しよう!西園寺貴文とは、常識と大衆に反逆する「社会不適合者」である!平日の昼間っからスタバでゴロゴロするかと思えば、そのまま軽いノリでソー◯をお風呂代わりに利用。挙句の果てには気分で空港に向かい、当日券でそのままどこかへ飛んでしまうという自由を履き違えたピーターパンである!「働かざること山の如し」。彼がただのニートと違う点はたった1つだけ!そう。それは「圧倒的な書く力」である。ペンは剣よりも強し。ペンを握った男の「逆転」ヒップホッパー的反逆人生。そして「ここ」は、そんな西園寺貴文の生き方を後続の者たちへと伝承する、極めてアンダーグラウンドな世界である。 U-18、厳禁。低脳、厳禁。情弱、厳禁。