データプリプロセッシングのユニサーマルコーディング(OneHotEncoder)

12673 ワード

ユニヒートコード(One-Hot)とは?One-Hot符号化は、1ビット有効符号化とも呼ばれ、主にNビット状態レジスタを用いてN個の状態を符号化し、各状態は独立したレジスタビットであり、いつでも1ビットしか有効ではない.One-Hot符号化は分類変数をバイナリベクトルとして表す.これは、まず分類値を整数値にマッピングする必要があります.その後、各整数値はバイナリベクトルとして表され、整数のインデックスを除いてゼロ値であり、1としてマークされる.多くの機械学習タスクでは,特徴は常に連続値ではなく,分類値である可能性がある.
次の3つの特徴を考慮します.
["male", "female"]
 
["from Europe", "from US", "from Asia"]
 
["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"]

上記の特徴を数値で表すと、効率が非常に高くなります.たとえば、次のようになります.
["male", "from US", "uses Internet Explorer"]  [0, 1, 3]
 
["female", "from Asia", "uses Chrome"] [1, 2, 1]

しかし、数値表示に変換すると、上記のデータは分類器に直接使用できません.なぜなら、分類器は、デフォルトのデータが連続し、秩序化されていることが多いからです.しかし、上記で表される数字は秩序化されておらず、ランダムに割り当てられている.上記の問題を解決する1つの方法はOne-Hot Encodingを採用することである.One-Hot Encodingは、Nビット状態レジスタを用いてN個の状態を符号化し、各状態に独立したレジスタビットがあり、いずれの場合も1ビットのみ有効である.
たとえば
000,001,010,011,100,101000001,000010,000100,001000,010000,100000
 

各フィーチャーについてm個の可能な値がある場合、One-Hot Encodingを経てm個の二元フィーチャーになります.さらに,これらの特徴は反発し,毎回1つだけアクティブ化される.そのため、データはまばらになります.このような利点:分類器が属性データをうまく処理しないという問題を解決し、ある程度特徴を拡張する役割を果たす独熱符号化の欠点カテゴリの数が多いと、特徴空間が非常に大きくなる.この場合、一般的にPCAを用いて次元を減らすことができる.またone hot encoding+PCAという組み合わせは実際にも非常に有用である.
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) # Encoded vector = [[ 0. 0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]] # : 4 : ( ) [0,1,2,1][0,1,2] One-Hot Code [0,1,2] :[100,010,001] [2,3] [10,01] 4 [1,2,4,5] [1000,0100,0010,0001] 2 [3,12] [10,01] [2,3,5,3] [0,0,1,0,1,0,0,0,1,1,0]

一、どうして独熱符号化するの?1,ユニヒートコーディング(大部分のアルゴリズムはベクトル空間におけるメトリックに基づいて計算されるため、非オフセット関係の変数の値がオフセット性を持たず、原点まで等距離であるようにする.離散型の特徴をone-hot符号化すると、確かに特徴間の距離計算がより合理的になる.例えば、作業タイプを表す離散型の特徴があり、この離散型の特徴は、合計3つの値をとり、one-hot符号化を用いず、その表現はそれぞれx_1 = (1), x_2 = (2), x_3 = (3).2つの動作間の距離は,(x_1,x_2)=1,d(x_2,x_3)=1,d(x_1,x_3)=2である.ではx_1とx_3仕事の間で似ていませんか.明らかにこのような表現は,計算された特徴の距離が不合理である.one-hot符号化を用いるとx_が得られる1 = (1, 0, 0), x_2 = (0, 1, 0), x_3=(0,0,1)では、2つの作業間の距離はいずれもsqrt(2)である.つまり、2つの仕事の間の距離は同じで、もっと合理的に見えます.one−hot符号化を用いて,離散特徴の取値を欧州空間に拡張し,離散特徴のある取値は欧州空間のある点に対応する.離散型フィーチャーをone-hot符号化すると,フィーチャー間の距離計算がより合理的になる.離散的特徴をone-hot符号化した後,符号化後の特徴は,実は各次元の特徴が連続的な特徴と見なすことができる.連続型の特徴の正規化方法と同様に,各次元の特徴を正規化することができる.例えば,[−1,1]に正規化するか,平均値が0,分散が1に正規化する.2,なぜ特徴ベクトルがヨーロッパ空間にマッピングされるのか.離散的特徴をone−hot符号化により欧州空間にマッピングするのは,回帰,分類,クラスタリングなどの機械学習アルゴリズムにおいて,特徴間距離の計算や類似度の計算が非常に重要であり,我々がよく用いる距離や類似度の計算はいずれも欧州空間での類似度計算であり,余弦類似性の計算は,欧州空間に基づいているからである.
一部転載先https://blog.csdn.net/m0_38052384/article/details/102738001