はじめに
G検定では、機械学習やディープラーニングの基礎だけでなく、データの構造や表現方法に関する知識も問われる。
特に、ベクトルや行列を使ったデータ表現は、AIを理解するうえで避けて通れないポイントだ。
今回は、実際のG検定の過去問に登場した「スパース」という概念について、問題形式で解説を進めながら理解を深めていこう。
問題:ECサイトなどの関係性データに関する設問
ECサイトなどの顧客や商品などの関係性のデータをデータベースなどのテーブルで表すと、
関連のないデータは0で表され、(●)な状態になる可能性がある。
選択肢
- アンサンブル
- スパース
- パラレル
- デンス
正解は「2. スパース」
この設問の正解は「スパース」だ。
「スパース(Sparse)」とは、日本語で「まばらな」「希薄な」といった意味を持つ。機械学習では、主にベクトルや行列の中に多くのゼロが含まれている状態を指す。
なぜ「スパース」が正解なのか?
例えば、ECサイトにおける「顧客×商品」のテーブルを考えてみよう。
顧客Aが商品1と商品5を購入していた場合、以下のような1行のベクトルになる。
[1, 0, 0, 0, 1, 0, 0, 0, 0, 0]
このように、ほとんどの要素が「0」で埋まっており、一部に「1(購入)」の情報だけが入る。このような状態がスパース表現だ。
| 顧客 | 商品1 | 商品2 | 商品3 | 商品4 | 商品5 | … |
|---|---|---|---|---|---|---|
| A | 1 | 0 | 0 | 0 | 1 | … |
このような表現は、協調フィルタリングやレコメンデーションエンジンなどの文脈でよく使われる。
スパースな行列を効率的に扱うには、専用のライブラリや圧縮手法も重要になる。
他の選択肢との比較
問題文の文脈と照らし合わせて、他の選択肢がなぜ誤りなのかも確認しておこう。
| 選択肢 | 説明 | 誤りの理由 |
|---|---|---|
| アンサンブル | 複数のモデルを組み合わせて予測精度を高める手法(例:ランダムフォレスト) | データの状態ではなく、学習手法の話になるため不適切 |
| パラレル | 並列処理のこと。複数の処理を同時に実行する技術 | データの形状ではなく、処理の方法を指しているため文脈に合わない |
| デンス | 「密な」という意味で、要素が0でないデータが多く含まれる状態 | 本問では「0が多い」状態について問われているため、対義語に近い |
スパース表現が重要な理由
スパースなデータ構造は、AIやデータ分析の現場で頻繁に登場する。
特に以下のような場面でその重要性が際立つ。
1. 次元の呪いを回避するための工夫
特徴量が数万次元ある場合でも、スパース表現を使うことでメモリの使用量を抑えることができる。
SciPyやScikit-learnなどのPythonライブラリでも、scipy.sparseモジュールを使って効率的に処理できる。
2. 自然言語処理での単語ベクトル
「Bag of Words(BoW)」モデルでは、文書を単語の出現頻度でベクトル化するが、多くの単語が出現しないため、ベクトルはスパースになりやすい。
例:
「AIが好き」という文章
→ 「AI: 1」「が: 1」「好き: 1」「他の単語: 0, 0, 0…」
3. 推薦システムにおける協調フィルタリング
ユーザーと商品の間に関係がある箇所だけが1、それ以外はすべて0。
スパース行列を扱う技術がないと、精度の高いレコメンドは実現できない。
まとめ
今回のG検定過去問は、「スパース」なデータ表現という実務でも非常に重要な概念を問う内容だった。
この知識は、ただ試験に合格するためだけでなく、実際のAIプロジェクトでも確実に役立つ。
✅ スパースとは「0」が多く含まれるデータ表現
✅ 顧客・商品データや単語ベクトルなど、応用範囲は広い
✅ G検定では「用語の定義とその適用場面」を正確に押さえることが重要
G検定対策を進める中で、こうした基本用語の理解をおろそかにしないことが合格への近道となる。
次回の出題では、今回のような「データ構造の性質」に注目して解答する意識を持とう。


コメント