機械学習

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

投稿日:

こちらを読むと

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

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

関連記事

機械学習でのカテゴリ特徴量の扱いについて

Table of Contents こちらを読むとカテゴリ特徴量とはカテゴリ特徴量の例カテゴリ特徴量は機械学習モデルで扱えないカテゴリ特徴量の変換例まとめ こちらを読むと カテゴリ特徴量とは何か?が分 …

機械学習初心者のための入門本ランキング

Table of Contents こちらを読むと評価基準第1位:ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装第2位:Pythonで動かして学ぶ! あたら …

多クラスロジスティック回帰①

Table of Contents こちらを読むと多クラスロジスティック回帰とは何が嬉しいか多クラス分類モデルソフトマックス関数まとめReference こちらを読むと 機械学習多クラスロジスティック …

kaggleのKernelでGPUを使うには

Table of Contents こちらを読むとはじめにKernelの設定まとめ こちらを読むと kaggleのKernelでGPUを使う方法が分かります。記事の所要時間は5分です。 はじめに ka …

ロジスティック回帰④ 勾配法その2

Table of Contents こちらを読むと勾配法の式のおさらい勾配法の式変形シグモイド関数の微分を用いて式変形パラメータの更新式まとめReference こちらを読むと ロジスティック回帰の勾 …

Twitterフォロー

Twitterタイムライン