機械学習における特徴の構築と正規化


13

映画Mのロジスティック分類子を作成するとします。私の特徴は、人の年齢、性別、職業、場所などです。したがって、トレーニングセットは次のようになります。

  • 年齢性別職業場所好き(1)/嫌い(0)
  • 23 MソフトウェアUS 1
  • 24 Fドクター英国0

など…。今、私の質問は、自分の機能をどのように拡大縮小して表現するかです。私が考えた1つの方法:年齢グループとして年齢を分けるので、18-25、25-35、35-上記、性別をM、F、場所を米国、英国、その他。ここで、これらすべての値に対してバイナリフィーチャを作成します。したがって、年齢にはそれぞれ年齢グループなどに対応する3つのバイナリフィーチャが含まれます。したがって、米国の28歳の男性は010 10 100(010->年齢グループ25-35、10->男性、100->米国)として表されます。

ここで機能を表す最良の方法は何でしょうか?また、私はいくつかのe.gsで気づきました。sklearnのすべての機能は何らかの方法でスケーリング/正規化されています。たとえば、性別は、男性と女性の0.0045と-.0.0045の2つの値で表されます。私はこのようなスケーリング/整形を行う方法についての手がかりがありませんか?


なぜ機能を拡張したいのかはわかりませんか?多くの場合、フィーチャは平均が0になるように正規化され、標準偏差が0になります。分類しようとしているクラスが何であるかという観点から問題を定義する必要がある場合がありますが、ロジスティック回帰はバイナリ分類に役立ちます。
BGreene

あなたは確かに年齢を分類したくありません。「映画の評価」はどのように測定されますか?それは1から10のスケール、「好き/嫌い」または何ですか?
ピーターフロム-モニカの復職

簡単にするために、LikeとDislikeの2つのクラスしかないと仮定しましょう。1であることが好きで、0であることが嫌いです。これを反映するように問題ステートメントを変更しました。
snow_leopard

回答:


15

バイナリケース

フィーチャをバイナリにしたい場合、カテゴリ値(または実数)の適切な表現は、1つのホット(または温度計)エンコーディングです。あなたはしませんそれらを正規化する必要があります。

カテゴリ機能の1つのホットエンコーディングでは、クラスごとに1ビットを予約するだけです。したがって、このエンコードの長さは、フィーチャのクラスの数です。国の例を見てみましょう。

  • 米国の場合は00001
  • 英国の場合は00010
  • アジアの場合は00100
  • ヨーロッパの場合は01000
  • その他の場合は10000

実数/整数機能の温度計エンコードでは、長さとしきい値を選択する必要があります。年齢の例では、しきい値18、25、および35に従って年齢を分割することを選択しました。コーディングは次のようになります。

  • 0〜17の場合は000
  • 18-25の場合001
  • 25-34の場合011
  • 35以上の場合は111

00010うんK01130yo

連続ケース

00010うんK3030yo

BGreeneが言ったように、この値を正規化して、平均0と標準偏差1を維持し、多くの回帰モデルの安定性を確保する必要があります。それを行うには、単に経験的平均を減算し、経験的標準偏差で除算します。

Y_normalized = ( Y - mean(Y) ) / std(Y)

3025/10=0.5

00010うんK0.530yo

かっこいい...だから、次のような人の例があるとしましょう:国:イギリス、年齢グループ:25-34。これにより、1つのホットエンコーディングを使用する場合、Country:2Agegroup:4の値になります。特徴ベクトルを作成する際に、これらを正規化する必要があります。だから、それらが0.4と0.6として来るとしましょう。そうすると、モデルへの入力特徴ベクトルは本質的に[0.4、0.6]になります、正しいですか?
snow_leopard

うーん。「1つのホット」エンコーディングを使用する場合、エンコーディング値を機能として整数表現に変換する必要があります。たとえば、0010は2になります。または、これを4つの機能セットとして扱います。前者の場合、1000が0001に、さらに0100にさらに遠いという概念を導入しません。これは、米国の特徴値を英国の特徴値、アジアの値、または他の何かに近づけたくないためです。
snow_leopard

これらの点を明確にするために回答を編集しました。バイナリフィーチャを正規化する必要はなく、それらをベクトルとして扱う必要があり、整数に変換しないでください。
エミール

本当に役立つ、明確な説明。ありがとう!
ジョージ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.