web-dev-qa-db-ja.com

ロジスティック回帰モデルの機能の重要性を見つける方法は?

ロジスティック回帰アルゴリズムによってトレーニングされたバイナリ予測モデルがあります。陽性または陰性のクラスの決定にとって、どの特徴(予測子)がより重要かを知りたい。 scikit-learnパッケージに由来するcoef_パラメータがあることは知っていますが、それが重要性に十分であるかどうかはわかりません。もう1つは、coef_値を否定クラスと肯定クラスの重要性の観点から評価する方法です。標準化された回帰係数についても読みましたが、それが何であるかわかりません。

腫瘍のサイズ、腫瘍の重量などの機能があり、悪性または非悪性のようなテストケースの決定を下すとしましょう。悪性の予測ではなく、悪性の予測にとってより重要な機能を知りたいです。それはある意味理にかなっていますか?

32
mgokhanbakal

線形分類モデル(ロジスティックはそれらの1つ)で特定のパラメーターの「影響」を感じるための最も簡単なオプションの1つは、その係数の大きさとデータ内の対応するパラメーターの標準偏差を考慮することです。 。

この例を考えてみましょう:

import numpy as np    
from sklearn.linear_model import LogisticRegression

x1 = np.random.randn(100)
x2 = 4*np.random.randn(100)
x3 = 0.5*np.random.randn(100)
y = (3 + x1 + x2 + x3 + 0.2*np.random.randn()) > 0
X = np.column_stack([x1, x2, x3])

m = LogisticRegression()
m.fit(X, y)

# The estimated coefficients will all be around 1:
print(m.coef_)

# Those values, however, will show that the second parameter
# is more influential
print(np.std(X, 0)*m.coef_)

同様の結果を得る別の方法は、標準化されたパラメーターに適合するモデルの係数を調べることです。

m.fit(X / np.std(X, 0), y)
print(m.coef_)

これは最も基本的なアプローチであり、特徴の重要性やパラメーターの影響を見つけるためのその他の手法がいくつか存在することに注意してください(p値、bootstrapスコア、さまざまな「識別インデックス」など)。

https://stats.stackexchange.com/ でさらに興味深い回答が得られると確信しています。

42
KT.