特徴量設計(まずここ):データ行列と特徴ベクトル

このページは、古典機械学習で頻出する N×d のデータ行列特徴ベクトル を、初学者向けに短く固定するノートです。
(ここでの「次元」は主に 特徴の本数 d を指します。)

Nd は何か

表形式データを行列にすると、だいたい次の形になります。

  • 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 のペア」**と説明すると対応が一目で分かります。

これも各行で xy がペアです。説明として **「特徴ベクトルと正解ベクトルのペア」**と呼ぶと、マルチラベルのときにズレません。

実装としては ラベル次元ごとに独立した二値モデルを並べるなど、複数パターンがありますが、データの見え方としての **「長さ (L) の 0/1 ベクトルが正解」**という整理は共通です。

テキストを特徴にする例(BoW)

文章データでは、**BoW(Bag-of-Words)**のように語彙辞書を作り、各語の出現回数を並べて特徴ベクトルを作る方法があります。 この特徴化は、線形回帰/ロジスティック回帰のどちらにも適用できる x 側の設計であり、モデル本体の差分(y の型や出力変換)とは別レイヤーです。

  • 辞書サイズが d なら、特徴ベクトルの長さも d
  • 各次元に、対応する語の出現回数(または tf-idf など)を入れる

この「辞書サイズと次元が直結する」性質は、古典機械学習のテキスト分類でよく使われる考え方です。

よくある誤解の整理

  • **多クラスで「ジャンルのどれか1つ」**を選ぶだけなら、正解はだいたい カテゴリ1列で足ります(クラス数が増えても「正解列がクラス数ぶん増える」わけではないことが多い)。
  • マルチラベルのように 同時に複数タグを付けるなら、正解は 複数列または 正解ベクトルとして持つ設計になります。

関連