カテゴリ変数を多くのレベルで折りたたむ原理的な方法は?


58

統計モデルの入力(予測子)として使用するために、多くのカテゴリを少数に折りたたむ(またはプールする)ために使用できるテクニックは何ですか?


大学生(学部生が選択した専門分野)などの変数を考えてみましょう。順不同でカテゴリに分類されますが、潜在的に数十の異なるレベルを持つことができます。回帰モデルの予測子としてmajorを使用するとします。

これらのレベルをそのままモデリングに使用すると、非常に多くのレベルがあるため、あらゆる種類の問題が発生します。それらを使用するために多くの統計的精度が捨てられ、結果を解釈するのは困難です。特定の専攻に興味を持つことはめったにありません。専攻の幅広いカテゴリ(サブグループ)に興味を持つ可能性がはるかに高くなります。しかし、レベルをそのような上位レベルのカテゴリに分割する方法や、使用する上位レベルのカテゴリの数さえも必ずしも明確ではありません。

典型的なデータについては、因子分析、行列因子分解、または離散潜在モデリング手法を使用して満足です。しかし、メジャーは相互に排他的なカテゴリであるため、私はそれらの共分散をあらゆるものに活用することにheしています。

さらに、私は主要なカテゴリー自体を気にしません。回帰結果に関して一貫性のある高レベルのカテゴリを作成することに関心があります。バイナリ結果の場合、線形判別分析(LDA)のようなものが示唆され、識別パフォーマンスを最大化するより高いレベルのカテゴリを生成します。しかし、LDAは限られた手法であり、ダーティデータがdrするように感じます。さらに、継続的なソリューションを解釈するのは困難です。

一方、多重分散分析(MCA)のような共分散に基づくものは、相互排他的なダミー変数間の固有の依存性のため、この場合は疑わしいようです-それらは、複数のカテゴリ変数よりも複数のカテゴリ変数の研究に適しています同じ変数。

編集:明確にするために、これはカテゴリを折りたたむ(それらを選択しない)ことであり、カテゴリは予測変数または独立変数です。後から考えると、この問題は「すべてを正規化し、神にそれらを整理させる」適切な時期のようです。この質問を見てうれしいことは、多くの人にとって興味深いことです!


2
stats.stackexchange.com/questions/230636/での私のコメント には、ここに同様の質問の長いリストがあります!ご覧ください...また、「多くのレベル」というキーワードでこのサイトを検索すると、似たような質問が多く、良い答えはほとんど見つかりません。
kjetil bハルヴォルセン

3
時間があるときにこれに戻ります...その間、次は質問に答えているように思える非常に関連性の高い論文です: epub.ub.uni-muenchen.de/12164/1/petry_etal_TR102_2011。 pdf
kjetil bハルヴォルセン

2
私は質問を受け取らないと思います、私の自然な衝動は実際にダミー変数を追加して階層をエンコードし(おそらく考えられる限り多くの異なる階層)、そしてL1 / L2正規化を使用してトップレベルのカテゴリを確保することですより細かいレベルのカテゴリではなく、選択されます。メジャーなどの問題は、(ダミー変数として表される場合)明らかに類似性がないため、(一般化を可能にする)良好なモデルを取得するには、その類似性を提供する必要があります
-seanv507

1
@ssdecontrol、そう、私の典型的な例は電話番号(または他のID)です。基本的にこれらを使用してモデル化する方法を尋ねられたときの正しい答えは-しないでください!
seanv507

2
階層を推測する場合は、ニューラルネットワークの埋め込みスキームを調べることができます。基本的に、カテゴリとモデルの残りの部分との間でニューロンの削減セットを使用するため、モデルは解く際に同様のカテゴリの線形投影を見つける必要があります。それは本質的に、因数分解マシンの線形化されていないバージョンです。tensorflow.org/guide/embedding
seanv507

回答:


41

私が正しく理解していれば、予測子の1つがカテゴリカルである線形モデルを想像します(大学専攻など)。また、そのレベルの一部のサブグループ(カテゴリのサブグループ)については、係数がまったく同じになる可能性があります。したがって、おそらく数学と物理学の回帰係数は同じですが、化学と生物学の回帰係数とは異なります。

