バイナリ分類にロジスティック回帰を使用しています。私は大きなデータセットを持っています(非常に不均衡になる傾向があります:19:1)。したがって、scikit-learnを使用してLogisticRegression()
、ラベル付けされたデータの80%をトレーニングしてから、残りの20%で検証しました(データが非常にアンバランスだったため、ROCの下の領域と精度の再現率を調べました。また、class_weight='auto'
)。
主な質問は次のとおりです:(を使用してpredict_proba()
)ラベルのない入力ベクトルの予測を生成し始めたら、どの機能がその特定の入力の予測に最も貢献したかをどのようにして知ることができますか?これは、ラベル付けされたトレーニングデータ(たとえば、係数の大きさ)に基づいてモデルに対して一般的に決定される「最も重要な機能」とは異なる可能性があると思います。
私は非常に基本的な考えを持っていました:
入力フィーチャ値とコンポーネント係数の絶対値のコンポーネントごとの積をとります。最も貢献する機能は、最大値を持つエントリに対応する機能です。
(1)を実行しますが、すべてにZスコアを使用します(トレーニングおよび入力機能)。一部の機能範囲が他の機能範囲と大きく異なる可能性があり、製品を購入しただけではこれをキャプチャできない可能性があることを心配したため、これは重要だと思いました。しかし、係数は範囲を反映するはずなので、おそらくこれは問題ではありません。
私はこれが初めてなので、どんな考えでも大歓迎です。ロジスティック回帰に固有の事柄(つまり、線形関数ではなくシグモイド)と、scikit-learnで特定のアクション(たとえば、変換)を実装する方法への参照は、実際に実際のデータでプロジェクトを行っているので非常にありがたいです。