データ前処理の独熱符号化、ラベル符号化とダミー符号化
6336 ワード
データ分類
我々がモデルを用いて機械学習問題を解決する際,まず重要な過程は特徴に対する前処理である.我々のデータは連続型と離散型に分けることができる.連続型データについては、標準化または正規化するのが一般的です.離散型データについては,one−hot(独熱)符号化に従い,この離散的特徴がどれだけ値をとるか,その特徴を何次元で表すかを基本とする.
ラベルコード(LabelEncoder)
LabelEncoderは、分類された特徴値を符号化するために使用され、すなわち、不連続な数値またはテキストを符号化するために使用される.例えば、人間の性別[male,female]、maleは「0」、femaleは「1」、由来の国[from Europe,from US,from Asia]などの特徴は整数で符号化できる.
LabelEncoderは場合によっては便利ですが、シーンの制限が多いです.例えば、[male,from US]は[0,1],[female,from Asia]は[1,2]と表すことができる.しかし、これらの整数形式の表現は、連続型の入力データを必要とする機械学習アルゴリズムがあるため、同じ列のデータ間の数値の大きさが差の程度を表すことができるため、直接いくつかの機械学習アルゴリズムとして入力することはできない.例えば[0,1]と[0,2]の特徴的な違いは[0,0]と[0,2]の違いよりも大きいが、実際にはそれらの違いは同じで、異なる国から来ている.例えば[dog,cat,dog,mouse,cat]があり,これを[1,2,1,3,2]に変換した.ここで奇妙な現象が発生した:dogとmouseの平均値はcatである.ラベル符号化の広範な使用はまだ発見されていない.
ユニヒートコーディング(OneHotEncoder)
1つの解決策はOneHotEncoderを採用することであり、この表現は各分類特徴変数のm個の可能な取値をm個の二値特徴に変換し、各データのm個の値のうち1個だけが特徴値であり、その他は0である.
回帰,分類,クラスタリングなどの機械学習アルゴリズムでは,特徴間距離の計算や類似度の計算が非常に重要であるが,我々がよく用いる距離や類似度の計算はいずれもヨーロッパ空間での類似度計算であり,余弦類似性の計算はヨーロッパ空間に基づいている.one−hot符号化を用いて,離散的特徴の値を欧州空間に拡張し,特徴間の距離計算をより合理的にする.符号化された特徴は、連続型特徴の正規化方法と同様に、各次元特徴を正規化することができる.次に、sklearnを用いてユニークな符号化を実現する例を挙げる.
import numpy as np
from sklearn import preprocessing
encoder = preprocessing.OneHotEncoder()
encoder.fit([[0, 2, 1, 12], [1, 3, 5, 3], [2, 3, 2, 12], [1, 2, 4, 3]])
encoded_vector = encoder.transform([[2, 3, 5, 3]]).toarray()
print ("
Encoded vector =", encoded_vector )
上記のコードで処理されるのは4次元ベクトル空間であり、各特徴ベクトルの第1の特徴を観察すると、それぞれ0、1、2、1の4つの値であり、そのうち重複数1があるので、独熱符号化ベクトルの長さは3であり、2を符号化する必要がある場合、ベクトルは[0,0,1]である.さらに、各特徴ベクトルの第2の特徴を見ると、それぞれ2、3、3、2、3は重複数であるため、ユニホット符号化ベクトルの長さは2であり、3を符号化するベクトルは[0,1]である.5を符号化し、各特徴ベクトルの3番目の特徴を見ると、それぞれ1、5、2、4であり、重複数字がないため、特徴符号化長は4であり、5を符号化するベクトルは[0、0、0、1]である.同様に,最後の3を符号化するベクトルは[1,0]である.
出力結果は次のとおりです.
Encoded vector = [[0. 0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]]
独熱符号化の利点は,分類器が属性データをうまく処理しないという問題を解決し,ある程度特徴を拡張する役割を果たすことである.値は0と1だけで、異なるタイプは垂直な空間に格納されます.また,カテゴリの数が多いと特徴空間が非常に大きくなるという欠点が明らかである.この場合、一般的にPCAを用いて次元を減らすことができる.またone hot encoding+PCAという組み合わせは実際にも非常に有用である.
ダミーコーディング(DummyEncoding)
ダミー符号化は独熱符号化の考え方とほぼ同じであるが,ダミー変数符号化はone-hot符号化がうるさいと感じているので,明らかなものを省くことができる.このような簡略化は結局良いかどうかは言えませんが、これは使用するシーン次第です.ダミー変数符号化の直感的な解釈は,任意に1つの状態ビットを除去することである.上記の例で5を符号化すると、各特徴ベクトルの3番目の特徴はそれぞれ1、5、2、4であり、それらを符号化するベクトルはそれぞれ1−>[1,0,0,0,0]、2−>[0,1,0,0,0,4−>[0,0,1,0,5−>[0,0,1]であるが、私たちは3つの状態ビットで上記4つのカテゴリの情報を反応させるのに十分であり、すなわち、最初の3つの状態ビット[0,0,0]だけで数字5を表現することができる.