カテゴリ変数とは
カテゴリ変数の値は、相互に排他的なカテゴリまたはグループです。
論理的順序がある場合とそうでない場合とがあります。
カテゴリ変数の例:
- テキスト
- 支払方法(現金またはクレジットカード)
- 機械設定(低、中、高)
- 製品タイプ(木製、プラスティック製、金属製)
- 数値
- 性別(1=男性、2=女性)
- 調査結果(1=そう思う、2=どちらでもない、3=そう思わない)
- 日付
- 曜日(月、火、水)
- 月(1月、2月、3月)
なぜ加工が必要か
カテゴリ変数は、多くの機械学習のモデルでそのままインプットできず、モデルごとに適した形へ加工する必要があります。
加工前の注意点
テストデータにのみ存在するカテゴリ
テストデータにのみ存在するカテゴリが存在する場合、
そのレコードについて変換中にエラーが発生したり、予測値がおかしくなってしまう可能性があります。
このようなカテゴリがある場合以下の対応が考えられます。
- そのままにする(該当レコードが少なく、予測スコアにほとんど影響を与えない場合)
- 最頻値や予測値によって補完する
- 変換における平均といえる値にする
順序変数
順序変数は、値の順序に意味があり、値の間隔に意味がない変数です。
例えば順位(1位、2位、3位)や評価(A、B、C)などです。
決定木系のモデルは変数の順序にしか依存しないので、そのまま整数に変換して扱えば良い。
数値変数として扱うか、順序の情報を無視してカテゴリ変数として扱うか、モデルによって判断が必要です。
カテゴリ変数の値の意味
カテゴリ変数の値に意味を持っている場合、単にencodingしてしまうとその情報が消えてしまいます。
例えば以下の場合注意が必要です。
- ABC-00123やDEF-00456の場合、前3文字と後5文字に分割する
- 1,2,3,Aのように数字・英字が混じっている場合、数字か否かを特徴量とする
- AB,CDE,FGHIのように文字数が違う場合、文字数を特徴量とするなど
カテゴリ変数の加工方法
- one-hot encoding
- label encoding
- feature hashing
- frequency encoding
- targe encoding
- embedding