【3分で解説!】機械学習・カテゴリ変数は何故One-Hotエンコーディングが必要なの?Pythonのコードあり

■この記事で分かること

  • なぜカテゴリ変数(ダミー変数)を機械学習のアルゴリズムに渡してはいけないか分かる
  • カテゴリ変数の処理方法がわかる
  • Pythonを使ったOne-hot表現の使い方の例が分かる

 

 

メイドの
見習い

カテゴリ変数は、なぜOne-Hotエンコーディングが必要なの?
One-Hotエンコーディングなんてやったらカラム(列)が増えるから計算が面倒になるよ。
ダミー変数(カテゴリ変数を数値化したもの)のまま機械学習のアルゴリズムに渡してはだめなの?

 

メイド長

結論から言うと駄目よ。
カテゴリ変数は、回数や値段の様に連続的な数値じゃないからね。
アルゴリズムにダミー変数を渡したらおかしな値になってしまうから注意が必要ね

 

 

 

この記事では、なぜカテゴリ変数は何故One-Hotエンコーディングが必要なのか

解説します。

 

カテゴリ変数、ダミー変数とは

カテゴリ変数とは?

カテゴリ変数とは

  • 変数の値が「SE、プログラマ、システムアナリスト 」のように数学的に連続の値になっていないもの
  • DBに役割「0:SE 、1:プログラマ 、2:システムアナリスト 」と数値(ダミー変数)が割り振られていた場合も同様でカテゴリ変数とする。
  • ただし、役職「0:アルバイト, 1:正社員,2:リーダ-,3:マネジャー, 4:社長」の場合は、この限りではないようです。

この例だと、値によって年収が増加するため連続値とも言える。

 

ダミー変数

カテゴリー変数を数値に置き換えたもの。

例えば、以下のように「アルバイト,正社員,リーダー,マネージャー,社長」を数値に置き換え、DBのテーブルに格納する変数として使われることが多い。

0:アルバイト

1:正社員

2:リーダー

3:マネージャー

4:社長

 

本題!カテゴリ変数を、なぜ機械学習のアルゴリズムに渡してはいけないの?

DBのテーブルにおいて、int型のカラムに以下の意味の数値が格納されているとします。

0:SE

1:プログラマ

2:システムアナリスト

3:テスター

 

上記の値をそのまま機械学習のアルゴリズム(ロジステック回帰など)に渡して良いのでしょうか?

答えはNGです。

 

なぜなら、「金額」、「回数」、「体重」のように足し算、かけ算が”意味的に”できないからです

カテゴリ変数のままは、以下の意味と考えるとイメージし易いかと思います。

「SE+プログラマ=?」

 

ではカテゴリ変数は、機械学習ではどのように処理したら良いでしょうか?

一つの方法がone-hot表現を使う方法です。

 

\IT未経験者からのサポートあり!転職サービス3選!!/

サービス名
未経験 未経験OK 未経験の転職専用 経験者向け
公開の求人数 ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
未公開 5,000件以上
利用対象 全職種 IT特化 IT特化
特徴 ✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓企業担当者と条件交渉
✓スキルの身につく企業を紹介
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
転職サポート内容
  • 求人検索
  • 企業担当者と交渉
  • 求人紹介
  • ライフプランのサポート
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
公式サイト リクナビネクスト テックゲート レバテックキャリア

 

One-hot表現を使った例

one-hot表現にして0,1データ、つまり「なし(0)」「あり(1)」で表現します。

one-hotのポイントは、カテゴリ変数分のカラムが増えることです。

カテゴリ変数が増えると、カラムが増えるため、計算に時間がかかる、過学習を引き起こしやすいという問題が発生します。

その結果、あまり実務ではあまり使われていない印象です。

解決方法は、主成分分析(PCA)など使った次元圧縮です。

次元圧縮については、以下の記事を参考にしてください。

https://programming-info.dream-target.jp/sklearn-pca

 

Pythonの関数「get_dummies」を使ってOne-hot表現を解説する

では、次にPandasの「get_dummies」関数を使ったPythonの実装例を示します。

get_dummies関数を使うと、カテゴリ変数からダミーカラムを作ってくれるので

簡単です。

 

one-hot表現前

 

one-hot表現後

import pandas as pd
import numpy as np
from IPython.core.display import display

#データを読み込む
df = pd.read_csv('one_hot' + '.csv', header=0) 

print("-----one hot表現する前------")
display(df)

one_hot  = pd.get_dummies(df)
#one_hot = pd.get_dummies(df['支払い種別'])
print("-----one hot表現後------")
display(one_hot)

この記事を書くのに参考になったもの

AIジョブカレの機械学習の授業

AIジョブカレの授業は、実践(実務)向けです。機械学習を学んで稼ぎたい人、AIエンジニアとして転職したい人にとってはオススメといえます。

機械学習の授業の中で、カテゴリ変数の処理方法を学びました。

 

PythonとAI(機械学習)を短期間で学ぶ方法

PythonをAI(機械学習)について、短期間で効率的に学ぶ方法を紹介します。

それは、以下のようなサービス、プログラミングスクールを利用することです。

プログラミングスキルを習得している人でも機械学習の習得は、難しいため、独学で迷うよりは、プロに教えてもらったほうが遥かに最短経路で身につけることができます!

 

スクール名 受講形式 サポート体制 値段の安さ こんな人にオススメ!
.Pro(ドットプロ) 教室 ★★★★★ ★★ ・AIだけでなくWEB開発技術も対面授業を通して直接講師に教えてもらいたい
・教室で仲間と一緒に学びたい!
Aidemy Premium Plan オンライン ★★★★ ★★ ・画像認識・自然言語処理・AIアプリ開発・AIとWEBを組み合わせたシステムなど広範囲の知識を身に着けたい!
・教育訓練給付制度を活用して最大70%引きで学びたい!
AIジョブカレ 教室
オンライン
★★★★ ★★★★★ ・授業形式でAI実務家から直接AIの実務について教えてもらいたい!
・10万円台と低価格で教えてもらいたい!
・ゆっくりペースで学びたい!
テックアカデミー オンライン ★★★★ ★★★★ ・最短8週間!短期間で学び終えるほど料金が安い!
・講座数が多いためAI以外のスキルも学びたい!
ヒューマンアカデミー オンライン ★★★ ★★★★ ・比較的リーズナブルな値段でPython基礎から学びたい
・就職内定率90.7% 提携企業115社以上という就職実績があるスクールで学びたい
Udemy オンライン ★★ ★★★★★ ・一度購入した講座は、Udemyがつぶれない限りずっと見ることができる
・1講座あたり2000円台(セール期間中)で購入して学びたい!

まとめ

以上、カテゴリ変数をone-hot表現に置き換える解説でした。

\IT未経験者からのサポートあり!転職サービス3選!!/

サービス名
未経験 未経験OK 未経験の転職専用 経験者向け
公開の求人数 ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
未公開 5,000件以上
利用対象 全職種 IT特化 IT特化
特徴 ✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓企業担当者と条件交渉
✓スキルの身につく企業を紹介
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
転職サポート内容
  • 求人検索
  • 企業担当者と交渉
  • 求人紹介
  • ライフプランのサポート
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
公式サイト リクナビネクスト テックゲート レバテックキャリア

 

最新情報をチェックしよう!