機械学習

カテゴリ特徴量の変換方法

投稿日:

こちらを読むと

  • カテゴリ特徴量の代表的な変換方法を知ることができます。
  • それぞれの変換方法の長所・短所が分かります。
  • 記事の所要時間は10分です。

前回の記事で、カテゴリ特徴量が何かを紹介しました。
カテゴリ特徴量は、数値でない選択肢の値で、そのままでは機械学習モデルで扱えません。

そのため、数値データに変換してあげる必要があります。

今回は、カテゴリ特徴量の代表的な変換方法を紹介します。

データ例

ここでは、kaggleのTitanicコンペティションから、

Embarked – 出港地(タイタニックへ乗った港)

を例に挙げます。

Embarkedは、以下の3種類のカテゴリをもつ特徴量です。

内容
CCherbourg
QQueenstown
SSouthampton

データセットの一部を抜粋すると、以下のようになっています。

PassengerIdEmbarked
27C
28Q
29S

One-Hotエンコーディング

One-Hotエンコーディングは前回の記事でも紹介しました。

データ例を変換すると、以下のようになります。

PassengerIdEmbarked_CEmbarked_QEmbarked_S
27100
28010
29001

ダミーコーディング

ダミーコーディングは、One-Hotエンコーディングの冗長性を減らした変換方法です。

PassengerIdEmbarked_CEmbarked_Q
2710
2801
2900

違いは見てもらえばわかると思いますが、変換後の列が1つ少ないです。

Embarked_Sの列がないですが、Embarked_CにもEmbarked_Qにもビットが立っていない(値が1でない)行は、Embarked_Sであると言えます。

このような、列を設けないが、他の列が0であることで表現するカテゴリを、
参照カテゴリと呼びます。

こうやってみるとダミーコーディングは優れているように見えますが、欠損データに弱いという欠点があります。

仮に、カテゴリが記録されていないレコードがある場合、One-Hotエンコーディングでは全列を0にすることで表現できますが、ダミーコーディングではそれができません。

すでに、全列が0という値を、参照カテゴリに使ってしまっているからです。

Effectコーディング

ダミーコーディングの欠点を補ったのが、最後に紹介するEffectコーディングです。

PassengerIdEmbarked_CEmbarked_Q
2710
2801
29-1-1

ダミーコーディングと同様、変換後は2列で表現していますが、値が違います。

ダミーコーディングでは参照カテゴリを0で表現していましたが、Effectコーディングでは-1で表現しています。

一見して、ダミーコーディングよりも分かりやすいですね。
そして欠損データにも対応できています。

ただし、Effectコーディングは表現方法としては万能に見えますが、’-1’のベクトルが密なベクトルであり、記憶容量や計算コストがかかってしまうようです。

変換方法のまとめ

変換方法長所短所
One-Hotエンコーディング欠損データの対応が容易1列分が冗長になっている
ダミーコーディング冗長でない欠損データの対応が難
Effectコーディング冗長でない上に、解釈が容易記憶容量や計算コストがかかる

まとめ

  • カテゴリ特徴量の代表的な変換方法を知ることができました。
  • それぞれの変換方法の長所・短所が分かりました。

この記事で紹介した変換方法は理解が容易で使いやすいです。ただし、膨大なカテゴリ数に対してはうまく機能しなくなります。

カテゴリ数がそこまで大きくない場合は有用なので、ぜひマスターしておきましょう!

Reference

機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践



-機械学習

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

[機械学習] sklearnのグリッドサーチ(Grid Search)について

Table of Contents こちらを読むとグリッドサーチとはグリッドサーチの使い方まとめ こちらを読むと 機械学習のグリッドサーチ(Grid Search)の概要が分かりますsklearnのグ …

多クラスロジスティック回帰⑤ モデル式

Table of Contents こちらを読むとモデルのおさらいモデル出力式の導出(代表値)モデル出力式の導出(全体)まとめReference こちらを読むと 多クラスロジスティック回帰のモデル式の …

[機械学習] sklearnのグリッドサーチ(Grid Search)実装

Table of Contents こちらを読むとやりたいこと実装例まとめReference こちらを読むと sklearnのグリッドサーチ実装例が分かりますグリッドサーチしたベストパラメータの見方が …

scikit-learn load_iris datasetのデータ観察

Table of Contents こちらを読むとデータ観察のソースコード散布図マトリクスの解説散布図の解説まとめReference こちらを読むと scikit-learnのload_iris da …

scikit-learn load_iris datasetのまとめ

Table of Contents こちらを読むと何がしたいかload_iris datasetまとめ こちらを読むと scikit-learnのload_iris datasetについて、詳細が分か …

Twitterフォロー

Twitterタイムライン