19

k 最近傍回帰を含むプロジェクトに取り組んでいます。数値フィールドとカテゴリ フィールドが混在しています。カテゴリ値は序数です (銀行名、口座タイプなど)。数値型は、たとえば給与や年齢です。また、いくつかのバイナリ タイプ (男性、女性など) もあります。

KNN 分析にカテゴリ値を組み込むにはどうすればよいですか?

私の知る限り、各カテゴリ フィールドを数値キーに単純にマップすることはできない (例: バンク 1 = 1、バンク 2 = 2 など) ため、カテゴリ フィールドを使用するためのより良いアプローチが必要です。2 進数を使用できると聞きましたが、これは実行可能な方法ですか? アドバイスをいただければ幸いです。

4

3 に答える 3

22

データに適した距離関数を見つける必要があります。2 進標識変数を使用すると、この問題が暗黙のうちに解決されます。これには、おそらく行列ベースの実装をこの種のデータで継続できるという利点がありますが、より簡単な方法 (ほとんどの距離ベースの方法に適しています) は、変更された距離関数を使用することです。

このような組み合わせは無数にあります。どちらが自分に最適か実験する必要があります。基本的に、数値に古典的なメトリック (通常は正規化が適用されますが、この正規化を距離関数に移動することも理にかなっている場合があります) に加えて、適切にスケーリングされた他の属性の距離を使用することができます。

距離ベースのアルゴリズムのほとんどの実際のアプリケーション ドメインでは、これが最も難しい部分であり、ドメイン固有の距離関数を最適化します。これは前処理の一部として見ることができます: 類似性の定義。

ユークリッド距離だけではありません。あなたの場合には、はるかに適切なさまざまなセット理論的尺度があります。例えば、谷本係数、ジャカード類似度、ダイス係数など。コサインもオプションかもしれません。

類似性検索のトピックに特化した会議全体があります-これがユークリッドベクトル空間以外では些細なことであると主張した人は誰もいません(実際には、そこにさえありません): http://www.sisap.org/2012

于 2012-11-30T07:57:26.353 に答える
1

カテゴリ データを数値に変換する最も簡単な方法は、インジケーター ベクトルを使用することです。以前のコメントで投稿した参照を参照してください。

于 2012-11-30T07:32:13.443 に答える