前回の振り返り:データの分布と統計量
前回は、データの中心やばらつきを把握するための統計量について学びました。平均や中央値、標準偏差、分散などを使って、データの特性を数値的に理解し、ヒストグラムや箱ひげ図を用いて視覚的に把握する方法を解説しました。統計量の活用によって、データの全体像を効率的に捉えることができました。
今回は、カテゴリ変数の扱い方について学びます。カテゴリデータとは、数値ではなく、文字やラベルで表されるデータのことです。このようなデータを機械学習モデルに適切に入力するためには、エンコーディングという変換処理が必要です。代表的なエンコーディング手法であるラベルエンコーディングとワンホットエンコーディングについて詳しく解説します。
カテゴリ変数とは?
カテゴリ変数は、データのカテゴリを示す変数で、数値ではなく文字やラベルで表されるものです。たとえば、性別(男性・女性)、色(赤・青・緑)、職業(教師・医者・エンジニア)などがカテゴリ変数に該当します。
例えで理解するカテゴリ変数
カテゴリ変数は「お店のメニューのようなもの」です。メニューには「ピザ」「パスタ」「サラダ」といったカテゴリがありますが、これらをそのまま数値として計算に使うことはできません。機械学習では、このようなカテゴリデータを数値に変換して処理できるようにする必要があります。
ラベルエンコーディングとは?
ラベルエンコーディングは、カテゴリ変数を整数のラベルに変換する手法です。カテゴリごとに一意の整数が割り当てられ、モデルがその整数を利用して学習を進めます。
ラベルエンコーディングの実装例
たとえば、以下のようなカテゴリ変数があったとします。
色 |
---|
赤 |
青 |
緑 |
これをラベルエンコーディングすると、次のように変換されます。
色 | エンコード |
---|---|
赤 | 0 |
青 | 1 |
緑 | 2 |
このように、各カテゴリに整数を割り当てることで、機械学習モデルで扱える形式に変換します。
ラベルエンコーディングのメリットとデメリット
メリット
- シンプル: 非常に簡単で、素早く実装できる。
- メモリ効率が良い: ラベルエンコーディングは、各カテゴリを一つの数値に変換するため、メモリの使用量が少ない。
デメリット
- 順序を持たないデータに適さない: ラベルエンコーディングでは、カテゴリ間に数値的な順序が生じます。しかし、例えば色に順序は存在しません(赤 < 青 < 緑という順序は本来ありません)。このようなデータに対してラベルエンコーディングを使用すると、モデルが不適切な解釈をする可能性があります。
例えで理解するラベルエンコーディング
ラベルエンコーディングは「メニューに番号を振ること」に似ています。例えば、「ピザ」を1、「パスタ」を2、「サラダ」を3とラベル付けすることは簡単ですが、料理に順番をつける必要がない場合、この方法は適していません。
ワンホットエンコーディングとは?
ワンホットエンコーディングは、カテゴリごとにビットのフラグを立てるエンコーディング手法です。各カテゴリは、バイナリのベクトルで表され、1つのカテゴリに対応するビットだけが「1」になり、他はすべて「0」になります。
ワンホットエンコーディングの実装例
先ほどの色の例を使って、ワンホットエンコーディングを行うと、次のように変換されます。
色 | エンコード |
---|---|
赤 | [1, 0, 0] |
青 | [0, 1, 0] |
緑 | [0, 0, 1] |
このように、各カテゴリがそれぞれ1つのビットで表現されるため、カテゴリ間に順序が生じることはありません。
ワンホットエンコーディングのメリットとデメリット
メリット
- 順序に依存しない: カテゴリに順序がない場合、ラベルエンコーディングの代わりに使うことで、データを正しく扱うことができる。
デメリット
- メモリ消費が増える: ワンホットエンコーディングは、カテゴリ数が増えるほどビット数も増えるため、メモリ消費が多くなる可能性がある。
例えで理解するワンホットエンコーディング
ワンホットエンコーディングは「メニューにチェックボックスを使うこと」に似ています。「ピザ」「パスタ」「サラダ」それぞれにチェックボックスを用意し、注文する料理にはチェックを入れるイメージです。各チェックボックスが個別に機能するため、順序を考慮する必要がありません。
ラベルエンコーディングとワンホットエンコーディングの使い分け
ラベルエンコーディングとワンホットエンコーディングは、状況に応じて使い分ける必要があります。
ラベルエンコーディングを使う場合
- カテゴリに順序がある場合(例:等級、ランキングなど)。
- メモリや処理の効率を優先したい場合。
ワンホットエンコーディングを使う場合
- カテゴリに順序がない場合(例:色、性別など)。
- カテゴリ間の関係性を無視したい場合(例:互いに独立したクラス)。
まとめ
今回は、カテゴリ変数の扱い方について学びました。カテゴリデータを機械学習モデルで扱うためには、数値に変換するエンコーディング手法が必要です。ラベルエンコーディングは、カテゴリに整数を割り当てるシンプルな方法ですが、順序がないデータには不向きです。一方、ワンホットエンコーディングは、順序に依存しないデータに適したエンコーディング手法です。状況に応じて適切な手法を選ぶことで、データの特性を正しくモデルに反映させることができます。
次回予告
次回は、テキストデータの前処理について解説します。トークナイゼーション、ステミング、レンマタイゼーションといった手法を使って、テキストデータをどのように整形して機械学習に利用するかを学びましょう。
注釈
- カテゴリ変数: 数値ではなく、ラベルや文字で表現される変数。
- ラベルエンコーディング: カテゴリを整数に変換するエンコーディング手法。
- ワンホットエンコーディング: カテゴリをバイナリベクトルで表すエンコーディング手法。
- 順序データ: カテゴリに大小や順序が存在するデータ。
- 非順序データ: カテゴリ間に順序が存在しないデータ。
コメント