【初心者向け】文字を数字に変える魔法!ダミー変数とone-hotベクトルの関係を完全攻略
こんにちは。ゆうせいです。
あなたは普段、パソコンやスマホで文章を入力しますよね?
でも実は、コンピュータというのは言葉の意味をそのまま理解することができません。コンピュータの脳みそは、数字でしか物事を考えられないのです。
では、私たちが使う「日本語」や「英語」といった言葉のデータを、どうやってAIやコンピュータに分析させているのでしょうか?
ここで登場するのが、言葉を数字に変換する翻訳技術です。
今回は、データ分析やAI学習で避けては通れないダミー変数とone-hotベクトルという2つの翻訳テクニックについて、一緒に学んでいきましょう!
高校生でもわかるように、数式よりもイメージを大切にしてお話ししますね。
コンピュータは「言葉」が苦手?
まず、なぜこんな変換が必要なのかを少しだけ整理しましょう。
たとえば、あなたが「好きなフルーツ」のアンケートデータを分析するとします。
手元にはこんなデータがあります。
- りんご
- みかん
- ぶどう
人間なら「ああ、3種類の果物があるな」とすぐわかりますよね。でも、コンピュータにこのままデータを渡しても、「りんごって何?数字じゃないから計算できないよ!」とエラーを吐いてしまいます。
そこで私たちは、この「りんご」や「みかん」というカテゴリー(分類)を、コンピュータが好む「0」や「1」といった数字に置き換えてあげる必要があります。
この置き換え作業の方法として有名なのが、ダミー変数とone-hotベクトルなんです。
ダミー変数とは?「引き算」の考え方
まずは、ダミー変数から見ていきましょう。
これは統計学の世界でよく使われる手法です。
ダミー変数の特徴は、カテゴリーの数から を引いた数の列を作るという点にあります。
具体例で見てみよう
先ほどのフルーツ(りんご、みかん、ぶどう)をダミー変数に変換してみます。
ここでのポイントは、基準となるフルーツを1つ決めて、それは「全部の列が 」で表現するということです。
たとえば、「ぶどう」を基準(ベース)にしてみましょう。
| 元のデータ | りんごフラグ | みかんフラグ |
| りんご | ||
| みかん | ||
| ぶどう |
見てください!「ぶどう」を表す列がありませんよね?
でも大丈夫なんです。
- りんごフラグが
なら、それは「りんご」。
- みかんフラグが
なら、それは「みかん」。
- どっちも
なら……? そう、消去法で「ぶどう」だとわかりますよね!
このように、あえて1つの列を省略することで、データの無駄を省くのがダミー変数の賢いところです。
one-hotベクトルとは?「スイッチ」の考え方
次に、機械学習やディープラーニング(AI)の世界でよく使われるone-hot(ワンホット)ベクトルについて解説します。
こちらはもっと直感的です。
すべてのカテゴリーの数だけ列を作るのが特徴です。
どれか1つだけが「ホット( 、つまり電流が流れている状態)」になる、というイメージを持ってください。
具体例で見てみよう
同じフルーツのデータをone-hotベクトルにしてみましょう。
| 元のデータ | りんご | みかん | ぶどう |
| りんご | |||
| みかん | |||
| ぶどう |
今度は「ぶどう」の列もしっかり存在していますね。
「りんご」のときは、りんごの列だけが になり、他はすべて
になります。
2つの違いは「列の数」と「使い道」
さて、ここまでの話を聞いて、「結局どっちを使えばいいの?」と疑問に思いませんか?
実は、これらは使う目的によって明確な使い分けがあるんです。
なぜダミー変数は1つ減らすの?
統計学的な分析(回帰分析など)をする場合、one-hotベクトルのように全ての列を作ってしまうと、計算上の不都合が起きることがあります。これを専門用語で多重共線性(マルチコ)と呼びます。
簡単に言うと、「ヒントが多すぎて、計算の答えが一つに定まらなくなる」という現象です。
「りんごじゃない、かつ、みかんじゃない」と言えば「ぶどう」だと確定するのに、わざわざ「ぶどうである」という情報を足すと、情報が重複してしまうんですね。
だから、従来の統計分析ではダミー変数(列を つ減らす)が好まれます。
なぜAIはone-hotを好むの?
一方で、ニューラルネットワークなどのAI技術では、情報が重複していてもあまり気にしません。
むしろ、特定のカテゴリー(この場合はぶどう)だけ「全部 」という扱いにしてしまうと、ぶどうだけ学習の重み付けが均等でなくなってしまうリスクがあります。
すべてのカテゴリーを平等に扱いたいAIの学習では、one-hotベクトル(列を減らさない)が標準的に使われます。
メリットとデメリットのまとめ
ここで一度、表を使って整理しておきましょう。
| 特徴 | ダミー変数 | one-hotベクトル |
| 列の数 | カテゴリー数 | カテゴリー数そのまま |
| 主な用途 | 回帰分析、統計解析 | ディープラーニング、機械学習 |
| メリット | 情報の重複(多重共線性)を防げる。 | すべてのカテゴリーを平等に扱える。 |
| デメリット | 基準(全て | カテゴリーが多いと、データの列数が爆発的に増える。 |
もしあなたが「都道府県」をone-hotベクトルに変換しようとしたらどうなると思いますか?
北海道から沖縄まで、なんと 個もの列ができてしまいます!データが横に長くなりすぎて、計算に時間がかかってしまうこともあるんです。これを「次元の呪い」なんて呼んだりします。かっこいい名前ですが、厄介な問題です。
今後の学習の指針
いかがでしたか?
文字を数字に変えるだけでも、実に奥深い工夫がされていることに気づいていただけたなら嬉しいです。
最後に、これからあなたがどう学習を進めればよいか、少しだけアドバイスさせてください。
- Pythonで実際に変換してみる「Pandas」というライブラリを使えば、get_dummiesという命令一つで簡単に変換できます。実際に手を動かすのが一番の近道です。
- 回帰分析を試してみるダミー変数を使って、例えば「天候(晴れ・雨)」が「売上」にどう影響するかを分析してみてください。
- エンコーディングの種類を知る実はこれ以外にも「Label Encoding」や「Target Encoding」など、変換方法はたくさんあります。興味が出てきたら調べてみてくださいね。
データ分析は、まずデータを「コンピュータが読める言葉」に翻訳するところから始まります。
あなたも今日から、データの翻訳家としての第一歩を踏み出してみてくださいね!
それでは、また次の記事でお会いしましょう。
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。