yij=μ+αi+ϵij,
i
{α1=α2,α3=α4=α5.

L=ωi<j|αiαj|.
αiαjω

私はそのようなモデルを扱ったことがないので、上記が最初に思い浮かんだことです。次に、そのようなものが実装されているかどうかを確認することにしました。私はいくつかのグーグル検索を行いましたが、すぐにこれがカテゴリーの融合と呼ばれることに気付きました。を検索するlasso fusion categoricalと、読むべき多くの参照が得られます。ここに私が簡単に見たいくつかがあります:

Annals of Applied Statisticsに掲載されているGertheiss and Tutz 2010は、他の参考文献を含む最近の非常に読みやすい論文のように見えます。以下がその要約です。

L1

正則化の強度が上がると、2つのカテゴリ変数のレベルがどのようにマージされるかを示すLassoのようなソリューションパスが好きです。

Gertheiss and Tutz 2010


1
そして、唯一私が@Kjetilはすでに一週間前Tutzの論文の1へのリンクを与えたことに気づいたことすべてを...書いた後
アメーバは回復モニカ言う

1
これに関する文献を掘り下げてくれてありがとう!これは特に、私が検索することができ、この手法(「融合」)の名前を持つ、間違いなく良い出発点である
shadowtalker

10

私が取り組んでいるプロジェクトでこれに取り組んできましたが、この時点でカテゴリを融合する良い方法は本当にないと判断したので、階層/混合効果モデルを試していますあなたの専攻に相当するのはランダム効果です。

また、このような状況では、実際には2つの決定を行う必要があります。1)モデルの適合時にカテゴリを融合する方法、2)どの融合カテゴリがデフォルトで「その他」になるのかモデルに適合した後に誰かが夢見る専攻。(ランダム効果は、この2番目のケースを自動的に処理できます。)

(完全に自動化された手順とは対照的に)フュージングに何らかの判断が含まれる場合、私は「その他」のカテゴリに懐疑的です。

ランダム効果は多くのレベルを処理し、異なるレベルを動的にプール(「強度を引き出す」)、以前は見えなかったレベルなどを予測できます。1つの欠点は、レベルの分布がほぼ常に正規であると想定されることです。


1
クラスタ化する距離行列として近接行列の使用を検討しましたか?stats.stackexchange.com/questions/270201/…
キース

7

Zz1,...,zKYZImpact(Z)

Impact(zk)=E(Y | Z=zk)E(Y)

YYlogitEE

category_encodersライブラリにはPython実装があります [2]。

「インパクトコーディング」と呼ばれるバリアントがRパッケージVtreat [3] [4]に実装されました。パッケージ(およびインパクトコーディング自体)は、2016年の著者による記事 [5]およびいくつかのブログ投稿[6]で説明されています。現在のR実装では、多項(2つ以上のカテゴリを持つカテゴリ)応答または多変量(ベクトル値)応答を処理しないことに注意してください。

  1. ダニエル・ミッキー・バレカ(2001)。分類および予測問題における高カーディナリティーのカテゴリー属性の前処理スキーム。ACM SIGKDD Explorations Newsletter、Volume 3、Issue 1、2001年7月、27〜32ページ。https://doi.org/10.1145/507533.507538
  2. カテゴリーエンコーダー。http://contrib.scikit-learn.org/categorical-encoding/index.html
  3. ジョン・マウントとニーナ・ズメル(2017)。vtreat:統計的に健全な 'data.frame'プロセッサ/コンディショナー。Rパッケージバージョン0.5.32。 https://CRAN.R-project.org/package=vtreat
  4. Win-Vector(2017)。vtreat。https://github.com/WinVector/vtreatの GitHubリポジトリ
  5. ズメル、ニーナ、マウント、ジョン(2016)。vtreat:予測モデリング用のdata.frameプロセッサ。1611.09477v3、ArXiv e- prints 。https://arxiv.org/abs/1611.09477v3で入手できます
  6. http://www.win-vector.com/blog/tag/vtreat/

ロジットEとは?数式自体を共有していただけますか?
オプティマスプライム

@OptimusPrimeロジットEは期待のロジットです
-shadowtalker

