このページは、古典機械学習で頻出する N×d のデータ行列 と 特徴ベクトル を、初学者向けに短く固定するノートです。
(ここでの「次元」は主に 特徴の本数 d を指します。)
N と d は何か
表形式データを行列にすると、だいたい次の形になります。
N:サンプル数(データ件数)d:特徴数(1件あたりの入力の列数)
行列の形は N×d で、配列としては2次元のままです。
記法(データ行列 (X) と行ベクトル)
表記を数式で固定すると、だいたい次です。
- (X \in \mathbb{R}^{N \times d})
- 行数 (N):サンプル数
- 列数 (d):特徴数
- (i) 行目(1件分)を (\mathbf{x}i = [x{i1}, x_{i2}, \dots, x_{id}]) と書く
- (\mathbf{x}_i) は 長さ (d) の特徴ベクトル
実装では、各行が 長さ (d) の浮動小数点配列(多くは float)として並ぶ、という理解で足ります。
具体例:Iris(アヤメ)データセット
古典機械学習の入門でよく出る例です。
- 特徴(例として4本):がく片の長さ/幅、花弁の長さ/幅
- このとき
d=4(特徴が4項目ある)
- このとき
- 目的変数 (y):種名のラベル(分類として扱うことが多い)
行列の形は N×4 で、「4次元」=特徴空間の次元が4、という読み方になります。
「2次元なのに高次元」と言われる理由
ここで言う 高次元は、行列の“次数”が3以上、という意味ではなく、だいたい d が大きいという意味です。
- 例:検査項目が300個あるなら
d=300 - 例:カテゴリを one-hot 展開すると、カテゴリ数ぶん列が増えて
dが大きくなり得る - 例:テキストを「語ごとの出現回数」などにすると、語彙数に比例して
dが大きくなり得る - 例:テキストやカテゴリを **埋め込み(固定長の実数ベクトル)**に変換すると、
dが数千以上になる設計も普通にある
つまり **表はいつも N×d(2次元)**でも、特徴空間としては (\mathbb{R}^d) と見なせる、という整理です。
特徴ベクトルとは何か
1件のデータについて、特徴を数値化して並べた 長さ d の1次元配列が特徴ベクトルです(多くは float)。
データ行列では、だいたい 各行が1本の特徴ベクトルになります(行=サンプル、列=特徴、という慣習)。
教師ありデータ:特徴ベクトルと正解のペア
古典機械学習の教師あり学習では、だいたい **「1件につき特徴ベクトル x と正解が1セット」**です。データフレームで書くなら **同じ行に x の列と正解の列(たち)**が並びます。
正解が「1個」のとき(いちばんよくある)
- 回帰:正解は 数値スカラー
y(温度、金額など)が1列 - 単一二値分類:正解は 0 か 1(またはクラスID)が1列(スパムかどうか、など)
このとき N 件あるなら、(x, y) のペアが N 組です。
正解が「複数ビット」のとき(マルチラベル)
「ITか」「福祉か」のように 独立した YES/NO を同時に付ける場合、正解は 長さ L のベクトルになります。
例(概念):
y = [ ITか(0/1), 福祉か(0/1), ... ]
例として 5つの項目それぞれについて二値(0/1)で付けるなら、正解は 長さ 5 で各成分が 0 か 1 の 正解ベクトルです([1,0,1,0,1] のような列)。これも ベクトルと呼んでよく、**「特徴ベクトル x と正解ベクトル y のペア」**と説明すると対応が一目で分かります。
これも各行で x と y がペアです。説明として **「特徴ベクトルと正解ベクトルのペア」**と呼ぶと、マルチラベルのときにズレません。
実装としては ラベル次元ごとに独立した二値モデルを並べるなど、複数パターンがありますが、データの見え方としての **「長さ (L) の 0/1 ベクトルが正解」**という整理は共通です。
テキストを特徴にする例(BoW)
文章データでは、**BoW(Bag-of-Words)**のように語彙辞書を作り、各語の出現回数を並べて特徴ベクトルを作る方法があります。
この特徴化は、線形回帰/ロジスティック回帰のどちらにも適用できる x 側の設計であり、モデル本体の差分(y の型や出力変換)とは別レイヤーです。
- 辞書サイズが
dなら、特徴ベクトルの長さもd - 各次元に、対応する語の出現回数(または tf-idf など)を入れる
この「辞書サイズと次元が直結する」性質は、古典機械学習のテキスト分類でよく使われる考え方です。
よくある誤解の整理
- **多クラスで「ジャンルのどれか1つ」**を選ぶだけなら、正解はだいたい カテゴリ1列で足ります(クラス数が増えても「正解列がクラス数ぶん増える」わけではないことが多い)。
- マルチラベルのように 同時に複数タグを付けるなら、正解は 複数列または 正解ベクトルとして持つ設計になります。