機能エンジニアリングが機能する理由


20

最近、MLの問題に対するより良い解決策を見つける方法の1つが、機能の作成によることであることを学びました。たとえば、2つの機能を合計することにより、これを行うことができます。

たとえば、ある種のヒーローの「攻撃」と「防御」という2つの機能があります。次に「攻撃」と「防御」の合計である「合計」と呼ばれる追加機能を作成します。奇妙に見えるのは、厳しい「攻撃」と「防御」でさえ、「合計」とほぼ完全に相関しているということです。

その背後にある数学は何ですか?それとも、私が間違っていると推論していますか?

さらに、kNNなどの分類子にとって、「合計」は常に「攻撃」または「防御」よりも大きいということは問題ではありませんか?したがって、標準化した後でも、異なる範囲の値を含む機能がありますか?


2つの機能を合計することは、一般に「機能エンジニアリング」を表すものではありません。
xji

回答:


21

あなたはタイトルに質問し、コンテンツは私には不一致のようです。線形モデルを使用している場合、攻撃と防御に加えて全体的な機能を追加すると事態が悪化します。

まず、機能エンジニアリングが一般的に機能する理由をお答えします。

写真は千の言葉に値します。この図は、機能エンジニアリングに関するいくつかの洞察とそれが機能する理由を示している可能性があります(画像ソース)。

ここに画像の説明を入力してください

  • デカルト座標のデータはより複雑であり、2つのタイプを分類するためのルールの作成/モデルの構築は比較的困難です。

  • 極座標のデータは非常に簡単です。2つのタイプを分類する単純なルールをに記述できます。r

これは、データの表現が重要であることを示しています。特定のスペースでは、他のスペースよりも特定のタスクを実行する方がはるかに簡単です。

ここで、あなたの例で述べた質問に答えます(攻撃と防御の合計)

実際、この攻撃と防御の例で述べた機能エンジニアリングは、線形モデルなどの多くのモデルではうまく機能せず、いくつかの問題を引き起こします。Multicollinearityを参照してください。一方、このような機能エンジニアリングは、決定木/ランダムフォレストなどの他のモデルで機能する場合があります。詳細については、@ Imranの回答を参照してください。

したがって、答えは、使用するモデルによっては、一部の機能エンジニアリングは一部のモデルで役立ちますが、他のモデルでは役立たないということです。


合計は、加数と同一直線である必要はありません。たとえば私の答えを参照してください。
Kodiologist

15

使用しているモデルのタイプは、既存の機能の特定の組み合わせを学習するのにあまり効率的ではない場合があります。

ad0a+d<01a+d0

決定木は個々の機能軸に沿ってのみ分割できるため、モデルは最終的に次のような線に合うように階段を構築しようとします。

ここに画像の説明を入力してください

ご覧のとおり、これは新しいデータに完全に一般化されません。決定境界の下にある真の決定線の上に円を置くことができます。

ただし、a+d機能として追加すると、決定木にとって問題は簡単になります。個人ad機能を無視して、単一のa+d<0決定切り株で問題を解決できます。

ここに画像の説明を入力してください

a+d

要約すると、使用しているモデルのタイプに応じて特定の追加機能が役立ちます。機能を設計するときは、データとモデルの両方を慎重に検討する必要があります。


1
これがまさにポイントです。機能の選択とモデルの選択を一緒に検討する必要があります。使用されているモデルのタイプを考慮せずに、機能の選択について試行および推論することはよくある落とし穴です。
イムラン

1
たとえば、あなたがして、線形回帰と同じことをしようとした場合ad十分であろうと、追加a+d機能としては違いをすることはないだろう。
イムラン

これをより明確にするために回答を更新しました。
イムラン

1
さらに、対角線を横切る分割には1つの分割が必要です。あなたが描いた階段は、7つのスプリットを「使い果たします」。
蓄積

3

totaltotalattackdefenseattackdefensetotalattacktotaldefense17

さらに、kNNなどの分類子にとって、「合計」は常に「攻撃」または「防御」よりも大きいということは問題ではありませんか?したがって、標準化した後でも、異なる範囲の値を含む機能がありますか?

予測変数を標準化する場合は、すべての予測子を作成した後に実行する必要があります。


1
これは本当ですか?確かに、単純な線形モデルではそうではありません。行列[attack, defense, total]はもちろんランク2です。罰則付き線形モデルのようなものでは違いが生じると想像できますが、それは完全に機能するのではなく直感に基づいています。なぜならば、あなたは説明できますattackし、defense強力に相関していないtotal(ときたまたまattackdefense、なぜ強く負相関している)total役立つことができますか?
クリフAB

1
@CliffAB後知恵では、私はここで少し不機嫌でした。私は右のそれが強く、他の予測因子と相関していないときに構築機能が有用であることを言っていた、そのtotal必要性を強くと関連付けられることはありませんattackdefense、しかし、あなたはので、線形の、同じモデルで2つの予測因子とそれらの和を使用することはありませんでしょう依存関係は、3つのうちの 2つの間の強い相関を意味します。
コディオロジスト

1

一般的な答えを出すために、ほとんどの場合、機能エンジニアリングはデータから意味のある機能を抽出することです。したがって、モデルにより多くの情報を与えれば、明らかに動作が向上するはずです。データが「name.surname@domain.country-code」という形式の電子メールアドレスで構成されているとします。モデルでそれらをそのまま使用した場合、各人は一意の電子メールで特徴付けられるため、これはあまりわかりません。1つの電子メールが別の人に属している可能性があることだけを教えてくれます。機能エンジニアリングを使用すると、このようなアドレスから、性別(名前)、家族の背景と民族(姓)、国籍(ドメイン)などに関する情報を抽出できます-かなりの情報が得られますよね?


1

「機能」合計で何を達成しようとしていますか?単にヒーローを比較するだけなら、攻撃して防御がより役立つかもしれません。ビルドのタイプ(攻撃指向と防御指向)が有用であるとわかった場合、おそらく攻撃 / 防御がより役立つでしょう。または、多分MyAttack - YourDefenseの方が便利です。

それは本当にあなたの目標に依存し、それはあなたがより良い答えを得ることができるように問題に追加の知識を注入することに要約されます。周りに人が投げるのを聞いたことがあるログ二乗比率、機能を作成するためのあらゆる方法をが、「有用」は手元のタスクに依存し、持っているデータを意思決定のあるドメインに変換することですよりシンプル。

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