はい。そのため、その場合、Impact(zk)= log(E(Y | Z = zk)−E(Y))OR Impact(zk)= log(E(Y | Z = zk))− log(E(Y) )?
オプティマスプライム

2
この教師あり学習で、Yから「盗まれた」されている自由度の数を認識するために、複雑な調整がかかります
フランク・ハレル

3
確かに、Yを使用してカテゴリカル予測子のカテゴリの処理方法をガイドする方法は、過剰適合の対象となり、不確実な間隔を十分に正確に確保することは困難です。これらの問題が発生しないように、私は教師なし学習に焦点を合わせていました。
フランクハレル

6

カテゴリカル予測子のアンカーとして使用する論理的な補助独立変数がある場合は、線形判別分析に関連するフィッシャーの最適スコアリングアルゴリズムの使用を検討してください。大学の専攻を単一の連続した測定基準にマッピングし、適切なアンカーが入学前のSAT定量テストスコアであると仮定します。各メジャーの平均定量スコアを計算し、メジャーをその平均に置き換えます。これを複数のアンカーに簡単に拡張して、メジャーを要約する複数の自由度を作成できます。

以前のいくつかの提案とは異なり、最適なスコアリングは教師なし学習アプローチを表すため、自由度(Yに対して推定されるパラメーターの数)は少なく、適切に定義されており、適切な統計的推論(頻繁に、正確な標準誤差、信頼性(互換性)間隔、およびp値)。

私はhttps://stats.stackexchange.com/users/28666/amoeba @amoeba による罰則の提案と非常によく似ています


私の質問stats.stackexchange.com/q/383887/44368をご覧になるほど親切になりますか?ありがとうございました。
ハンス

この講義のスライド15に記載されている方法のスコアリングは最適ですか?これらの用語を検索するのは少し難しいですが、それらはすべて他のコンテキストでは一般的です。
シャドウトーカー

1
確かに0.85です
フランクハレル

これは、たとえばstats.stackexchange.com/questions/398903/…のように、機械学習からのターゲットエンコーディングのアイデアの(より良い)バージョンのように聞こえます
kjetil b halvorsen

2

論文「分類および予測問題における高カーディナリティーのカテゴリー属性の前処理スキーム」では、各プール/レベルでネストされた「経験的ベイズ」スキームのカテゴリー属性の階層構造を活用して、カテゴリー変数を事後クラス確率にマッピングします。直接または他のモデルへの入力として使用できます。


これは基本的に、@ Wayneが提案したもの(混合効果モデル〜ベイジアン階層モデルの頻繁なバージョン)であり、私は質問へのコメントで提案したものです。ただし、OPは階層を推測したいと考えています。
seanv507

1

ここには複数の質問があり、そのうちのいくつかは以前に質問と回答があります。問題が計算に時間がかかる場合:それに対処する方法は複数あります。スパースフィーチャマトリックス を使用した大規模回帰と、Maechler and Batesの論文参照してください。

しかし、問題はモデリングにある可能性があります。カテゴリ予測変数を処理する通常の方法が、非常に多くのレベルのカテゴリ変数を持っているときに本当に十分なガイダンスを提供するかどうかはわかりません[many-categories]。このサイトのタグを参照してください。確かに多くの方法があります(これがあなたの例にとって良いアイデアである場合、特定のアプリケーションを教えていない場合)、一種の階層カテゴリ変数、つまり、インスピレーションを受けます生物学的分類で使用されるシステム別、https://en.wikipedia.org/wiki/Taxonomy_(biology)を参照。そこでは、個人(植物または動物)が最初にドメインに分類され、次に王国、門、クラス、秩序、家族、属、最後に種に分類されます。したがって、分類の各レベルに対して、因子変数を作成できます。たとえば、レベルがスーパーマーケットで販売されている製品の場合、[食料品、台所用品、その他]で始まる階層分類を作成し、次に食料品を[肉、魚、野菜、穀物、...]として分類できます。など。単に可能性。これは、結果に特に関連していない、以前の階層を提供します。

しかし、あなたは言った:

私は回帰結果に関して一貫性のある高レベルのカテゴリを作成することに関心があります。

次に、融合した投げ縄を試してみてください。このスレッドの他の回答を参照してくださいレベルの構成。

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