機械学習で疎データと密データを結合してパフォーマンスを改善する


17

予測可能なスパースな特徴があり、また予測的ないくつかの濃い特徴があります。これらの機能を組み合わせて、分類器の全体的なパフォーマンスを改善する必要があります。

今、これらを一緒にしようとすると、密な特徴が疎な特徴よりも支配する傾向があるため、密な特徴のみのモデルと比較してAUCが1%しか改善されません。

誰かが同様の問題に遭遇しましたか?入力を本当に感謝します。私はすでに多くの異なる分類器、分類器の組み合わせ、特徴変換、異なるアルゴリズムでの処理を試しました。

助けてくれてありがとう。

編集

私はすでにコメントに記載されている提案を試しました。私が観察したのは、データのほぼ45%でスパースフィーチャが非常によく機能し、スパースフィーチャのみで約0.9のAUCが得られることですが、残りのものでは約0.75のAUCで密なフィーチャが良好に機能します。これらのデータセットを分離しようとしましたが、AUCが0.6になるため、モデルを単純にトレーニングして使用する機能を決定することはできません。

コードスニペットに関して、私は非常に多くのことを試しましたので、何を正確に共有すべきかわかりません:(


あなたの機能はどれくらいまばらですか?それらは1%満たされていますか?
ジョアンアルメイダ

2
また、フィーチャがまばらである場合、それらはデータセットのごく一部の分類に役立つだけであることに注意する必要があります。つまり、全体的に精度が大幅に変わることはありません。あなたのデータセットの特徴は何なのかわからないので、これは一種の推測です。
ジョアンアルメイダ

@JoãoAlmeidaそれらはそれほどまばらではありません。約5%満たされています。問題は、予測が異なる2つのモデルからの予測の違いを見るときです。予測が異なる場合、スパースフィーチャを含むモデルのパフォーマンスが向上する傾向があるため、それらを密なフィーチャと組み合わせた場合にもAUCのブーストが見られると予想しました。ブーストを取得していますが、非常に低いようです。
サガルWaghmode

うーん...私はあなたのために何も考えていない
ジョアンアルメイダ

私は同じ問題に出会いました。たぶん、単一のモデルに密で疎な機能を置くのは良い選択ではありません。広くて深いモデルを試すことができます。スパースフィーチャの場合はワイド、デンスフィーチャの場合はディープです。この方法を試した場合は、答えを教えてください。
建業智

回答:


6

これは、主成分分析の仕事のようです。ScikitにはPCAがうまく実装されており、何度も助けてくれました。

PCAは、特定の方法で、機能を組み合わせます。コンポーネントの数を制限することにより、ノイズのないデータでモデルを取得します(最良の場合)。モデルはデータと同じくらい優れているからです。

以下の簡単な例を検討してください。

from sklearn.pipeline import Pipeline
pipe_rf = Pipeline([('pca', PCA(n_components=80)),
                    ('clf',RandomForestClassifier(n_estimators=100))])
pipe_rf.fit(X_train_s,y_train_s)

pred = pipe_rf.predict(X_test)

なぜ80を選んだのですか?累積分散をプロットすると、次のようになりました。これは、〜80個のコンポーネントで、ほぼすべての分散に達することを示しています。 累積分散

だから私はそれを試してみて、あなたのモデルでそれを使用すると言うでしょう。役立つはずです。


4

機能を組み合わせる最良の方法は、アンサンブルメソッドを使用することです。基本的に、バギング、ブースティング、スタッキングの3つの方法があります。特徴選択で強化されたAdabbostを使用できます(これではスパースとデンスの両方の特徴を考慮します)またはスタッキングベース(ランダムな特徴-ランダムな部分空間)サブセットとランダムな特徴(特徴セット全体をカバーするまでベース学習者のトレーニングを続ける)次のステップは、トレーニングセットをテストしてメタデータを生成することです。このメタデータを使用して、メタ分類子をトレーニングします。メタ分類子は、どの機能がより重要で、どのような関係を利用すべきかを判断します


関連するドキュメントを共有してもらえますか?正確にあなたが意図したものを取得しませんでしたか?
サガルWaghmode

stackingCについて読んだ「スタッキング技術の問題、1999」のステーキングに関する記事を読むことができます。ベクトル全体(たとえば、Hogの場合は1x36)を1つの機能として話しているが、その中の次元については話していません。どの基本学習者でどの機能が使用されたかを追跡する必要があります。オーバーフィッティングの問題に注意してください
バシャールハダッド

データベース、クラスの数、サンプルの数、コード、試したこと、気づいたこと、データベースの詳細、データの不均衡の問題、ノイズの多いサンプルなどについて詳しく説明します。これらの詳細はすべて重要であり、最適な方法を選択するのに役立ちます。これでよければ詳細を教えてください。私はもっと良い方法で助けられるかもしれません
バシャールハダッド

1

変数グループは多重共線的であるか、疎と密の間の変換が間違っている可能性があります。投票分類/アンサンブル分類の使用について考えましたか?http://scikit-learn.org/stable/modules/ensemble.html そうすれば、上記の両方の問題に対処できます。


私はすでにアンサンブル技術と投票分類器を試しました。まだ運がありません。
サガルWaghmode

それでは、2つのデータセットからの予測に多くの重複が見られますか?確かに新しい情報はないのでしょうか?つまり、データは同じ物語を語っています。
ディエゴ

はい、私はまさにそれをしました。予測が完全に異なるわけではありませんが、予測が異なるサンプルの数は非常に多く(約15〜20%)データです。これらのサンプルでは、​​疎な特徴を持つモデルは、密な特徴を持つモデルよりもパフォーマンスが良くなります。私のポイントは、まばらな機能のパフォーマンスが向上した場合、これまで試したどのモデルでも重要な機能として提供されないことです。
サガルWaghmode

どの予測アルゴリズムを使用していますか?
ディエゴ

私はかなりの数のアルゴリズムを試し、グラデーションブーストモデルに落ち着きました。また、私の問題のためにランダムフォレストを非常に多く使用しています。
サガルWaghmode

1

上記のいくつかの提案に加えて、2段階のモデリングアプローチを使用することをお勧めします。

  1. 最初にスパース機能を使用して、最適なモデルを開発します。
  2. そのモデルから予測確率を計算します。
  3. その確率推定値を(入力フィーチャとして)2番目のモデルに入力します。これには、密なフィーチャが組み込まれます。つまり、2番目のモデルを構築するために、すべての密な特徴確率推定を使用します。
  4. 最終的な分類は、2番目のモデルに基づきます。

0

スパースフィーチャでのみPCAを試行し、PCA出力をデンスフィーチャと組み合わせます。

したがって、(元の)フィーチャの密集したセット+(元々疎だった)フィーチャの密集したセットが得られます。

質問の+1。結果を更新してください。


うわー、これは実際にAUCをダウンさせました:(確かに、意味、機能の重要性とすべてを確認する必要があります。しかし、私の哲学は、約2.3kのスパース機能のうち、0.97分散比を説明する1k機能を使用しました、この情報の損失はAUCをもたらした可能性があります
Sagar Waghmode

面白い。共有してくれてありがとう。データセットは非常に似ています(1k〜2kのスパース機能)。好奇心から、いくつの主要なコンポーネントを生成しましたか?その数が低すぎる場合、これはAUCがダウンした理由を説明するかもしれません。
タガー

すでに述べたように、0.97の分散を説明する1kの主成分を生成しました。
サガルWaghmode 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.